OpenRTB v2.3.1 types for Go programming language (golang)
go get -u "github.com/prebid/openrtb"
import "github.com/prebid/openrtb"
- Forked on April 23, 2017 from mxmCherry
- Updated Device, Geo to OpenRTB 2.5
Provide base for OpenRTB-related projects, focusing on:
- Extensive documentation
- Strict specification (using unsigned numeric types for values, that are not meant to be signed; don't overuse pointers to avoid nil dereferencing etc.)
- Efficient memory usage (using numeric types large enough just to hold intended values etc.)
- UpperCamelCase
- Capitalized abbreviations (e.g., AT, COPPA, PMP etc.)
- Capitalized ID keys
- Key types should be chosen according to OpenRTB v2.5 specification (attribute types)
- Numeric types:
- architecture-independent, e.g.,
int32
instead ofint
- signed integral types should be used only when absolutely needed (value may contain negative numbers), unsigned integral types are preferred
- but avoid
uint8
as it has problems with JSON serialization - enumerations should be represented with minimal integral types, e.g.,
int8
for enumerations with <= 256 variants - for floating-point attributes only
float64
type should be used
- architecture-independent, e.g.,
- Godoc: documenting Go code
- Each entity (type or struct key) should be documented
- Comments for entities should be copy-pasted "as-is" from OpenRTB specification
- Each RTB type should be kept in its own file, named after type
- File names are in underscore_case, e.g.,
type BidRequest
should be declared inbid_request.go
- go fmt your code