Merge pull request #37 from mxmCherry/feature/simplify-integral-types

Feature/simplify integral types
This commit is contained in:
mxmCherry
2018-12-30 12:56:17 +02:00
committed by GitHub
29 changed files with 83 additions and 86 deletions
+2 -3
View File
@@ -48,14 +48,13 @@ Master always contains latest code, so better use some package manager to vendor
- Key types should be chosen according to OpenRTB specification (attribute types)
- Numeric types:
- `int8` - short enums (with values <= 127), boolean-like attributes (like `BidRequest.test`)
- `int64` - time, duration, length, unbound enums (like `BidRequest.at` - exchange-specific auctions types are > 500)
- `uint64` - width, height, bitrate etc. (unbound positive numbers)
- `int64` - every other integral type
- `float64` - coordinates, prices etc.
- Enums:
- all enums, described in section 5, must be typed with section name singularized (e.g., "5.2 Banner Ad Types" -> `type BannerAdType int8`)
- all typed enums must have constants for each element, prefixed with type name (e.g., "5.2 Banner Ad Types - XHTML Text Ad (usually mobile)" -> `const BannerAdTypeXHTMLTextAd BannerAdType = 1`)
- never use `iota` for enum constants
- section "5.1 Content Categories" should remain untyped and have no constants
- OpenRTB (2.x) section "5.1 Content Categories" should remain untyped and have no constants
## Pointers/omitempty
Pointer | Omitempty | When to use | Example
+3 -3
View File
@@ -134,7 +134,7 @@ type AudioPlacement struct {
// integer
// Definition:
// Minimum bit rate of the creative in Kbps.
MinBitR uint64 `json:"minbitr,omitempty"`
MinBitR int64 `json:"minbitr,omitempty"`
// Attribute:
// maxbitr
@@ -142,7 +142,7 @@ type AudioPlacement struct {
// integer
// Definition:
// Maximum bit rate of the creative in Kbps.
MaxBitR uint64 `json:"maxbitr,omitempty"`
MaxBitR int64 `json:"maxbitr,omitempty"`
// Attribute:
// delivery
@@ -160,7 +160,7 @@ type AudioPlacement struct {
// integer
// Definition:
// The maximum number of ads that can be played in an ad pod.
MaxSeq int `json:"maxseq,omitempty"`
MaxSeq int64 `json:"maxseq,omitempty"`
// Attribute:
// comp
+1 -1
View File
@@ -20,7 +20,7 @@ type Content struct {
// integer
// Definition:
// Episode number.
Episode uint16 `json:"episode,omitempty"`
Episode int64 `json:"episode,omitempty"`
// Attribute:
// title
+1 -1
View File
@@ -21,7 +21,7 @@ type DataAsset struct {
// Definition:
// The length of the value contents.
// This length should conform to recommendations provided in List: Native Data Asset Types
Len int `json:"len,omitempty"`
Len int64 `json:"len,omitempty"`
// Attribute:
// type
+1 -1
View File
@@ -21,7 +21,7 @@ type DataAssetFormat struct {
// integer
// Definition:
// The maximum allowed length of the data value.
Len int `json:"len,omitempty"`
Len int64 `json:"len,omitempty"`
// Attribute:
// ext
+3 -3
View File
@@ -95,7 +95,7 @@ type Device struct {
// integer
// Definition:
// Physical height of the screen in pixels.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// w
@@ -103,7 +103,7 @@ type Device struct {
// integer
// Definition:
// Physical width of the screen in pixels.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// ppi
@@ -111,7 +111,7 @@ type Device struct {
// integer
// Definition:
// Screen size as pixels per linear inch.
PPI uint16 `json:"ppi,omitempty"`
PPI int64 `json:"ppi,omitempty"`
// Attribute:
// pxratio
+6 -6
View File
@@ -40,7 +40,7 @@ type Display struct {
// Definition:
// Absolute width of the creative in device independent pixels (DIPS), typically for non-native ads.
// Note that mixing absolute and relative sizes is not recommended.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -49,7 +49,7 @@ type Display struct {
// Definition:
// Absolute height of the creative in device independent pixels (DIPS), typically for non-native ads.
// Note that mixing absolute and relative sizes is not recommended.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// wratio
@@ -59,8 +59,8 @@ type Display struct {
// Relative width of the creative when expressing size as a ratio, typically for non-native ads.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
WRatio uint8 `json:"wratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
WRatio int8 `json:"wratio,omitempty"`
// Attribute:
// hratio
@@ -70,8 +70,8 @@ type Display struct {
// Relative height of the creative when expressing size as a ratio, typically for non-native ads.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
HRatio uint8 `json:"hratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
HRatio int8 `json:"hratio,omitempty"`
// Attribute:
// priv
+6 -6
View File
@@ -11,7 +11,7 @@ type DisplayFormat struct {
// Definition:
// Absolute width of the creative in units specified by DisplayPlacement.unit.
// Note that mixing absolute and relative sizes is not recommended.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -20,7 +20,7 @@ type DisplayFormat struct {
// Definition:
// Absolute height of the creative in units specified by DisplayPlacement.unit.
// Note that mixing absolute and relative sizes is not recommended.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// wratio
@@ -30,8 +30,8 @@ type DisplayFormat struct {
// Relative width of the creative when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
WRatio uint8 `json:"wratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
WRatio int8 `json:"wratio,omitempty"`
// Attribute:
// hratio
@@ -41,8 +41,8 @@ type DisplayFormat struct {
// Relative height of the creative when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
HRatio uint8 `json:"hratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
HRatio int8 `json:"hratio,omitempty"`
// Attribute:
// expdir
+2 -2
View File
@@ -110,7 +110,7 @@ type DisplayPlacement struct {
// Definition:
// Width of the placement in units specified by unit.
// Note that this size applies to the placement itself; permitted creative sizes are specified elsewhere (e.g., DisplayFormat, ImageAssetFormat, etc.).
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -119,7 +119,7 @@ type DisplayPlacement struct {
// Definition:
// Width of the placement in units specified by unit.
// Note that this size applies to the placement itself; permitted creative sizes are specified elsewhere (e.g., DisplayFormat, ImageAssetFormat, etc.).
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// unit
+1 -1
View File
@@ -38,7 +38,7 @@ type DOOH struct {
// integer
// Definition:
// Minimum DPI for text-based creative elements to display clearly.
DPI uint16 `json:"dpi,omitempty"`
DPI int64 `json:"dpi,omitempty"`
// Attribute:
// ext
+1 -3
View File
@@ -113,9 +113,7 @@ type Geo struct {
// integer
// Definition:
// Local time as the number +/- of minutes from UTC.
// Dev note:
// This field is kept as `int` to follow type choice for timezone offset in std. `time` package.
UTCOffset int `json:"utcoffset,omitempty"`
UTCOffset int64 `json:"utcoffset,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -19,7 +19,7 @@ type ImageAsset struct {
// integer; recommended
// Definition:
// Width of the image asset in device independent pixels (DIPS).
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -27,7 +27,7 @@ type ImageAsset struct {
// integer; recommended
// Definition:
// Height of the image asset in device independent pixels (DIPS).
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// type
+8 -8
View File
@@ -30,7 +30,7 @@ type ImageAssetFormat struct {
// Definition:
// Absolute width of the image asset in device independent pixels (DIPS).
// Note that mixing absolute and relative sizes is not recommended.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -39,7 +39,7 @@ type ImageAssetFormat struct {
// Definition:
// Absolute height of the image asset in device independent pixels (DIPS).
// Note that mixing absolute and relative sizes is not recommended.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// wmin
@@ -48,7 +48,7 @@ type ImageAssetFormat struct {
// Definition:
// The minimum requested absolute width of the image in device independent pixels (DIPS).
// This option should be used for any scaling of images by the client.
WMin uint64 `json:"wmin,omitempty"`
WMin int64 `json:"wmin,omitempty"`
// Attribute:
// hmin
@@ -57,7 +57,7 @@ type ImageAssetFormat struct {
// Definition:
// The minimum requested absolute height of the image in device independent pixels (DIPS).
// This option should be used for any scaling of images by the client.
HMin uint64 `json:"hmin,omitempty"`
HMin int64 `json:"hmin,omitempty"`
// Attribute:
// wratio
@@ -67,8 +67,8 @@ type ImageAssetFormat struct {
// Relative width of the image asset when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
WRatio uint8 `json:"wratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
WRatio int8 `json:"wratio,omitempty"`
// Attribute:
// hratio
@@ -78,8 +78,8 @@ type ImageAssetFormat struct {
// Relative height of the image asset when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
// Dev note:
// This is kept as `uint8` because ratio values are expected to be quite small (like 16:9).
HRatio uint8 `json:"hratio,omitempty"`
// This is kept as `int8` because ratio values are expected to be quite small (like 16:9).
HRatio int8 `json:"hratio,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -18,7 +18,7 @@ type TitleAsset struct {
// integer
// Definition:
// The length of the contents of the text attribute.
Len int `json:"len,omitempty"`
Len int64 `json:"len,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -12,7 +12,7 @@ type TitleAssetFormat struct {
// Definition:
// The maximum allowed length of the title value.
// Recommended lengths are 25, 90, or 140.
Len int `json:"len,omitempty"`
Len int64 `json:"len,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -30,7 +30,7 @@ type User struct {
// integer
// Definition:
// Year of birth as a 4-digit integer.
YOB uint16 `json:"yob,omitempty"`
YOB int64 `json:"yob,omitempty"`
// Attribute:
// gender
+5 -5
View File
@@ -116,7 +116,7 @@ type VideoPlacement struct {
// integer
// Definition:
// Width of the placement in units specified by unit.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -124,7 +124,7 @@ type VideoPlacement struct {
// integer
// Definition:
// Height of the placement in units specified by unit.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// unit
@@ -168,7 +168,7 @@ type VideoPlacement struct {
// integer
// Definition:
// Minimum bit rate of the creative in Kbps.
MinBitR uint64 `json:"minbitr,omitempty"`
MinBitR int64 `json:"minbitr,omitempty"`
// Attribute:
// maxbitr
@@ -176,7 +176,7 @@ type VideoPlacement struct {
// integer
// Definition:
// Maximum bit rate of the creative in Kbps.
MaxBitR uint64 `json:"maxbitr,omitempty"`
MaxBitR int64 `json:"maxbitr,omitempty"`
// Attribute:
// delivery
@@ -194,7 +194,7 @@ type VideoPlacement struct {
// integer
// Definition:
// The maximum number of ads that can be played in an ad pod.
MaxSeq int `json:"maxseq,omitempty"`
MaxSeq int64 `json:"maxseq,omitempty"`
// Attribute:
// linear
+4 -4
View File
@@ -32,7 +32,7 @@ type Image struct {
// integer
// Description:
// Width of the image in pixels.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Field:
// wmin
@@ -45,7 +45,7 @@ type Image struct {
// This option should be used for any rescaling of images by the client.
// Either w or wmin should be transmitted.
// If only w is included, it should be considered an exact requirement.
WMin uint64 `json:"wmin,omitempty"`
WMin int64 `json:"wmin,omitempty"`
// Field:
// h
@@ -55,7 +55,7 @@ type Image struct {
// integer
// Description:
// Height of the image in pixels.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Field:
// hmin
@@ -68,7 +68,7 @@ type Image struct {
// This option should be used for any rescaling of images by the client.
// Either h or hmin should be transmitted.
// If only h is included, it should be considered an exact requirement.
HMin uint64 `json:"hmin,omitempty"`
HMin int64 `json:"hmin,omitempty"`
// Field:
// mimes
+2 -2
View File
@@ -44,7 +44,7 @@ type Image struct {
// Width of the image in pixels.
// Recommended for embedded asset responses.
// Required for assetsurl/dcourlresponses if multiple assets of same type submitted.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Field:
// h
@@ -56,7 +56,7 @@ type Image struct {
// Height of the image in pixels.
// Recommended for embedded asset responses.
// Required for assetsurl/dcourl responses if multiple assets of same type submitted.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Field:
// ext
+4 -4
View File
@@ -63,7 +63,7 @@ type Audio struct {
// If multiple ad impressions are offered in the same bid request,
// the sequence number will allow for the coordinated delivery
// of multiple creatives.
Sequence uint64 `json:"sequence,omitempty"`
Sequence int64 `json:"sequence,omitempty"`
// Attribute:
// battr
@@ -91,7 +91,7 @@ type Audio struct {
// integer
// Description:
// Minimum bit rate in Kbps.
MinBitrate uint64 `json:"minbitrate,omitempty"`
MinBitrate int64 `json:"minbitrate,omitempty"`
// Attribute:
// maxbitrate
@@ -99,7 +99,7 @@ type Audio struct {
// integer
// Description:
// Maximum bit rate in Kbps.
MaxBitrate uint64 `json:"maxbitrate,omitempty"`
MaxBitrate int64 `json:"maxbitrate,omitempty"`
// Attribute:
// delivery
@@ -147,7 +147,7 @@ type Audio struct {
// The maximum number of ads that can be played in an ad pod.
// OpenRTB API Specification Version 2.5 IAB Technology Lab
// www.iab.com/openrtb Page 18
MaxSeq uint64 `json:"maxseq,omitempty"`
MaxSeq int64 `json:"maxseq,omitempty"`
// Attribute:
// feed
+6 -6
View File
@@ -30,7 +30,7 @@ type Banner struct {
// Description:
// Exact width in device independent pixels (DIPS);
// recommended if no format objects are specified.
W *uint64 `json:"w,omitempty"`
W *int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -39,7 +39,7 @@ type Banner struct {
// Description:
// Exact height in device independent pixels (DIPS);
// recommended if no format objects are specified.
H *uint64 `json:"h,omitempty"`
H *int64 `json:"h,omitempty"`
// Attribute:
// wmax
@@ -48,7 +48,7 @@ type Banner struct {
// Description:
// NOTE: Deprecated in favor of the format array.
// Maximum width in device independent pixels (DIPS).
WMax uint64 `json:"wmax,omitempty"`
WMax int64 `json:"wmax,omitempty"`
// Attribute:
// hmax
@@ -57,7 +57,7 @@ type Banner struct {
// Description:
// NOTE: Deprecated in favor of the format array.
// Maximum height in device independent pixels (DIPS).
HMax uint64 `json:"hmax,omitempty"`
HMax int64 `json:"hmax,omitempty"`
// Attribute:
// wmin
@@ -66,7 +66,7 @@ type Banner struct {
// Description:
// NOTE: Deprecated in favor of the format array.
// Minimum width in device independent pixels (DIPS).
WMin uint64 `json:"wmin,omitempty"`
WMin int64 `json:"wmin,omitempty"`
// Attribute:
// hmin
@@ -75,7 +75,7 @@ type Banner struct {
// Description:
// NOTE: Deprecated in favor of the format array.
// Minimum height in device independent pixels (DIPS).
HMin uint64 `json:"hmin,omitempty"`
HMin int64 `json:"hmin,omitempty"`
// Attribute:
// btype
+4 -4
View File
@@ -232,7 +232,7 @@ type Bid struct {
// integer
// Description:
// Width of the creative in device independent pixels (DIPS).
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -240,7 +240,7 @@ type Bid struct {
// integer
// Description:
// Height of the creative in device independent pixels (DIPS).
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// wratio
@@ -249,7 +249,7 @@ type Bid struct {
// Description:
// Relative width of the creative when expressing size as a ratio.
// Required for Flex Ads.
WRatio uint64 `json:"wratio,omitempty"`
WRatio int64 `json:"wratio,omitempty"`
// Attribute:
// hratio
@@ -258,7 +258,7 @@ type Bid struct {
// Description:
// Relative height of the creative when expressing size as a ratio.
// Required for Flex Ads.
HRatio uint64 `json:"hratio,omitempty"`
HRatio int64 `json:"hratio,omitempty"`
// Attribute:
// exp
+1 -1
View File
@@ -24,7 +24,7 @@ type Content struct {
// integer
// Description:
// Episode number.
Episode uint64 `json:"episode,omitempty"`
Episode int64 `json:"episode,omitempty"`
// Attribute:
// title
+3 -3
View File
@@ -123,7 +123,7 @@ type Device struct {
// integer
// Description:
// Physical height of the screen in pixels.
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// w
@@ -131,7 +131,7 @@ type Device struct {
// integer
// Description:
// Physical width of the screen in pixels.
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// ppi
@@ -139,7 +139,7 @@ type Device struct {
// integer
// Description:
// Screen size as pixels per linear inch.
PPI uint64 `json:"ppi,omitempty"`
PPI int64 `json:"ppi,omitempty"`
// Attribute:
// pxratio
+5 -5
View File
@@ -15,7 +15,7 @@ type Format struct {
// integer
// Description:
// Width in device independent pixels (DIPS).
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -23,7 +23,7 @@ type Format struct {
// integer
// Description:
// Height in device independent pixels (DIPS).
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// wratio
@@ -31,7 +31,7 @@ type Format struct {
// integer
// Description:
// Relative width when expressing size as a ratio
WRatio uint64 `json:"wratio,omitempty"`
WRatio int64 `json:"wratio,omitempty"`
// Attribute:
// hratio
@@ -39,7 +39,7 @@ type Format struct {
// Integer
// Description:
// Relative height when expressing size as a ratio.
HRatio uint64 `json:"hratio,omitempty"`
HRatio int64 `json:"hratio,omitempty"`
// Attribute:
// wmin
@@ -48,7 +48,7 @@ type Format struct {
// Description:
// The minimum width in device independent pixels (DIPS) at
// which the ad will be displayed the size is expressed as a ratio.
WMin uint64 `json:"wmin,omitempty"`
WMin int64 `json:"wmin,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -48,7 +48,7 @@ type Geo struct {
// services (i.e., type = 1). Note that this is the accuracy as
// reported from the device. Consult OS specific documentation
// (e.g., Android, iOS) for exact interpretation.
Accuracy uint64 `json:"accuracy,omitempty"`
Accuracy int64 `json:"accuracy,omitempty"`
// Attribute:
// lastfix
+2 -2
View File
@@ -5,7 +5,7 @@ func Int8Ptr(n int8) *int8 {
return &n
}
// Uint64Ptr returns pointer to passed argument.
func Uint64Ptr(n uint64) *uint64 {
// Int64Ptr returns pointer to passed argument.
func Int64Ptr(n int64) *int64 {
return &n
}
+4 -4
View File
@@ -66,7 +66,7 @@ type Video struct {
// integer; recommended
// Description:
// Width of the video player in device independent pixels (DIPS).
W uint64 `json:"w,omitempty"`
W int64 `json:"w,omitempty"`
// Attribute:
// h
@@ -74,7 +74,7 @@ type Video struct {
// integer; recommended
// Description:
// Height of the video player in device independent pixels (DIPS).
H uint64 `json:"h,omitempty"`
H int64 `json:"h,omitempty"`
// Attribute:
// startdelay
@@ -169,7 +169,7 @@ type Video struct {
// integer
// Description:
// Minimum bit rate in Kbps.
MinBitRate uint64 `json:"minbitrate,omitempty"`
MinBitRate int64 `json:"minbitrate,omitempty"`
// Attribute:
// maxbitrate
@@ -177,7 +177,7 @@ type Video struct {
// integer
// Description:
// Maximum bit rate in Kbps.
MaxBitRate uint64 `json:"maxbitrate,omitempty"`
MaxBitRate int64 `json:"maxbitrate,omitempty"`
// Attribute:
// boxingallowed
+2 -2
View File
@@ -20,7 +20,7 @@ type Item struct {
// integer; default 1
// Definition:
// The number of instances (i.e., “quantity”) of this item being offered (e.g., multiple identical impressions in a digital out-of-home scenario).
Qty int `json:"qty,omitempty"`
Qty int64 `json:"qty,omitempty"`
// Attribute:
// seq
@@ -28,7 +28,7 @@ type Item struct {
// integer
// Definition:
// If multiple items are offered in the same bid request, the sequence number allows for the coordinated delivery.
Seq int `json:"seq,omitempty"`
Seq int64 `json:"seq,omitempty"`
// Attribute:
// flr