From c8f0fbc7db8940c9d445b4f52c6c036229dd252e Mon Sep 17 00:00:00 2001 From: Max Cherry Date: Thu, 27 Dec 2018 15:18:20 +0200 Subject: [PATCH] adcom1: use exact types instead of `interface{}` placeholders --- adcom1/ad.go | 14 +++--- adcom1/app.go | 2 +- adcom1/asset.go | 10 ++-- adcom1/asset_format.go | 8 ++-- adcom1/audio.go | 4 +- adcom1/audio_placement.go | 18 ++++---- adcom1/audit.go | 4 +- adcom1/banner.go | 2 +- adcom1/companion.go | 2 +- adcom1/content.go | 12 ++--- adcom1/creative_subtype_av.go | 2 +- adcom1/creative_subtype_display.go | 2 +- adcom1/data.go | 2 +- adcom1/data_asset.go | 2 +- adcom1/data_asset_format.go | 5 +- adcom1/device.go | 8 ++-- adcom1/display.go | 10 ++-- adcom1/display_format.go | 2 +- adcom1/display_placement.go | 20 ++++---- adcom1/distribution_channel.go | 4 +- adcom1/dooh.go | 2 +- adcom1/event.go | 6 +-- adcom1/event_spec.go | 6 +-- adcom1/geo.go | 4 +- adcom1/image_asset.go | 2 +- adcom1/image_asset_format.go | 26 +++++++---- adcom1/native.go | 4 +- adcom1/native_format.go | 2 +- adcom1/placement.go | 6 +-- adcom1/producer.go | 2 +- adcom1/publisher.go | 2 +- adcom1/restrictions.go | 4 +- adcom1/site.go | 2 +- adcom1/user.go | 4 +- adcom1/video.go | 4 +- adcom1/video_placement.go | 74 +++++++++++++++++++----------- 36 files changed, 156 insertions(+), 127 deletions(-) diff --git a/adcom1/ad.go b/adcom1/ad.go index 564503f..ceb9803 100644 --- a/adcom1/ad.go +++ b/adcom1/ad.go @@ -56,7 +56,7 @@ type Ad struct { // Definition: // The taxonomy in use for the cat attribute. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // lang @@ -75,7 +75,7 @@ type Ad struct { // Definition: // Set of attributes describing the creative. // Refer to List: Creative Attributes. - Attr []interface{} `json:"attr,omitempty"` + Attr []CreativeAttribute `json:"attr,omitempty"` // Attribute: // secure @@ -94,7 +94,7 @@ type Ad struct { // Definition: // Media rating per IQG guidelines. // Refer to List: Media Ratings. - MRating interface{} `json:"mrating,omitempty"` + MRating MediaRating `json:"mrating,omitempty"` // Attribute: // init @@ -120,7 +120,7 @@ type Ad struct { // Media Subtype Object that indicates this is a display ad and provides additional detail as such. // Refer to Object: Display. // * Required if no other media subtype object is specified. - Display interface{} `json:"display,omitempty"` + Display *Display `json:"display,omitempty"` // Attribute: // video @@ -130,7 +130,7 @@ type Ad struct { // Media Subtype Object that indicates this is a video ad and provides additional detail as such. // Refer to Object: Video. // * Required if no other media subtype object is specified. - Video interface{} `json:"video,omitempty"` + Video *Video `json:"video,omitempty"` // Attribute: // audio @@ -140,7 +140,7 @@ type Ad struct { // Media Subtype Object that indicates this is an audio ad and provides additional detail as such. // Refer to Object: Audio. // * Required if no other media subtype object is specified. - Audio interface{} `json:"audio,omitempty"` + Audio *Audio `json:"audio,omitempty"` // Attribute: // audit @@ -149,7 +149,7 @@ type Ad struct { // Definition: // An object depicting the audit status of the ad; typically part of a quality/safety review process. // Refer to Object: Audit. - Audit interface{} `json:"audit,omitempty"` + Audit *Audit `json:"audit,omitempty"` // Attribute: // ext diff --git a/adcom1/app.go b/adcom1/app.go index 8026266..e3f4eaa 100644 --- a/adcom1/app.go +++ b/adcom1/app.go @@ -46,7 +46,7 @@ type App struct { // Definition: // The taxonomy in use for the cat, sectcat and pagecat attributes. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // privpolicy diff --git a/adcom1/asset.go b/adcom1/asset.go index 7f2892c..0fa724a 100644 --- a/adcom1/asset.go +++ b/adcom1/asset.go @@ -29,7 +29,7 @@ type Asset struct { // Asset Subtype Object that indicates this is a title asset and provides additional detail as such. // Refer to Object: TitleAsset. // * Required if no other asset subtype object is specified. - Title interface{} `json:"title,omitempty"` + Title *TitleAsset `json:"title,omitempty"` // Attribute: // image @@ -39,7 +39,7 @@ type Asset struct { // Asset Subtype Object that indicates this is an image asset and provides additional detail as such. // Refer to Object: ImageAsset. // * Required if no other asset subtype object is specified. - Image interface{} `json:"image,omitempty"` + Image *ImageAsset `json:"image,omitempty"` // Attribute: // video @@ -49,7 +49,7 @@ type Asset struct { // Asset Subtype Object that indicates this is a video asset and provides additional detail as such. // Refer to Object: VideoAsset. // * Required if no other asset subtype object is specified. - Video interface{} `json:"video,omitempty"` + Video *VideoAsset `json:"video,omitempty"` // Attribute: // data @@ -59,7 +59,7 @@ type Asset struct { // Asset Subtype Object that indicates this is a data asset and provides additional detail as such. // Refer to Object: DataAsset. // * Required if no other asset subtype object is specified. - Data interface{} `json:"data,omitempty"` + Data *DataAsset `json:"data,omitempty"` // Attribute: // link @@ -69,7 +69,7 @@ type Asset struct { // Asset Subtype Object that indicates this is a link asset and provides additional detail as such. // Refer to Object: LinkAsset. // * Required if no other asset subtype object is specified. - Link interface{} `json:"link,omitempty"` + Link *LinkAsset `json:"link,omitempty"` // Attribute: // ext diff --git a/adcom1/asset_format.go b/adcom1/asset_format.go index 32cd73a..db267ea 100644 --- a/adcom1/asset_format.go +++ b/adcom1/asset_format.go @@ -30,7 +30,7 @@ type AssetFormat struct { // Asset Format Subtype Object that indicates this is specifying a title asset and provides additional detail as such. // Refer to Object: TitleAssetFormat. // * Required if no other asset format subtype object is specified. - Title interface{} `json:"title,omitempty"` + Title *TitleAssetFormat `json:"title,omitempty"` // Attribute: // img @@ -40,7 +40,7 @@ type AssetFormat struct { // Asset Format Subtype Object that indicates this is specifying an image asset and provides additional detail as such. // Refer to Object: ImageAssetFormat. // * Required if no other asset format subtype object is specified. - Img interface{} `json:"img,omitempty"` + Img *ImageAssetFormat `json:"img,omitempty"` // Attribute: // video @@ -50,7 +50,7 @@ type AssetFormat struct { // Asset Format Subtype Object, which leverages the VideoPlacement object, that indicates this is specifying a video asset and provides additional detail as such. // Refer to Object: VideoPlacement. // * Required if no other asset format subtype object is specified. - Video interface{} `json:"video,omitempty"` + Video *VideoPlacement `json:"video,omitempty"` // Attribute: // data @@ -60,7 +60,7 @@ type AssetFormat struct { // Asset Format Subtype Object that indicates this is specifying a data asset and provides additional detail as such. // Refer to Object: DataAssetFormat. // * Required if no other asset format subtype object is specified. - Data interface{} `json:"data,omitempty"` + Data *DataAssetFormat `json:"data,omitempty"` // Attribute: // ext diff --git a/adcom1/audio.go b/adcom1/audio.go index 667289f..329525f 100644 --- a/adcom1/audio.go +++ b/adcom1/audio.go @@ -19,7 +19,7 @@ type Audio struct { // Definition: // API required by the ad if applicable. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype @@ -28,7 +28,7 @@ type Audio struct { // Definition: // Subtype of audio creative. // Refer to List: Creative Subtypes - Audio/Video. - CType interface{} `json:"ctype,omitempty"` + CType CreativeSubtypeAV `json:"ctype,omitempty"` // Attribute: // dur diff --git a/adcom1/audio_placement.go b/adcom1/audio_placement.go index 1aba75b..5eb7b8b 100644 --- a/adcom1/audio_placement.go +++ b/adcom1/audio_placement.go @@ -44,7 +44,7 @@ type AudioPlacement struct { // Definition: // Playback method in use for this placement. // Refer to List: Playback Methods. - PlayMethod interface{} `json:"playmethod,omitempty"` + PlayMethod PlaybackMethod `json:"playmethod,omitempty"` // Attribute: // playend @@ -53,7 +53,7 @@ type AudioPlacement struct { // Definition: // The event that causes playback to end for this placement. // Refer to List: Playback Cessation Modes. - PlayEnd interface{} `json:"playend,omitempty"` + PlayEnd PlaybackCessationMode `json:"playend,omitempty"` // Attribute: // feed @@ -62,7 +62,7 @@ type AudioPlacement struct { // Definition: // Type of audio feed of this placement. // Refer to List: Feed Types. - Feed interface{} `json:"feed,omitempty"` + Feed FeedType `json:"feed,omitempty"` // Attribute: // nvol @@ -71,7 +71,7 @@ type AudioPlacement struct { // Definition: // Volume normalization mode of this placement. // Refer to List: Volume Normalization Modes. - NVol interface{} `json:"nvol,omitempty"` + NVol VolumeNormalizationMode `json:"nvol,omitempty"` // Attribute: // mime @@ -90,7 +90,7 @@ type AudioPlacement struct { // List of supported APIs for this placement. // If an API is not explicitly listed, it is assumed to be unsupported. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype @@ -99,7 +99,7 @@ type AudioPlacement struct { // Definition: // Creative subtypes permitted for this placement. // Refer to List: Creative Subtypes - Audio/Video. - CType []interface{} `json:"ctype,omitempty"` + CType []CreativeSubtypeAV `json:"ctype,omitempty"` // Attribute: // mindur @@ -152,7 +152,7 @@ type AudioPlacement struct { // Array of supported creative delivery methods. // If omitted, all can be assumed. // Refer to List: Delivery Methods. - Delivery []interface{} `json:"delivery,omitempty"` + Delivery []DeliveryMethod `json:"delivery,omitempty"` // Attribute: // maxseq @@ -169,7 +169,7 @@ type AudioPlacement struct { // Definition: // Array of objects indicating that companion ads are available and providing the specifications thereof. // Refer to Object: Companion. - Comp []interface{} `json:"comp,omitempty"` + Comp []Companion `json:"comp,omitempty"` // Attribute: // comptype @@ -178,7 +178,7 @@ type AudioPlacement struct { // Definition: // Supported companion ad types; recommended if companion ads are specified in comp. // Refer to List: Companion Types. - CompType []interface{} `json:"comptype,omitempty"` + CompType []CompanionType `json:"comptype,omitempty"` // Attribute: // ext diff --git a/adcom1/audit.go b/adcom1/audit.go index 373740c..4896561 100644 --- a/adcom1/audit.go +++ b/adcom1/audit.go @@ -12,7 +12,7 @@ type Audit struct { // Definition: // The audit status of the ad. // Refer to List: Audit Status Codes. - Status interface{} `json:"status,omitempty"` + Status AuditStatus `json:"status,omitempty"` // Attribute: // feedback @@ -45,7 +45,7 @@ type Audit struct { // Definition: // Correction object wherein the auditor can specify changes to attributes of the Ad object or its children they believe to be proper. // For example, if the original Ad indicated a category of “IAB3”, but the auditor deems the correct category to be “IAB13”, then corr could include a sparse Ad object including just the cat array indicating “IAB13”. - Corr interface{} `json:"corr,omitempty"` + Corr *Ad `json:"corr,omitempty"` // TODO: probably, this won't work due to "omitempty" stuff. Probably, will need an all-pointer Ad equivalent. // Attribute: // ext diff --git a/adcom1/banner.go b/adcom1/banner.go index ac638c0..d527680 100644 --- a/adcom1/banner.go +++ b/adcom1/banner.go @@ -20,7 +20,7 @@ type Banner struct { // Definition: // Destination link if the image is activated (e.g., clicked); not applicable in some contexts (e.g., DOOH) and its inclusion does not guarantee it will be supported. // Refer to Object: LinkAsset. - Link interface{} `json:"link,omitempty"` + Link *LinkAsset `json:"link,omitempty"` // Attribute: // ext diff --git a/adcom1/companion.go b/adcom1/companion.go index d73a159..035d9e9 100644 --- a/adcom1/companion.go +++ b/adcom1/companion.go @@ -29,7 +29,7 @@ type Companion struct { // Definition: // Display specification object representing the companion ad. // Refer to Object: DisplayPlacement. - Display interface{} `json:"display,omitempty"` + Display *DisplayPlacement `json:"display,omitempty"` // Attribute: // ext diff --git a/adcom1/content.go b/adcom1/content.go index 389d5e9..00cadac 100644 --- a/adcom1/content.go +++ b/adcom1/content.go @@ -105,7 +105,7 @@ type Content struct { // Definition: // The taxonomy in use for the cat attribute. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // prodq @@ -114,7 +114,7 @@ type Content struct { // Definition: // Production quality. // Refer to List: Production Qualities. - ProdQ interface{} `json:"prodq,omitempty"` + ProdQ ProductionQuality `json:"prodq,omitempty"` // Attribute: // context @@ -123,7 +123,7 @@ type Content struct { // Definition: // Type of content (game, video, text, etc.). // Refer to List: Content Contexts. - Context interface{} `json:"context,omitempty"` + Context ContentContext `json:"context,omitempty"` // Attribute: // rating @@ -148,7 +148,7 @@ type Content struct { // Definition: // Media rating per IQG guidelines. // Refer to List: Media Ratings. - MRating interface{} `json:"mrating,omitempty"` + MRating MediaRating `json:"mrating,omitempty"` // Attribute: // keywords @@ -205,7 +205,7 @@ type Content struct { // Definition: // Details about the content producer. // Refer to Object: Producer. - Producer interface{} `json:"producer,omitempty"` + Producer *Producer `json:"producer,omitempty"` // Attribute: // data @@ -215,7 +215,7 @@ type Content struct { // Additional user data. // Each Data object represents a different data source. // Refer to Object: Data. - Data []interface{} `json:"data,omitempty"` + Data []Data `json:"data,omitempty"` // Attribute: // ext diff --git a/adcom1/creative_subtype_av.go b/adcom1/creative_subtype_av.go index 52fef3e..47bd226 100644 --- a/adcom1/creative_subtype_av.go +++ b/adcom1/creative_subtype_av.go @@ -1,7 +1,7 @@ package adcom // CreativeSubtypeAV represents subtypes of audio and video ad creatives. -type CreativeSubtypeAV int8 +type CreativeSubtypeAV int8 // TODO: rename to smth like AudioVideoCreativeSubtype? (sounds more natural) // Subtypes of audio and video ad creatives. const ( diff --git a/adcom1/creative_subtype_display.go b/adcom1/creative_subtype_display.go index 7697101..97664ef 100644 --- a/adcom1/creative_subtype_display.go +++ b/adcom1/creative_subtype_display.go @@ -1,7 +1,7 @@ package adcom // CreativeSubtypeDisplay represents subtypes of display ad creatives. -type CreativeSubtypeDisplay int8 +type CreativeSubtypeDisplay int8 // TODO: rename to smth like DisplayCreativeSubtype? (sounds more natural) // Subtypes of display ad creatives. const ( diff --git a/adcom1/data.go b/adcom1/data.go index f918cae..0023c76 100644 --- a/adcom1/data.go +++ b/adcom1/data.go @@ -29,7 +29,7 @@ type Data struct { // Definition: // Array of Segment objects that contain the actual data values. // Refer to Object: Segment. - Segment []interface{} `json:"segment,omitempty"` + Segment []Segment `json:"segment,omitempty"` // Attribute: // ext diff --git a/adcom1/data_asset.go b/adcom1/data_asset.go index f512e70..104bed4 100644 --- a/adcom1/data_asset.go +++ b/adcom1/data_asset.go @@ -30,7 +30,7 @@ type DataAsset struct { // Definition: // The type of data represented by this asset. // Refer to List: Native Data Asset Types. - Type interface{} `json:"type,omitempty"` + Type NativeDataAssetType `json:"type,omitempty"` // Attribute: // ext diff --git a/adcom1/data_asset_format.go b/adcom1/data_asset_format.go index 6962f32..89a8875 100644 --- a/adcom1/data_asset_format.go +++ b/adcom1/data_asset_format.go @@ -11,8 +11,9 @@ type DataAssetFormat struct { // Type: // integer; required // Definition: - // The type of data asset supported. Refer to List: Native Data Asset Types. - Type interface{} `json:"type,omitempty"` + // The type of data asset supported. + // Refer to List: Native Data Asset Types. + Type NativeDataAssetType `json:"type,omitempty"` // Attribute: // len diff --git a/adcom1/device.go b/adcom1/device.go index 8ba9290..e9d1df2 100644 --- a/adcom1/device.go +++ b/adcom1/device.go @@ -13,7 +13,7 @@ type Device struct { // Definition: // The general type of device. // Refer to List: Device Types. - Type interface{} `json:"type,omitempty"` + Type DeviceType `json:"type,omitempty"` // Attribute: // ua @@ -71,7 +71,7 @@ type Device struct { // Definition: // Device operating system. // Refer to List: Operating Systems. - OS interface{} `json:"os,omitempty"` + OS OperatingSystem `json:"os,omitempty"` // Attribute: // osv @@ -204,7 +204,7 @@ type Device struct { // Definition: // Network connection type. // Refer to List: Connection Types. - ConType interface{} `json:"contype,omitempty"` + ConType ConnectionType `json:"contype,omitempty"` // Attribute: // geofetch @@ -221,7 +221,7 @@ type Device struct { // Definition: // Location of the device (i.e., typically the user's current location). // Refer to Object: Geo. - Geo interface{} `json:"geo,omitempty"` + Geo *Geo `json:"geo,omitempty"` // Attribute: // ext diff --git a/adcom1/display.go b/adcom1/display.go index e79f729..53943e7 100644 --- a/adcom1/display.go +++ b/adcom1/display.go @@ -22,7 +22,7 @@ type Display struct { // Definition: // API required by the ad if applicable. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype @@ -31,7 +31,7 @@ type Display struct { // Definition: // Subtype of display creative. // Refer to List: Creative Subtypes - Display. - CType interface{} `json:"ctype,omitempty"` + CType CreativeSubtypeDisplay `json:"ctype,omitempty"` // Attribute: // w @@ -103,7 +103,7 @@ type Display struct { // Definition: // Structured banner image object, recommended for simple banner creatives. // Refer to Object: Banner. - Banner interface{} `json:"banner,omitempty"` + Banner *Banner `json:"banner,omitempty"` // Attribute: // native @@ -112,7 +112,7 @@ type Display struct { // Definition: // Structured native object, recommended for native ads. // Refer to Object: Native. - Native interface{} `json:"native,omitempty"` + Native *Native `json:"native,omitempty"` // Attribute: // event @@ -121,7 +121,7 @@ type Display struct { // Definition: // Array of events that the advertiser or buying platform wants to track. // Refer to Object: Event. - Event []interface{} `json:"event,omitempty"` + Event []Event `json:"event,omitempty"` // Attribute: // ext diff --git a/adcom1/display_format.go b/adcom1/display_format.go index a8073ce..aeba591 100644 --- a/adcom1/display_format.go +++ b/adcom1/display_format.go @@ -47,7 +47,7 @@ type DisplayFormat struct { // Definition: // Directions in which the creative is permitted to expand. // Refer to List: Expandable Directions. - ExpDir []interface{} `json:"expdir,omitempty"` + ExpDir []ExpandableDirection `json:"expdir,omitempty"` // Attribute: // ext diff --git a/adcom1/display_placement.go b/adcom1/display_placement.go index a379bbe..b63c399 100644 --- a/adcom1/display_placement.go +++ b/adcom1/display_placement.go @@ -12,7 +12,7 @@ type DisplayPlacement struct { // Definition: // Placement position on screen. // Refer to List: Placement Positions. - Pos interface{} `json:"pos,omitempty"` + Pos PlacementPosition `json:"pos,omitempty"` // Attribute: // instl @@ -47,7 +47,7 @@ type DisplayPlacement struct { // Definition: // Indicates the click type of this placement. // Refer to List: Click Types. - ClkType interface{} `json:"clktype,omitempty"` + ClkType ClickType `json:"clktype,omitempty"` // Attribute: // ampren @@ -64,7 +64,7 @@ type DisplayPlacement struct { // Definition: // The display placement type. // Refer to List: Display Placement Types. - PType interface{} `json:"ptype,omitempty"` + PType DisplayPlacementType `json:"ptype,omitempty"` // Attribute: // context @@ -73,7 +73,7 @@ type DisplayPlacement struct { // Definition: // The context of the placement. // Refer to List: Display Context Types. - Context interface{} `json:"context,omitempty"` + Context DisplayContextType `json:"context,omitempty"` // Attribute: // mime @@ -92,7 +92,7 @@ type DisplayPlacement struct { // List of supported APIs. // If an API is not explicitly listed, it is assumed to be unsupported. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype @@ -101,7 +101,7 @@ type DisplayPlacement struct { // Definition: // Creative subtypes permitted. // Refer to List: Creative Subtypes - Display. - CType []interface{} `json:"ctype,omitempty"` + CType []CreativeSubtypeDisplay `json:"ctype,omitempty"` // Attribute: // w @@ -128,7 +128,7 @@ type DisplayPlacement struct { // Definition: // Unit of size used for placement size (i.e., w and h attributes). // Refer to List: Size Units. - Unit interface{} `json:"unit,omitempty"` + Unit SizeUnit `json:"unit,omitempty"` // Attribute: // priv @@ -145,7 +145,7 @@ type DisplayPlacement struct { // Definition: // Array of objects that govern the attributes (e.g., sizes) of a banner display placement. // Refer to Object: DisplayFormat. - DisplayFmt []interface{} `json:"displayfmt,omitempty"` + DisplayFmt []DisplayFormat `json:"displayfmt,omitempty"` // Attribute: // nativefmt @@ -154,7 +154,7 @@ type DisplayPlacement struct { // Definition: // This object specified the required and permitted assets and attributes of a native display placement. // Refer to Object: NativeFormat. - NativeFmt interface{} `json:"nativefmt,omitempty"` + NativeFmt *NativeFormat `json:"nativefmt,omitempty"` // Attribute: // event @@ -163,7 +163,7 @@ type DisplayPlacement struct { // Definition: // Array of supported ad tracking events. // Refer to Object: EventSpec. - Event []interface{} `json:"event,omitempty"` + Event []EventSpec `json:"event,omitempty"` // Attribute: // ext diff --git a/adcom1/distribution_channel.go b/adcom1/distribution_channel.go index 268125b..b5add15 100644 --- a/adcom1/distribution_channel.go +++ b/adcom1/distribution_channel.go @@ -30,7 +30,7 @@ type DistributionChannel struct { // Definition: // Details about the publisher of the distribution channel. // Refer to Object: Publisher. - Pub interface{} `json:"pub,omitempty"` + Pub *Publisher `json:"pub,omitempty"` // Attribute: // content @@ -39,5 +39,5 @@ type DistributionChannel struct { // Definition: // Details about the content within the distribution channel. // Refer to Object: Content. - Content interface{} `json:"content,omitempty"` + Content *Content `json:"content,omitempty"` } diff --git a/adcom1/dooh.go b/adcom1/dooh.go index 5396efa..0086e56 100644 --- a/adcom1/dooh.go +++ b/adcom1/dooh.go @@ -14,7 +14,7 @@ type DOOH struct { // Definition: // The type of out-of-home venue. // Refer to List: DOOH Venue TypesList: DOOH Venue Types. - Venue interface{} `json:"venue,omitempty"` + Venue DOOHVenueType `json:"venue,omitempty"` // Attribute: // fixed diff --git a/adcom1/event.go b/adcom1/event.go index a2b3afd..56fe125 100644 --- a/adcom1/event.go +++ b/adcom1/event.go @@ -11,7 +11,7 @@ type Event struct { // Definition: // Type of event to track. // Refer to List: Event Types. - Type interface{} `json:"type"` + Type EventType `json:"type"` // Attribute: // method @@ -20,7 +20,7 @@ type Event struct { // Definition: // Method of tracking requested. // Refer to List: Event Tracking Methods. - Method interface{} `json:"method"` + Method EventTrackingMethod `json:"method"` // Attribute: // api @@ -29,7 +29,7 @@ type Event struct { // Definition: // The APIs being used by the tracker; only relevant when the tracking method is JavaScript. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // url diff --git a/adcom1/event_spec.go b/adcom1/event_spec.go index f4336fa..c5ceda5 100644 --- a/adcom1/event_spec.go +++ b/adcom1/event_spec.go @@ -12,7 +12,7 @@ type EventSpec struct { // Definition: // Type of supported ad tracking event. // Refer to List: Event Types. - Type interface{} `json:"type,omitempty"` + Type EventType `json:"type,omitempty"` // Attribute: // method @@ -21,7 +21,7 @@ type EventSpec struct { // Definition: // Array of supported event tracking methods for this event type. // Refer to List: Event Tracking Methods. - Method []interface{} `json:"method,omitempty"` + Method []EventTrackingMethod `json:"method,omitempty"` // Attribute: // api @@ -30,7 +30,7 @@ type EventSpec struct { // Definition: // Event tracking APIs available for use; only relevant for JavaScript method trackers. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // jstrk diff --git a/adcom1/geo.go b/adcom1/geo.go index f2ca08d..a53725b 100644 --- a/adcom1/geo.go +++ b/adcom1/geo.go @@ -16,7 +16,7 @@ type Geo struct { // Definition: // Source of location data; recommended when passing lat/lon. // Refer to List: Location Types. - Type interface{} `json:"type,omitempty"` + Type LocationType `json:"type,omitempty"` // Attribute: // lat @@ -61,7 +61,7 @@ type Geo struct { // Definition: // Service or provider used to determine geolocation from IP address if applicable (i.e., type = 2). // Refer to List: IP Location Services. - IPServ interface{} `json:"ipserv,omitempty"` + IPServ IPLocationService `json:"ipserv,omitempty"` // Attribute: // country diff --git a/adcom1/image_asset.go b/adcom1/image_asset.go index 9caf303..45f1899 100644 --- a/adcom1/image_asset.go +++ b/adcom1/image_asset.go @@ -36,7 +36,7 @@ type ImageAsset struct { // Definition: // The type of image represented by this asset. // Refer to List: Native Image Asset Types. - Type interface{} `json:"type,omitempty"` + Type NativeImageAssetType `json:"type,omitempty"` // Attribute: // ext diff --git a/adcom1/image_asset_format.go b/adcom1/image_asset_format.go index 75b99d5..2f7905e 100644 --- a/adcom1/image_asset_format.go +++ b/adcom1/image_asset_format.go @@ -10,15 +10,17 @@ type ImageAssetFormat struct { // Type: // integer // Definition: - // The type of image asset supported. Refer to List: Native Image Asset Types. - Type interface{} `json:"type,omitempty"` + // The type of image asset supported. + // Refer to List: Native Image Asset Types. + Type NativeImageAssetType `json:"type,omitempty"` // Attribute: // mime // Type: // string array // Definition: - // Array of supported mime types (e.g., “image/jpeg”, “image/gif”). If omitted, all types are assumed. + // Array of supported mime types (e.g., “image/jpeg”, “image/gif”). + // If omitted, all types are assumed. MIME []string `json:"mime,omitempty"` // Attribute: @@ -26,7 +28,8 @@ type ImageAssetFormat struct { // Type: // integer // Definition: - // Absolute width of the image asset in device independent pixels (DIPS). Note that mixing absolute and relative sizes is not recommended. + // Absolute width of the image asset in device independent pixels (DIPS). + // Note that mixing absolute and relative sizes is not recommended. W int `json:"w,omitempty"` // Attribute: @@ -34,7 +37,8 @@ type ImageAssetFormat struct { // Type: // integer // Definition: - // Absolute height of the image asset in device independent pixels (DIPS). Note that mixing absolute and relative sizes is not recommended. + // Absolute height of the image asset in device independent pixels (DIPS). + // Note that mixing absolute and relative sizes is not recommended. H int `json:"h,omitempty"` // Attribute: @@ -42,7 +46,8 @@ type ImageAssetFormat struct { // Type: // integer // 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. + // 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 int `json:"wmin,omitempty"` // Attribute: @@ -50,7 +55,8 @@ type ImageAssetFormat struct { // Type: // integer // 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. + // 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 int `json:"hmin,omitempty"` // Attribute: @@ -58,7 +64,8 @@ type ImageAssetFormat struct { // Type: // integer // Definition: - // Relative width of the image asset when expressing size as a ratio. Note that mixing absolute and relative sizes is not recommended. + // Relative width of the image asset when expressing size as a ratio. + // Note that mixing absolute and relative sizes is not recommended. WRatio int `json:"wratio,omitempty"` // Attribute: @@ -66,7 +73,8 @@ type ImageAssetFormat struct { // Type: // integer // Definition: - // Relative height of the image asset when expressing size as a ratio. Note that mixing absolute and relative sizes is not recommended. + // Relative height of the image asset when expressing size as a ratio. + // Note that mixing absolute and relative sizes is not recommended. HRatio int `json:"hratio,omitempty"` // Attribute: diff --git a/adcom1/native.go b/adcom1/native.go index 8733121..8836a99 100644 --- a/adcom1/native.go +++ b/adcom1/native.go @@ -11,7 +11,7 @@ type Native struct { // Definition: // Default destination link for the native ad overall; used if an asset is activated (e.g., clicked) that doesn't specify it's own destination link. // Refer to Object: LinkAsset. - Link interface{} `json:"link,omitempty"` + Link *LinkAsset `json:"link,omitempty"` // Attribute: // asset @@ -20,7 +20,7 @@ type Native struct { // Definition: // Array of assets that comprise the native ad. // Refer to Object: Asset. - Asset []interface{} `json:"asset,omitempty"` + Asset []Asset `json:"asset,omitempty"` // Attribute: // ext diff --git a/adcom1/native_format.go b/adcom1/native_format.go index 910982a..7ab1459 100644 --- a/adcom1/native_format.go +++ b/adcom1/native_format.go @@ -12,7 +12,7 @@ type NativeFormat struct { // Definition: // Array of objects that specify the set of native assets and their permitted formats. // Refer to Object: AssetFormat. - Asset []interface{} `json:"asset"` + Asset []AssetFormat `json:"asset"` // Attribute: // ext diff --git a/adcom1/placement.go b/adcom1/placement.go index 7ca26ec..034aa59 100644 --- a/adcom1/placement.go +++ b/adcom1/placement.go @@ -92,7 +92,7 @@ type Placement struct { // Placement Subtype Object that indicates that this may be a display placement and provides additional detail related thereto. // Refer to Object: DisplayPlacement. // * At least one placement subtype object is required. - Display interface{} `json:"display,omitempty"` + Display *DisplayPlacement `json:"display,omitempty"` // Attribute: // video @@ -102,7 +102,7 @@ type Placement struct { // Placement Subtype Object that indicates that this may be a video placement and provides additional detail related thereto. // Refer to Object: VideoPlacement. // * At least one placement subtype object is required. - Video interface{} `json:"video,omitempty"` + Video *VideoPlacement `json:"video,omitempty"` // Attribute: // audio @@ -112,7 +112,7 @@ type Placement struct { // Placement Subtype Object that indicates that this may be an audio placement and provides additional detail related thereto. // Refer to Object: AudioPlacement. // * At least one placement subtype object is required. - Audio interface{} `json:"audio,omitempty"` + Audio *AudioPlacement `json:"audio,omitempty"` // Attribute: // ext diff --git a/adcom1/producer.go b/adcom1/producer.go index 5b79790..e50cfbc 100644 --- a/adcom1/producer.go +++ b/adcom1/producer.go @@ -45,7 +45,7 @@ type Producer struct { // Definition: // The taxonomy in use for the cat attribute. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // ext diff --git a/adcom1/publisher.go b/adcom1/publisher.go index 3ee7666..03d2cdc 100644 --- a/adcom1/publisher.go +++ b/adcom1/publisher.go @@ -43,7 +43,7 @@ type Publisher struct { // Definition: // The taxonomy in use for the cat attribute. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // ext diff --git a/adcom1/restrictions.go b/adcom1/restrictions.go index ea523d4..2d3f2f5 100644 --- a/adcom1/restrictions.go +++ b/adcom1/restrictions.go @@ -19,7 +19,7 @@ type Restrictions struct { // Definition: // The taxonomy in use for the bcat attribute // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // badv @@ -45,7 +45,7 @@ type Restrictions struct { // Definition: // Block list of creative attributes // Refer to List: Creative Attributes. - BAttr []interface{} `json:"battr,omitempty"` + BAttr []CreativeAttribute `json:"battr,omitempty"` // Attribute: // ext diff --git a/adcom1/site.go b/adcom1/site.go index a47bc44..aff5c99 100644 --- a/adcom1/site.go +++ b/adcom1/site.go @@ -46,7 +46,7 @@ type Site struct { // Definition: // The taxonomy in use for the cat, sectcat and pagecat attributes. // Refer to List: Category Taxonomies. - CatTax interface{} `json:"cattax,omitempty"` + CatTax CategoryTaxonomy `json:"cattax,omitempty"` // Attribute: // privpolicy diff --git a/adcom1/user.go b/adcom1/user.go index c4e579e..cc1d836 100644 --- a/adcom1/user.go +++ b/adcom1/user.go @@ -63,7 +63,7 @@ type User struct { // Definition: // Location of the user's home base (i.e., not necessarily their current location). // Refer to Object: Geo. - Geo interface{} `json:"geo,omitempty"` + Geo *Geo `json:"geo,omitempty"` // Attribute: // data @@ -73,7 +73,7 @@ type User struct { // Additional user data. // Each Data object represents a different data source. // Refer to Object: Data. - Data []interface{} `json:"data,omitempty"` + Data []Data `json:"data,omitempty"` // Attribute: // ext diff --git a/adcom1/video.go b/adcom1/video.go index c8568f9..61485c3 100644 --- a/adcom1/video.go +++ b/adcom1/video.go @@ -19,7 +19,7 @@ type Video struct { // Definition: // API required by the ad if applicable. // Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype @@ -28,7 +28,7 @@ type Video struct { // Definition: // Subtype of video creative. // Refer to List: Creative Subtypes - Audio/Video. - CType interface{} `json:"ctype,omitempty"` + CType CreativeSubtypeAV `json:"ctype,omitempty"` // Attribute: // dur diff --git a/adcom1/video_placement.go b/adcom1/video_placement.go index 11c73a9..2f77758 100644 --- a/adcom1/video_placement.go +++ b/adcom1/video_placement.go @@ -9,23 +9,26 @@ type VideoPlacement struct { // Type: // integer // Definition: - // Placement subtype. Refer to List: Placement Subtypes - Video. - PType interface{} `json:"ptype,omitempty"` + // Placement subtype. + // Refer to List: Placement Subtypes - Video. + PType VideoPlacementSubtype `json:"ptype,omitempty"` // Attribute: // pos // Type: // integer // Definition: - // Placement position on screen. Refer to List: Placement Positions. - Pos interface{} `json:"pos,omitempty"` + // Placement position on screen. + // Refer to List: Placement Positions. + Pos PlacementPosition `json:"pos,omitempty"` // Attribute: // delay // Type: // integer // Definition: - // Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll placements. For additional generic values, refer to List: Start Delay Modes. + // Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll placements. + // For additional generic values, refer to List: Start Delay Modes. Delay int64 `json:"delay,omitempty"` // Attribute: @@ -57,31 +60,35 @@ type VideoPlacement struct { // Type: // integer // Definition: - // Playback method in use for this placement. Refer to List: Playback Methods. - PlayMethod interface{} `json:"playmethod,omitempty"` + // Playback method in use for this placement. + // Refer to List: Playback Methods. + PlayMethod PlaybackMethod `json:"playmethod,omitempty"` // Attribute: // playend // Type: // integer // Definition: - // The event that causes playback to end for this placement. Refer to List: Playback Cessation Modes. - PlayEnd interface{} `json:"playend,omitempty"` + // The event that causes playback to end for this placement. + // Refer to List: Playback Cessation Modes. + PlayEnd PlaybackCessationMode `json:"playend,omitempty"` // Attribute: // clktype // Type: // integer // Definition: - // Indicates the click type of the placement. Refer to List: Click Types. - ClkType interface{} `json:"clktype,omitempty"` + // Indicates the click type of the placement. + // Refer to List: Click Types. + ClkType ClickType `json:"clktype,omitempty"` // Attribute: // mime // Type: // string array; required // Definition: - // Array of supported mime types (e.g., “video/mp4”). If omitted, all types are assumed. + // Array of supported mime types (e.g., “video/mp4”). + // If omitted, all types are assumed. MIME []string `json:"mime,omitempty"` // Attribute: @@ -89,16 +96,19 @@ type VideoPlacement struct { // Type: // integer array // Definition: - // List of supported APIs for this placement. If an API is not explicitly listed, it is assumed to be unsupported. Refer to List: API Frameworks. - API []interface{} `json:"api,omitempty"` + // List of supported APIs for this placement. + // If an API is not explicitly listed, it is assumed to be unsupported. + // Refer to List: API Frameworks. + API []APIFramework `json:"api,omitempty"` // Attribute: // ctype // Type: // integer array // Definition: - // Creative subtypes permitted for this placement. Refer to List: Creative Subtypes - Audio/Video. - CType []interface{} `json:"ctype,omitempty"` + // Creative subtypes permitted for this placement. + // Refer to List: Creative Subtypes - Audio/Video. + CType []CreativeSubtypeAV `json:"ctype,omitempty"` // Attribute: // w @@ -121,8 +131,9 @@ type VideoPlacement struct { // Type: // integer; default 1 // Definition: - // Units of size used for w and h attributes. Refer to List: Size Units. - Unit interface{} `json:"unit,omitempty"` + // Units of size used for w and h attributes. + // Refer to List: Size Units. + Unit SizeUnit `json:"unit,omitempty"` // Attribute: // mindur @@ -145,7 +156,10 @@ type VideoPlacement struct { // Type: // integer; default 0 // Definition: - // Maximum extended creative duration if extension is allowed. If 0, extension is not allowed. If -1, extension is allowed and there is no time limit imposed. If greater than 0, then the value represents the number of seconds of extended play supported beyond the maxdur value. + // Maximum extended creative duration if extension is allowed. + // If 0, extension is not allowed. + // If -1, extension is allowed and there is no time limit imposed. + // If greater than 0, then the value represents the number of seconds of extended play supported beyond the maxdur value. MaxExt int64 `json:"maxext,omitempty"` // Attribute: @@ -169,8 +183,10 @@ type VideoPlacement struct { // Type: // integer array // Definition: - // Array of supported creative delivery methods. If omitted, all can be assumed. Refer to List: Delivery Methods. - Delivery []interface{} `json:"delivery,omitempty"` + // Array of supported creative delivery methods. + // If omitted, all can be assumed. + // Refer to List: Delivery Methods. + Delivery []DeliveryMethod `json:"delivery,omitempty"` // Attribute: // maxseq @@ -185,8 +201,10 @@ type VideoPlacement struct { // Type: // integer // Definition: - // Indicates if the creative must be linear, nonlinear, etc. If none specified, no restrictions are assumed. Refer to List: Linearity Modes. - Linear interface{} `json:"linear,omitempty"` + // Indicates if the creative must be linear, nonlinear, etc. + // If none specified, no restrictions are assumed. + // Refer to List: Linearity Modes. + Linear LinearityMode `json:"linear,omitempty"` // Attribute: // boxing @@ -201,16 +219,18 @@ type VideoPlacement struct { // Type: // object array // Definition: - // Array of objects indicating that companion ads are available and providing the specifications thereof. Refer to Object: Companion. - Comp []interface{} `json:"comp,omitempty"` + // Array of objects indicating that companion ads are available and providing the specifications thereof. + // Refer to Object: Companion. + Comp []Companion `json:"comp,omitempty"` // Attribute: // comptype // Type: // integer array // Definition: - // Supported companion ad types; recommended if companion ads are specified in comp. Refer to List: Companion Types. - CompType []interface{} `json:"comptype,omitempty"` + // Supported companion ad types; recommended if companion ads are specified in comp. + // Refer to List: Companion Types. + CompType []CompanionType `json:"comptype,omitempty"` // Attribute: // ext