diff --git a/adapters/synacormedia/synacormedia.go b/adapters/imds/imds.go similarity index 82% rename from adapters/synacormedia/synacormedia.go rename to adapters/imds/imds.go index 3a882b71223..66bc14be60a 100644 --- a/adapters/synacormedia/synacormedia.go +++ b/adapters/imds/imds.go @@ -1,4 +1,4 @@ -package synacormedia +package imds import ( "encoding/json" @@ -14,7 +14,7 @@ import ( "github.com/prebid/prebid-server/openrtb_ext" ) -type SynacorMediaAdapter struct { +type adapter struct { EndpointTemplate *template.Template } @@ -27,20 +27,20 @@ type ReqExt struct { SeatId string `json:"seatId"` } -// Builder builds a new instance of the SynacorMedia adapter for the given bidder with the given config. +// Builder builds a new instance of the Imds adapter for the given bidder with the given config. func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) { template, err := template.New("endpointTemplate").Parse(config.Endpoint) if err != nil { return nil, fmt.Errorf("unable to parse endpoint url template: %v", err) } - bidder := &SynacorMediaAdapter{ + bidder := &adapter{ EndpointTemplate: template, } return bidder, nil } -func (a *SynacorMediaAdapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) { +func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) { var errs []error var bidRequests []*adapters.RequestData @@ -53,11 +53,11 @@ func (a *SynacorMediaAdapter) MakeRequests(request *openrtb2.BidRequest, reqInfo return bidRequests, errs } -func (a *SynacorMediaAdapter) makeRequest(request *openrtb2.BidRequest) (*adapters.RequestData, []error) { +func (a *adapter) makeRequest(request *openrtb2.BidRequest) (*adapters.RequestData, []error) { var errs []error var validImps []openrtb2.Imp var re *ReqExt - var firstExtImp *openrtb_ext.ExtImpSynacormedia = nil + var firstExtImp *openrtb_ext.ExtImpImds = nil for _, imp := range request.Imp { validExtImpObj, err := getExtImpObj(&imp) // getExtImpObj returns {seatId:"", tagId:""} @@ -126,11 +126,11 @@ func (a *SynacorMediaAdapter) makeRequest(request *openrtb2.BidRequest) (*adapte } // Builds enpoint url based on adapter-specific pub settings from imp.ext -func (adapter *SynacorMediaAdapter) buildEndpointURL(params *openrtb_ext.ExtImpSynacormedia) (string, error) { +func (adapter *adapter) buildEndpointURL(params *openrtb_ext.ExtImpImds) (string, error) { return macros.ResolveMacros(adapter.EndpointTemplate, macros.EndpointTemplateParams{Host: params.SeatId}) } -func getExtImpObj(imp *openrtb2.Imp) (*openrtb_ext.ExtImpSynacormedia, error) { +func getExtImpObj(imp *openrtb2.Imp) (*openrtb_ext.ExtImpImds, error) { var bidderExt adapters.ExtImpBidder if err := json.Unmarshal(imp.Ext, &bidderExt); err != nil { return nil, &errortypes.BadInput{ @@ -138,18 +138,18 @@ func getExtImpObj(imp *openrtb2.Imp) (*openrtb_ext.ExtImpSynacormedia, error) { } } - var synacormediaExt openrtb_ext.ExtImpSynacormedia - if err := json.Unmarshal(bidderExt.Bidder, &synacormediaExt); err != nil { + var imdsExt openrtb_ext.ExtImpImds + if err := json.Unmarshal(bidderExt.Bidder, &imdsExt); err != nil { return nil, &errortypes.BadInput{ Message: err.Error(), } } - return &synacormediaExt, nil + return &imdsExt, nil } // MakeBids make the bids for the bid response. -func (a *SynacorMediaAdapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) { +func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) { const errorMessage string = "Unexpected status code: %d. Run with request.debug = 1 for more info" switch { case response.StatusCode == http.StatusNoContent: diff --git a/adapters/synacormedia/synacormedia_test.go b/adapters/imds/imds_test.go similarity index 74% rename from adapters/synacormedia/synacormedia_test.go rename to adapters/imds/imds_test.go index d4e5e70f568..3a8c33ed31c 100644 --- a/adapters/synacormedia/synacormedia_test.go +++ b/adapters/imds/imds_test.go @@ -1,4 +1,4 @@ -package synacormedia +package imds import ( "testing" @@ -10,18 +10,18 @@ import ( ) func TestJsonSamples(t *testing.T) { - bidder, buildErr := Builder(openrtb_ext.BidderSynacormedia, config.Adapter{ + bidder, buildErr := Builder(openrtb_ext.BidderImds, config.Adapter{ Endpoint: "http://{{.Host}}.technoratimedia.com/openrtb/bids/{{.Host}}"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"}) if buildErr != nil { t.Fatalf("Builder returned unexpected error %v", buildErr) } - adapterstest.RunJSONBidderTest(t, "synacormediatest", bidder) + adapterstest.RunJSONBidderTest(t, "imdstest", bidder) } func TestEndpointTemplateMalformed(t *testing.T) { - _, buildErr := Builder(openrtb_ext.BidderSynacormedia, config.Adapter{ + _, buildErr := Builder(openrtb_ext.BidderImds, config.Adapter{ Endpoint: "{{Malformed}}"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"}) assert.Error(t, buildErr) diff --git a/adapters/synacormedia/synacormediatest/exemplary/simple-banner.json b/adapters/imds/imdstest/exemplary/simple-banner.json similarity index 97% rename from adapters/synacormedia/synacormediatest/exemplary/simple-banner.json rename to adapters/imds/imdstest/exemplary/simple-banner.json index 944e6e549ab..5b15f9e058a 100644 --- a/adapters/synacormedia/synacormediatest/exemplary/simple-banner.json +++ b/adapters/imds/imdstest/exemplary/simple-banner.json @@ -73,12 +73,12 @@ } } ], - "seat": "synacormedia" + "seat": "imds" } ], "ext": { "responsetimemillis": { - "synacormedia": 339 + "imds": 339 } } } diff --git a/adapters/synacormedia/synacormediatest/exemplary/simple-video.json b/adapters/imds/imdstest/exemplary/simple-video.json similarity index 97% rename from adapters/synacormedia/synacormediatest/exemplary/simple-video.json rename to adapters/imds/imdstest/exemplary/simple-video.json index 2cddd5220f9..9aaea18cca9 100644 --- a/adapters/synacormedia/synacormediatest/exemplary/simple-video.json +++ b/adapters/imds/imdstest/exemplary/simple-video.json @@ -87,12 +87,12 @@ } } ], - "seat": "synacormedia" + "seat": "imds" } ], "ext": { "responsetimemillis": { - "synacormedia": 339 + "imds": 339 } } } diff --git a/adapters/synacormedia/synacormediatest/supplemental/audio_response.json b/adapters/imds/imdstest/supplemental/audio_response.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/audio_response.json rename to adapters/imds/imdstest/supplemental/audio_response.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/bad_response.json b/adapters/imds/imdstest/supplemental/bad_response.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/bad_response.json rename to adapters/imds/imdstest/supplemental/bad_response.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/bad_seat_id.json b/adapters/imds/imdstest/supplemental/bad_seat_id.json similarity index 91% rename from adapters/synacormedia/synacormediatest/supplemental/bad_seat_id.json rename to adapters/imds/imdstest/supplemental/bad_seat_id.json index 00dd2c23707..18630c592c4 100644 --- a/adapters/synacormedia/synacormediatest/supplemental/bad_seat_id.json +++ b/adapters/imds/imdstest/supplemental/bad_seat_id.json @@ -24,7 +24,7 @@ "expectedMakeRequestsErrors": [ { - "value": "json: cannot unmarshal number into Go struct field ExtImpSynacormedia.seatId of type string", + "value": "json: cannot unmarshal number into Go struct field ExtImpImds.seatId of type string", "comparison": "literal" } ] diff --git a/adapters/synacormedia/synacormediatest/supplemental/missing_seat_id.json b/adapters/imds/imdstest/supplemental/missing_seat_id.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/missing_seat_id.json rename to adapters/imds/imdstest/supplemental/missing_seat_id.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/missing_tag_id.json b/adapters/imds/imdstest/supplemental/missing_tag_id.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/missing_tag_id.json rename to adapters/imds/imdstest/supplemental/missing_tag_id.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/native_response.json b/adapters/imds/imdstest/supplemental/native_response.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/native_response.json rename to adapters/imds/imdstest/supplemental/native_response.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/one_bad_ext.json b/adapters/imds/imdstest/supplemental/one_bad_ext.json similarity index 97% rename from adapters/synacormedia/synacormediatest/supplemental/one_bad_ext.json rename to adapters/imds/imdstest/supplemental/one_bad_ext.json index 5749aadba98..f5e9fed874d 100644 --- a/adapters/synacormedia/synacormediatest/supplemental/one_bad_ext.json +++ b/adapters/imds/imdstest/supplemental/one_bad_ext.json @@ -90,12 +90,12 @@ } } ], - "seat": "synacormedia" + "seat": "imds" } ], "ext": { "responsetimemillis": { - "synacormedia": 339 + "imds": 339 } } } diff --git a/adapters/synacormedia/synacormediatest/supplemental/status_204.json b/adapters/imds/imdstest/supplemental/status_204.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/status_204.json rename to adapters/imds/imdstest/supplemental/status_204.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/status_400.json b/adapters/imds/imdstest/supplemental/status_400.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/status_400.json rename to adapters/imds/imdstest/supplemental/status_400.json diff --git a/adapters/synacormedia/synacormediatest/supplemental/status_500.json b/adapters/imds/imdstest/supplemental/status_500.json similarity index 100% rename from adapters/synacormedia/synacormediatest/supplemental/status_500.json rename to adapters/imds/imdstest/supplemental/status_500.json diff --git a/adapters/synacormedia/params_test.go b/adapters/imds/params_test.go similarity index 57% rename from adapters/synacormedia/params_test.go rename to adapters/imds/params_test.go index edb9a2a44b6..e2052b4c262 100644 --- a/adapters/synacormedia/params_test.go +++ b/adapters/imds/params_test.go @@ -1,4 +1,4 @@ -package synacormedia +package imds import ( "encoding/json" @@ -7,11 +7,11 @@ import ( "github.com/prebid/prebid-server/openrtb_ext" ) -// This file actually intends to test static/bidder-params/synacormedia.json +// This file actually intends to test static/bidder-params/imds.json // -// These also validate the format of the external API: request.imp[i].ext.prebid.bidder.synacormedia +// These also validate the format of the external API: request.imp[i].ext.prebid.bidder.imds -// TestValidParams makes sure that the synacormedia schema accepts all imp.ext fields which we intend to support. +// TestValidParams makes sure that the imds schema accepts all imp.ext fields which we intend to support. func TestValidParams(t *testing.T) { validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params") if err != nil { @@ -19,13 +19,13 @@ func TestValidParams(t *testing.T) { } for _, validParam := range validParams { - if err := validator.Validate(openrtb_ext.BidderSynacormedia, json.RawMessage(validParam)); err != nil { - t.Errorf("Schema rejected synacormedia params: %s", validParam) + if err := validator.Validate(openrtb_ext.BidderImds, json.RawMessage(validParam)); err != nil { + t.Errorf("Schema rejected imds params: %s", validParam) } } } -// TestInvalidParams makes sure that the synacormedia schema rejects all the imp.ext fields we don't support. +// TestInvalidParams makes sure that the imds schema rejects all the imp.ext fields we don't support. func TestInvalidParams(t *testing.T) { validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params") if err != nil { @@ -33,7 +33,7 @@ func TestInvalidParams(t *testing.T) { } for _, invalidParam := range invalidParams { - if err := validator.Validate(openrtb_ext.BidderSynacormedia, json.RawMessage(invalidParam)); err == nil { + if err := validator.Validate(openrtb_ext.BidderImds, json.RawMessage(invalidParam)); err == nil { t.Errorf("Schema allowed unexpected params: %s", invalidParam) } } diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go index 5ceaae1cdb8..10c6f0b2b0c 100755 --- a/exchange/adapter_builders.go +++ b/exchange/adapter_builders.go @@ -77,6 +77,7 @@ import ( "github.com/prebid/prebid-server/adapters/grid" "github.com/prebid/prebid-server/adapters/gumgum" "github.com/prebid/prebid-server/adapters/huaweiads" + "github.com/prebid/prebid-server/adapters/imds" "github.com/prebid/prebid-server/adapters/impactify" "github.com/prebid/prebid-server/adapters/improvedigital" "github.com/prebid/prebid-server/adapters/infytv" @@ -134,7 +135,6 @@ import ( "github.com/prebid/prebid-server/adapters/sspBC" "github.com/prebid/prebid-server/adapters/stroeerCore" "github.com/prebid/prebid-server/adapters/suntContent" - "github.com/prebid/prebid-server/adapters/synacormedia" "github.com/prebid/prebid-server/adapters/taboola" "github.com/prebid/prebid-server/adapters/tappx" "github.com/prebid/prebid-server/adapters/telaria" @@ -240,6 +240,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder { openrtb_ext.BidderGroupm: pubmatic.Builder, openrtb_ext.BidderGumGum: gumgum.Builder, openrtb_ext.BidderHuaweiAds: huaweiads.Builder, + openrtb_ext.BidderImds: imds.Builder, openrtb_ext.BidderImpactify: impactify.Builder, openrtb_ext.BidderImprovedigital: improvedigital.Builder, openrtb_ext.BidderInfyTV: infytv.Builder, @@ -303,7 +304,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder { openrtb_ext.BidderStreamkey: adtelligent.Builder, openrtb_ext.BidderSuntContent: suntContent.Builder, openrtb_ext.BidderStroeerCore: stroeerCore.Builder, - openrtb_ext.BidderSynacormedia: synacormedia.Builder, + openrtb_ext.BidderSynacormedia: imds.Builder, openrtb_ext.BidderTaboola: taboola.Builder, openrtb_ext.BidderTappx: tappx.Builder, openrtb_ext.BidderTelaria: telaria.Builder, diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go index c5de0576718..1661ca74de4 100644 --- a/openrtb_ext/bidders.go +++ b/openrtb_ext/bidders.go @@ -159,6 +159,7 @@ const ( BidderGroupm BidderName = "groupm" BidderGumGum BidderName = "gumgum" BidderHuaweiAds BidderName = "huaweiads" + BidderImds BidderName = "imds" BidderImpactify BidderName = "impactify" BidderImprovedigital BidderName = "improvedigital" BidderInfyTV BidderName = "infytv" @@ -329,6 +330,7 @@ func CoreBidderNames() []BidderName { BidderGroupm, BidderGumGum, BidderHuaweiAds, + BidderImds, BidderImpactify, BidderImprovedigital, BidderInfyTV, diff --git a/openrtb_ext/imp_imds.go b/openrtb_ext/imp_imds.go new file mode 100644 index 00000000000..97f32e900a4 --- /dev/null +++ b/openrtb_ext/imp_imds.go @@ -0,0 +1,7 @@ +package openrtb_ext + +// ExtImpImds defines the contract for bidrequest.imp[i].ext.prebid.bidder.imds +type ExtImpImds struct { + SeatId string `json:"seatId"` + TagId string `json:"tagId"` +} diff --git a/openrtb_ext/imp_synacormedia.go b/openrtb_ext/imp_synacormedia.go deleted file mode 100644 index 2c62a6d3f24..00000000000 --- a/openrtb_ext/imp_synacormedia.go +++ /dev/null @@ -1,7 +0,0 @@ -package openrtb_ext - -// ExtImpSynacormedia defines the contract for bidrequest.imp[i].ext.prebid.bidder.synacormedia -type ExtImpSynacormedia struct { - SeatId string `json:"seatId"` - TagId string `json:"tagId"` -} diff --git a/static/bidder-info/imds.yaml b/static/bidder-info/imds.yaml new file mode 100644 index 00000000000..3f27c766df3 --- /dev/null +++ b/static/bidder-info/imds.yaml @@ -0,0 +1,20 @@ +endpoint: "http://{{.Host}}.technoratimedia.com/openrtb/bids/{{.Host}}" +maintainer: + email: "eng-demand@imds.tv" +capabilities: + app: + mediaTypes: + - banner + - video + site: + mediaTypes: + - banner + - video +userSync: + supportCors: true + iframe: + url: "https://ad-cdn.technoratimedia.com/html/usersync.html?gdpr={{.GDPR}}&consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&cb={{.RedirectURL}}" + userMacro: "[USER_ID]" + redirect: + url: "https://sync.technoratimedia.com/services?srv=cs&gdpr={{.GDPR}}&consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&cb={{.RedirectURL}}" + userMacro: "[USER_ID]" diff --git a/static/bidder-info/synacormedia.yaml b/static/bidder-info/synacormedia.yaml index 30f5308c517..47d66458b48 100644 --- a/static/bidder-info/synacormedia.yaml +++ b/static/bidder-info/synacormedia.yaml @@ -1,3 +1,4 @@ +# DEPRECATED: Use imds bidder instead endpoint: "http://{{.Host}}.technoratimedia.com/openrtb/bids/{{.Host}}" maintainer: email: "eng-demand@imds.tv" @@ -11,6 +12,11 @@ capabilities: - banner - video userSync: + key: "imds" + supportCors: true iframe: - url: "https://ad-cdn.technoratimedia.com/html/usersync.html?cb={{.RedirectURL}}" - userMacro: "[USER_ID]" \ No newline at end of file + url: "https://ad-cdn.technoratimedia.com/html/usersync.html?gdpr={{.GDPR}}&consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&cb={{.RedirectURL}}" + userMacro: "[USER_ID]" + redirect: + url: "https://sync.technoratimedia.com/services?srv=cs&gdpr={{.GDPR}}&consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&cb={{.RedirectURL}}" + userMacro: "[USER_ID]" diff --git a/static/bidder-params/imds.json b/static/bidder-params/imds.json new file mode 100644 index 00000000000..e5b05bcb1c0 --- /dev/null +++ b/static/bidder-params/imds.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "iMedia Digital Services (IMDS) Adapter Params", + "description": "A schema which validates params accepted by the iMedia Digital Services (IMDS) adapter", + + "type": "object", + "properties": { + "seatId": { + "type": "string", + "description": "The seat id." + }, + "tagId": { + "type": "string", + "description": "The tag id." + } + }, + + "required": ["seatId"] +} diff --git a/static/bidder-params/synacormedia.json b/static/bidder-params/synacormedia.json index 8c74ada2e85..21eb06cc7ce 100644 --- a/static/bidder-params/synacormedia.json +++ b/static/bidder-params/synacormedia.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Synacormedia Adapter Params", - "description": "A schema which validates params accepted by the Synacormedia adapter", + "description": "DEPRECATED: Use imds bidder instead. A schema which validates params accepted by the Synacormedia adapter", "type": "object", "properties": {