/openrtb-proto

OpenRTB protobuf

Primary LanguageMakefileApache License 2.0Apache-2.0

IAB Protobuff Spec for OpenRTB (WIP)

Comments

  • Where the spec dictates one of several fields be populated, the oneof label is used to enforce this.
  • Where the spec recommends that only of several fields be used, the oneof label is used to enforce this.
  • Enumerated fields are defined as integer type so they can be extended. The standard values are defined in an enum, which may be used for validation.

Docs

Docs can be generated by invoking make docs. This uses the protoc-gen-doc tool. Unfortunately, the tool doesn't support objects nested deeper than two levels.

Developing

When iterating on the protobuff definitions, you can run make watch and it will run the doc generator whenever the file is saved. This is useful for checking the validity of the protobuff definitions and also for generating docs (works well with Marked 2).

Dependencies

The Makefile provides targets that depend on the following tools being installed:

  • golang
  • protoc - for generating go and java bindings
  • prototool - for running a linter and for formatting
  • docker - for generating docs

To compile this project on MacOS:

brew install golang
brew install protoc-gen-go
brew install prototool

Makefile Targets

compile Builds the Golang and Java bindings. Useful for making sure the file is valid and for seeing if the generated code makes sense.

fmt Runs the prototools formatter on the protobuff files.

check Runs the prototools linter.

clean Deletes the code generated by the compile target.

docs Generates a README.md in the docs/ subdirectory.

watch Looks for updates to the protofiles and rebuilds the docs.