From 3c7d8528cad8cd4d1f598b50197e345ddb0bec24 Mon Sep 17 00:00:00 2001
From: Edge226Ads <144908224+Edge226Ads@users.noreply.github.com>
Date: Mon, 16 Oct 2023 11:44:17 +0300
Subject: [PATCH 01/34] New Adapter: Edge226 (#3105)
---
adapters/edge226/edge226.go | 145 ++++++++++++++++++
adapters/edge226/edge226_test.go | 20 +++
.../edge226test/exemplary/endpointId.json | 125 +++++++++++++++
.../edge226test/exemplary/simple-banner.json | 125 +++++++++++++++
.../edge226test/exemplary/simple-native.json | 109 +++++++++++++
.../edge226test/exemplary/simple-video.json | 120 +++++++++++++++
.../exemplary/simple-web-banner.json | 125 +++++++++++++++
.../supplemental/bad_media_type.json | 82 ++++++++++
.../supplemental/bad_response.json | 84 ++++++++++
.../edge226test/supplemental/status-204.json | 79 ++++++++++
.../supplemental/status-not-200.json | 84 ++++++++++
adapters/edge226/params_test.go | 47 ++++++
exchange/adapter_builders.go | 2 +
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_edge226.go | 6 +
static/bidder-info/edge226.yaml | 16 ++
static/bidder-params/edge226.json | 23 +++
17 files changed, 1194 insertions(+)
create mode 100644 adapters/edge226/edge226.go
create mode 100644 adapters/edge226/edge226_test.go
create mode 100644 adapters/edge226/edge226test/exemplary/endpointId.json
create mode 100644 adapters/edge226/edge226test/exemplary/simple-banner.json
create mode 100644 adapters/edge226/edge226test/exemplary/simple-native.json
create mode 100644 adapters/edge226/edge226test/exemplary/simple-video.json
create mode 100644 adapters/edge226/edge226test/exemplary/simple-web-banner.json
create mode 100644 adapters/edge226/edge226test/supplemental/bad_media_type.json
create mode 100644 adapters/edge226/edge226test/supplemental/bad_response.json
create mode 100644 adapters/edge226/edge226test/supplemental/status-204.json
create mode 100644 adapters/edge226/edge226test/supplemental/status-not-200.json
create mode 100644 adapters/edge226/params_test.go
create mode 100644 openrtb_ext/imp_edge226.go
create mode 100644 static/bidder-info/edge226.yaml
create mode 100644 static/bidder-params/edge226.json
diff --git a/adapters/edge226/edge226.go b/adapters/edge226/edge226.go
new file mode 100644
index 00000000000..a124cb47eca
--- /dev/null
+++ b/adapters/edge226/edge226.go
@@ -0,0 +1,145 @@
+package edge226
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+type adapter struct {
+ endpoint string
+}
+
+type reqBodyExt struct {
+ Edge226BidderExt reqBodyExtBidder `json:"bidder"`
+}
+
+type reqBodyExtBidder struct {
+ Type string `json:"type"`
+ PlacementID string `json:"placementId,omitempty"`
+ EndpointID string `json:"endpointId,omitempty"`
+}
+
+func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
+ bidder := &adapter{
+ endpoint: config.Endpoint,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ var err error
+ var adapterRequests []*adapters.RequestData
+
+ reqCopy := *request
+ for _, imp := range request.Imp {
+ reqCopy.Imp = []openrtb2.Imp{imp}
+
+ var bidderExt adapters.ExtImpBidder
+ var edge226Ext openrtb_ext.ImpExtEdge226
+
+ if err = json.Unmarshal(reqCopy.Imp[0].Ext, &bidderExt); err != nil {
+ return nil, []error{err}
+ }
+ if err = json.Unmarshal(bidderExt.Bidder, &edge226Ext); err != nil {
+ return nil, []error{err}
+ }
+
+ temp := reqBodyExt{Edge226BidderExt: reqBodyExtBidder{}}
+
+ if edge226Ext.PlacementID != "" {
+ temp.Edge226BidderExt.PlacementID = edge226Ext.PlacementID
+ temp.Edge226BidderExt.Type = "publisher"
+ } else if edge226Ext.EndpointID != "" {
+ temp.Edge226BidderExt.EndpointID = edge226Ext.EndpointID
+ temp.Edge226BidderExt.Type = "network"
+ }
+
+ finalyImpExt, err := json.Marshal(temp)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ reqCopy.Imp[0].Ext = finalyImpExt
+
+ adapterReq, err := a.makeRequest(&reqCopy)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ if adapterReq != nil {
+ adapterRequests = append(adapterRequests, adapterReq)
+ }
+ }
+ return adapterRequests, nil
+}
+
+func (a *adapter) makeRequest(request *openrtb2.BidRequest) (*adapters.RequestData, error) {
+ reqJSON, err := json.Marshal(request)
+ if err != nil {
+ return nil, err
+ }
+
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+ headers.Add("Accept", "application/json")
+ return &adapters.RequestData{
+ Method: "POST",
+ Uri: a.endpoint,
+ Body: reqJSON,
+ Headers: headers,
+ }, err
+}
+
+func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(responseData) {
+ return nil, nil
+ }
+
+ if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
+ return nil, []error{err}
+ }
+
+ var response openrtb2.BidResponse
+ if err := json.Unmarshal(responseData.Body, &response); err != nil {
+ return nil, []error{err}
+ }
+
+ bidResponse := adapters.NewBidderResponseWithBidsCapacity(len(request.Imp))
+ bidResponse.Currency = response.Cur
+ for _, seatBid := range response.SeatBid {
+ for i := range seatBid.Bid {
+ bidType, err := getBidMediaType(&seatBid.Bid[i])
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ b := &adapters.TypedBid{
+ Bid: &seatBid.Bid[i],
+ BidType: bidType,
+ }
+ bidResponse.Bids = append(bidResponse.Bids, b)
+ }
+ }
+ return bidResponse, nil
+}
+
+func getBidMediaType(bid *openrtb2.Bid) (openrtb_ext.BidType, error) {
+ switch bid.MType {
+ case openrtb2.MarkupBanner:
+ return openrtb_ext.BidTypeBanner, nil
+ case openrtb2.MarkupVideo:
+ return openrtb_ext.BidTypeVideo, nil
+ case openrtb2.MarkupAudio:
+ return openrtb_ext.BidTypeAudio, nil
+ case openrtb2.MarkupNative:
+ return openrtb_ext.BidTypeNative, nil
+ default:
+ return "", fmt.Errorf("Unable to fetch mediaType in multi-format: %s", bid.ImpID)
+ }
+}
diff --git a/adapters/edge226/edge226_test.go b/adapters/edge226/edge226_test.go
new file mode 100644
index 00000000000..c5e40ce726d
--- /dev/null
+++ b/adapters/edge226/edge226_test.go
@@ -0,0 +1,20 @@
+package edge226
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderEdge226, config.Adapter{
+ Endpoint: "http://test.com/pserver"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "edge226test", bidder)
+}
diff --git a/adapters/edge226/edge226test/exemplary/endpointId.json b/adapters/edge226/edge226test/exemplary/endpointId.json
new file mode 100644
index 00000000000..741c1f8cb9b
--- /dev/null
+++ b/adapters/edge226/edge226test/exemplary/endpointId.json
@@ -0,0 +1,125 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ },
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "endpointId": "test"
+ }
+ }
+ }
+ ]
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "endpointId": "test",
+ "type": "network"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "bids": [
+ {
+ "bid": {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/edge226/edge226test/exemplary/simple-banner.json b/adapters/edge226/edge226test/exemplary/simple-banner.json
new file mode 100644
index 00000000000..741c1f8cb9b
--- /dev/null
+++ b/adapters/edge226/edge226test/exemplary/simple-banner.json
@@ -0,0 +1,125 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ },
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "endpointId": "test"
+ }
+ }
+ }
+ ]
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "endpointId": "test",
+ "type": "network"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "bids": [
+ {
+ "bid": {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/edge226/edge226test/exemplary/simple-native.json b/adapters/edge226/edge226test/exemplary/simple-native.json
new file mode 100644
index 00000000000..581864cdb41
--- /dev/null
+++ b/adapters/edge226/edge226test/exemplary/simple-native.json
@@ -0,0 +1,109 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ },
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "native": {
+ "request": "{\"ver\":\"1.1\",\"layout\":1,\"adunit\":2,\"plcmtcnt\":6,\"plcmttype\":4,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":75}},{\"id\":2,\"required\":1,\"img\":{\"wmin\":492,\"hmin\":328,\"type\":3,\"mimes\":[\"image/jpeg\",\"image/jpg\",\"image/png\"]}},{\"id\":4,\"required\":0,\"data\":{\"type\":6}},{\"id\":5,\"required\":0,\"data\":{\"type\":7}},{\"id\":6,\"required\":0,\"data\":{\"type\":1,\"len\":20}}]}",
+ "ver": "1.1"
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ]
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "native": {
+ "request": "{\"ver\":\"1.1\",\"layout\":1,\"adunit\":2,\"plcmtcnt\":6,\"plcmttype\":4,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":75}},{\"id\":2,\"required\":1,\"img\":{\"wmin\":492,\"hmin\":328,\"type\":3,\"mimes\":[\"image/jpeg\",\"image/jpg\",\"image/png\"]}},{\"id\":4,\"required\":0,\"data\":{\"type\":6}},{\"id\":5,\"required\":0,\"data\":{\"type\":7}},{\"id\":6,\"required\":0,\"data\":{\"type\":1,\"len\":20}}]}",
+ "ver": "1.1"
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 4
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "bids": [
+ {
+ "bid": {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "mtype": 4
+ },
+ "type": "native"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/edge226/edge226test/exemplary/simple-video.json b/adapters/edge226/edge226test/exemplary/simple-video.json
new file mode 100644
index 00000000000..c14a1bd988e
--- /dev/null
+++ b/adapters/edge226/edge226test/exemplary/simple-video.json
@@ -0,0 +1,120 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ },
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 2,
+ 5
+ ],
+ "w": 1024,
+ "h": 576
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ]
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "iPad"
+ },
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 2,
+ 5
+ ],
+ "w": 1024,
+ "h": 576
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "00:01:00",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "mtype": 2
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "00:01:00",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "mtype": 2
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/edge226/edge226test/exemplary/simple-web-banner.json b/adapters/edge226/edge226test/exemplary/simple-web-banner.json
new file mode 100644
index 00000000000..6cc7295003c
--- /dev/null
+++ b/adapters/edge226/edge226test/exemplary/simple-web-banner.json
@@ -0,0 +1,125 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ],
+ "site": {
+ "id": "1",
+ "domain": "test.com"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "Ubuntu"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "test",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "site": {
+ "id": "1",
+ "domain": "test.com"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ua": "Ubuntu"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 468,
+ "h": 60,
+ "mtype": 1
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "bids": [
+ {
+ "bid": {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 468,
+ "h": 60,
+ "mtype": 1
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/edge226/edge226test/supplemental/bad_media_type.json b/adapters/edge226/edge226test/supplemental/bad_media_type.json
new file mode 100644
index 00000000000..75b13412ad6
--- /dev/null
+++ b/adapters/edge226/edge226test/supplemental/bad_media_type.json
@@ -0,0 +1,82 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "test_bid_id",
+ "impid": "test-imp-id",
+ "price": 0.27543,
+ "adm": "",
+ "cid": "test_cid",
+ "crid": "test_crid",
+ "dealid": "test_dealid",
+ "w": 300,
+ "h": 250,
+ "ext": {}
+ }
+ ],
+ "seat": "edge226"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unable to fetch mediaType in multi-format: test-imp-id",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/edge226/edge226test/supplemental/bad_response.json b/adapters/edge226/edge226test/supplemental/bad_response.json
new file mode 100644
index 00000000000..1e5664bafec
--- /dev/null
+++ b/adapters/edge226/edge226test/supplemental/bad_response.json
@@ -0,0 +1,84 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": ""
+ }
+ }],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "json: cannot unmarshal string into Go value of type openrtb2.BidResponse",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/edge226/edge226test/supplemental/status-204.json b/adapters/edge226/edge226test/supplemental/status-204.json
new file mode 100644
index 00000000000..da929ce61cb
--- /dev/null
+++ b/adapters/edge226/edge226test/supplemental/status-204.json
@@ -0,0 +1,79 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 204,
+ "body": {}
+ }
+ }],
+ "expectedBidResponses": []
+}
diff --git a/adapters/edge226/edge226test/supplemental/status-not-200.json b/adapters/edge226/edge226test/supplemental/status-not-200.json
new file mode 100644
index 00000000000..cf1847c2cac
--- /dev/null
+++ b/adapters/edge226/edge226test/supplemental/status-not-200.json
@@ -0,0 +1,84 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "http://test.com/pserver",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": "test",
+ "type": "publisher"
+ }
+ }
+ }
+ ],
+ "app": {
+ "id": "1",
+ "bundle": "com.wls.testwlsapplication"
+ },
+ "device": {
+ "ip": "123.123.123.123",
+ "ifa": "sdjfksdf-dfsds-dsdg-dsgg"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 404,
+ "body": {}
+ }
+ }],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 404. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/edge226/params_test.go b/adapters/edge226/params_test.go
new file mode 100644
index 00000000000..3191bc62136
--- /dev/null
+++ b/adapters/edge226/params_test.go
@@ -0,0 +1,47 @@
+package edge226
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+func TestValidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json schema. %v", err)
+ }
+
+ for _, p := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderEdge226, json.RawMessage(p)); err != nil {
+ t.Errorf("Schema rejected valid params: %s", p)
+ }
+ }
+}
+
+func TestInvalidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json schema. %v", err)
+ }
+
+ for _, p := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderEdge226, json.RawMessage(p)); err == nil {
+ t.Errorf("Schema allowed invalid params: %s", p)
+ }
+ }
+}
+
+var validParams = []string{
+ `{"placementId": "test"}`,
+ `{"placementId": "1"}`,
+ `{"endpointId": "test"}`,
+ `{"endpointId": "1"}`,
+}
+
+var invalidParams = []string{
+ `{"placementId": 42}`,
+ `{"endpointId": 42}`,
+ `{"placementId": "1", "endpointId": "1"}`,
+}
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 95cb1626085..5d06ba9ba43 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -74,6 +74,7 @@ import (
"github.com/prebid/prebid-server/adapters/dianomi"
"github.com/prebid/prebid-server/adapters/dmx"
evolution "github.com/prebid/prebid-server/adapters/e_volution"
+ "github.com/prebid/prebid-server/adapters/edge226"
"github.com/prebid/prebid-server/adapters/emtv"
"github.com/prebid/prebid-server/adapters/eplanning"
"github.com/prebid/prebid-server/adapters/epom"
@@ -263,6 +264,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderDecenterAds: decenterads.Builder,
openrtb_ext.BidderDeepintent: deepintent.Builder,
openrtb_ext.BidderDianomi: dianomi.Builder,
+ openrtb_ext.BidderEdge226: edge226.Builder,
openrtb_ext.BidderDmx: dmx.Builder,
openrtb_ext.BidderEmtv: emtv.Builder,
openrtb_ext.BidderEmxDigital: cadentaperturemx.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 475d56a7ba8..fd5ae176ab1 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -92,6 +92,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderDecenterAds,
BidderDeepintent,
BidderDianomi,
+ BidderEdge226,
BidderDmx,
BidderEmtv,
BidderEmxDigital,
@@ -381,6 +382,7 @@ const (
BidderDecenterAds BidderName = "decenterads"
BidderDeepintent BidderName = "deepintent"
BidderDianomi BidderName = "dianomi"
+ BidderEdge226 BidderName = "edge226"
BidderDmx BidderName = "dmx"
BidderEmtv BidderName = "emtv"
BidderEmxDigital BidderName = "emx_digital"
diff --git a/openrtb_ext/imp_edge226.go b/openrtb_ext/imp_edge226.go
new file mode 100644
index 00000000000..44f3490ee42
--- /dev/null
+++ b/openrtb_ext/imp_edge226.go
@@ -0,0 +1,6 @@
+package openrtb_ext
+
+type ImpExtEdge226 struct {
+ PlacementID string `json:"placementId"`
+ EndpointID string `json:"endpointId"`
+}
diff --git a/static/bidder-info/edge226.yaml b/static/bidder-info/edge226.yaml
new file mode 100644
index 00000000000..c4fbdefc29b
--- /dev/null
+++ b/static/bidder-info/edge226.yaml
@@ -0,0 +1,16 @@
+endpoint: "http://ssp.dauup.com/pserver"
+maintainer:
+ email: "audit@edge226.com"
+gvlVendorID: 1202
+capabilities:
+ site:
+ mediaTypes:
+ - banner
+ - video
+ - native
+
+ app:
+ mediaTypes:
+ - banner
+ - video
+ - native
diff --git a/static/bidder-params/edge226.json b/static/bidder-params/edge226.json
new file mode 100644
index 00000000000..95b0fbdabb8
--- /dev/null
+++ b/static/bidder-params/edge226.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Edge226 Adapter Params",
+ "description": "A schema which validates params accepted by the Edge226 adapter",
+ "type": "object",
+
+ "properties": {
+ "placementId": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Placement ID"
+ },
+ "endpointId": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Endpoint ID"
+ }
+ },
+ "oneOf": [
+ { "required": ["placementId"] },
+ { "required": ["endpointId"] }
+ ]
+ }
\ No newline at end of file
From 6f4bb597a93a34d2cd08ef99c811fb316c3b511b Mon Sep 17 00:00:00 2001
From: Maxime Liege <56251840+github-maxime-liege@users.noreply.github.com>
Date: Mon, 16 Oct 2023 10:46:35 +0200
Subject: [PATCH 02/34] New Adapter: Teads (#3112)
---
adapters/teads/models.go | 40 ++++
adapters/teads/teads.go | 202 ++++++++++++++++++
adapters/teads/teads_test.go | 27 +++
.../exemplary/simple-banner-with-format.json | 168 +++++++++++++++
.../teadstest/exemplary/simple-banner.json | 158 ++++++++++++++
.../teadstest/exemplary/simple-video.json | 184 ++++++++++++++++
.../supplemental/bid-id-does-not-match.json | 152 +++++++++++++
.../supplemental/currency-empty-string.json | 185 ++++++++++++++++
.../supplemental/no-impression-response.json | 184 ++++++++++++++++
.../teadstest/supplemental/no-impression.json | 12 ++
.../supplemental/no-placementId.json | 28 +++
.../supplemental/renderer-name-empty.json | 143 +++++++++++++
.../supplemental/renderer-version-empty.json | 143 +++++++++++++
.../teadstest/supplemental/status-400.json | 65 ++++++
.../teadstest/supplemental/status-500.json | 65 ++++++
exchange/adapter_builders.go | 2 +
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_teads.go | 5 +
static/bidder-info/teads.yaml | 9 +
static/bidder-params/teads.json | 15 ++
20 files changed, 1789 insertions(+)
create mode 100644 adapters/teads/models.go
create mode 100644 adapters/teads/teads.go
create mode 100644 adapters/teads/teads_test.go
create mode 100644 adapters/teads/teadstest/exemplary/simple-banner-with-format.json
create mode 100644 adapters/teads/teadstest/exemplary/simple-banner.json
create mode 100644 adapters/teads/teadstest/exemplary/simple-video.json
create mode 100644 adapters/teads/teadstest/supplemental/bid-id-does-not-match.json
create mode 100644 adapters/teads/teadstest/supplemental/currency-empty-string.json
create mode 100644 adapters/teads/teadstest/supplemental/no-impression-response.json
create mode 100644 adapters/teads/teadstest/supplemental/no-impression.json
create mode 100644 adapters/teads/teadstest/supplemental/no-placementId.json
create mode 100644 adapters/teads/teadstest/supplemental/renderer-name-empty.json
create mode 100644 adapters/teads/teadstest/supplemental/renderer-version-empty.json
create mode 100644 adapters/teads/teadstest/supplemental/status-400.json
create mode 100644 adapters/teads/teadstest/supplemental/status-500.json
create mode 100644 openrtb_ext/imp_teads.go
create mode 100644 static/bidder-info/teads.yaml
create mode 100644 static/bidder-params/teads.json
diff --git a/adapters/teads/models.go b/adapters/teads/models.go
new file mode 100644
index 00000000000..5b63c163197
--- /dev/null
+++ b/adapters/teads/models.go
@@ -0,0 +1,40 @@
+package teads
+
+import (
+ "encoding/json"
+ "text/template"
+)
+
+type adapter struct {
+ endpointTemplate *template.Template
+}
+
+type defaultBidderImpExtension struct {
+ Bidder bidder `json:"bidder"`
+}
+
+type bidder struct {
+ PlacementId int `json:"placementId"`
+}
+
+type teadsImpExtension struct {
+ KV teadsKV `json:"kv"`
+}
+
+type teadsKV struct {
+ PlacementId int `json:"placementId"`
+}
+
+type teadsBidExt struct {
+ Prebid teadsPrebidExt `json:"prebid"`
+}
+
+type teadsPrebidExt struct {
+ Meta teadsPrebidMeta `json:"meta"`
+}
+
+type teadsPrebidMeta struct {
+ RendererName string `json:"rendererName"`
+ RendererVersion string `json:"rendererVersion"`
+ RendererData json.RawMessage `json:"rendererData"`
+}
diff --git a/adapters/teads/teads.go b/adapters/teads/teads.go
new file mode 100644
index 00000000000..9c2bb57fc57
--- /dev/null
+++ b/adapters/teads/teads.go
@@ -0,0 +1,202 @@
+package teads
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "strconv"
+ "text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+// Builder builds a new instance of the Teads adapter for the given bidder with the given config.
+func Builder(_ 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 := &adapter{
+ endpointTemplate: template,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ if len(request.Imp) == 0 {
+ return nil, []error{&errortypes.BadInput{
+ Message: "No impression in the bid request",
+ }}
+ }
+
+ endpointURL, err := a.buildEndpointURL()
+ if endpointURL == "" {
+ return nil, []error{err}
+ }
+
+ if err := updateImpObject(request.Imp); err != nil {
+ return nil, []error{err}
+ }
+
+ reqJSON, err := json.Marshal(request)
+ if err != nil {
+ return nil, []error{&errortypes.BadInput{
+ Message: "Error parsing BidRequest object",
+ }}
+ }
+
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+ return []*adapters.RequestData{{
+ Method: "POST",
+ Uri: endpointURL,
+ Body: reqJSON,
+ Headers: headers,
+ }}, []error{}
+}
+
+func updateImpObject(imps []openrtb2.Imp) error {
+ for i := range imps {
+ imp := &imps[i]
+
+ if imp.Banner != nil {
+ if len(imp.Banner.Format) != 0 {
+ bannerCopy := *imp.Banner
+ bannerCopy.H = &imp.Banner.Format[0].H
+ bannerCopy.W = &imp.Banner.Format[0].W
+ imp.Banner = &bannerCopy
+ }
+ }
+
+ var defaultImpExt defaultBidderImpExtension
+ if err := json.Unmarshal(imp.Ext, &defaultImpExt); err != nil {
+ return &errortypes.BadInput{
+ Message: "Error parsing Imp.Ext object",
+ }
+ }
+ if defaultImpExt.Bidder.PlacementId == 0 {
+ return &errortypes.BadInput{
+ Message: "placementId should not be 0.",
+ }
+ }
+ imp.TagID = strconv.Itoa(defaultImpExt.Bidder.PlacementId)
+ teadsImpExt := &teadsImpExtension{
+ KV: teadsKV{
+ PlacementId: defaultImpExt.Bidder.PlacementId,
+ },
+ }
+ if extJson, err := json.Marshal(teadsImpExt); err != nil {
+ return &errortypes.BadInput{
+ Message: "Error stringify Imp.Ext object",
+ }
+ } else {
+ imp.Ext = extJson
+ }
+ }
+ return nil
+}
+
+// Builds enpoint url based on adapter-specific pub settings from imp.ext
+func (a *adapter) buildEndpointURL() (string, error) {
+ endpointParams := macros.EndpointTemplateParams{}
+ host, err := macros.ResolveMacros(a.endpointTemplate, endpointParams)
+
+ if err != nil {
+ return "", &errortypes.BadInput{
+ Message: "Unable to parse endpoint url template: " + err.Error(),
+ }
+ }
+
+ thisURI, err := url.Parse(host)
+ if err != nil {
+ return "", &errortypes.BadInput{
+ Message: "Malformed URL: " + err.Error(),
+ }
+ }
+
+ return thisURI.String(), nil
+}
+
+func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, _ *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(response) {
+ return nil, nil
+ }
+
+ err := adapters.CheckResponseStatusCodeForErrors(response)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ var bidResp openrtb2.BidResponse
+ if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+ return nil, []error{err}
+ }
+
+ bidderResponse := adapters.NewBidderResponseWithBidsCapacity(len(bidResp.SeatBid))
+
+ for _, sb := range bidResp.SeatBid {
+ for i := 0; i < len(sb.Bid); i++ {
+ bid := sb.Bid[i]
+
+ bidExtTeads, err := getTeadsRendererFromBidExt(bid.Ext)
+ if err != nil {
+ return nil, err
+ }
+ bidType, err := getMediaTypeForImp(bid.ImpID, internalRequest.Imp)
+ if err != nil {
+ return nil, err
+ }
+ bidderResponse.Bids = append(bidderResponse.Bids, &adapters.TypedBid{
+ Bid: &bid,
+ BidMeta: &openrtb_ext.ExtBidPrebidMeta{
+ RendererName: bidExtTeads.Prebid.Meta.RendererName,
+ RendererVersion: bidExtTeads.Prebid.Meta.RendererVersion,
+ },
+ BidType: bidType,
+ })
+ }
+ }
+ if bidResp.Cur != "" {
+ bidderResponse.Currency = bidResp.Cur
+ }
+ return bidderResponse, nil
+}
+
+func getTeadsRendererFromBidExt(ext json.RawMessage) (*teadsBidExt, []error) {
+ var bidExtTeads teadsBidExt
+ if err := json.Unmarshal(ext, &bidExtTeads); err != nil {
+ return nil, []error{err}
+ }
+ if bidExtTeads.Prebid.Meta.RendererName == "" {
+ return nil, []error{&errortypes.BadInput{
+ Message: "RendererName should not be empty if present",
+ }}
+ }
+ if bidExtTeads.Prebid.Meta.RendererVersion == "" {
+ return nil, []error{&errortypes.BadInput{
+ Message: "RendererVersion should not be empty if present",
+ }}
+ }
+ return &bidExtTeads, nil
+}
+
+func getMediaTypeForImp(impID string, imps []openrtb2.Imp) (openrtb_ext.BidType, []error) {
+ for _, imp := range imps {
+ if imp.ID == impID {
+ if imp.Video != nil {
+ return openrtb_ext.BidTypeVideo, nil
+ }
+ return openrtb_ext.BidTypeBanner, nil
+ }
+ }
+ return openrtb_ext.BidType(""), []error{&errortypes.BadInput{
+ Message: "Imp ids were not equals",
+ }}
+}
diff --git a/adapters/teads/teads_test.go b/adapters/teads/teads_test.go
new file mode 100644
index 00000000000..791ce7aed6f
--- /dev/null
+++ b/adapters/teads/teads_test.go
@@ -0,0 +1,27 @@
+package teads
+
+import (
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderTeads, config.Adapter{
+ Endpoint: "https://a.teads.tv/prebid-server/bid-request"}, config.Server{ExternalUrl: "https://a.teads.tv/prebid-server/bid-request", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "teadstest", bidder)
+}
+
+func TestEndpointTemplateMalformed(t *testing.T) {
+ _, buildErr := Builder(openrtb_ext.BidderTeads, config.Adapter{
+ Endpoint: "{{Malformed}}"}, config.Server{ExternalUrl: "https://a.teads.tv/prebid-server/bid-request", GvlID: 1, DataCenter: "2"})
+
+ assert.Error(t, buildErr)
+}
diff --git a/adapters/teads/teadstest/exemplary/simple-banner-with-format.json b/adapters/teads/teadstest/exemplary/simple-banner-with-format.json
new file mode 100644
index 00000000000..b2677e6faba
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-banner-with-format.json
@@ -0,0 +1,168 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/exemplary/simple-banner.json b/adapters/teads/teadstest/exemplary/simple-banner.json
new file mode 100644
index 00000000000..2d9be7c7368
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-banner.json
@@ -0,0 +1,158 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/exemplary/simple-video.json b/adapters/teads/teadstest/exemplary/simple-video.json
new file mode 100644
index 00000000000..814569a47e1
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-video.json
@@ -0,0 +1,184 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json b/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json
new file mode 100644
index 00000000000..384e72fb537
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json
@@ -0,0 +1,152 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "cur": "EUR",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "does-not-match",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Imp ids were not equals",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/currency-empty-string.json b/adapters/teads/teadstest/supplemental/currency-empty-string.json
new file mode 100644
index 00000000000..5f0d700b14b
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/currency-empty-string.json
@@ -0,0 +1,185 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "cur": "EUR",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "EUR",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-impression-response.json b/adapters/teads/teadstest/supplemental/no-impression-response.json
new file mode 100644
index 00000000000..814569a47e1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-impression-response.json
@@ -0,0 +1,184 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-impression.json b/adapters/teads/teadstest/supplemental/no-impression.json
new file mode 100644
index 00000000000..7b1cdceb9e1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-impression.json
@@ -0,0 +1,12 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id"
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "No impression in the bid request",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-placementId.json b/adapters/teads/teadstest/supplemental/no-placementId.json
new file mode 100644
index 00000000000..e343bc82a34
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-placementId.json
@@ -0,0 +1,28 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id-1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {}
+ }
+ }
+ ]
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "placementId should not be 0.",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/renderer-name-empty.json b/adapters/teads/teadstest/supplemental/renderer-name-empty.json
new file mode 100644
index 00000000000..da4ee9a5094
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/renderer-name-empty.json
@@ -0,0 +1,143 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "RendererName should not be empty if present",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/renderer-version-empty.json b/adapters/teads/teadstest/supplemental/renderer-version-empty.json
new file mode 100644
index 00000000000..e9e7b278dcb
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/renderer-version-empty.json
@@ -0,0 +1,143 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "RendererVersion should not be empty if present",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/status-400.json b/adapters/teads/teadstest/supplemental/status-400.json
new file mode 100644
index 00000000000..cd9fafff0a1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/status-400.json
@@ -0,0 +1,65 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 400,
+ "body": {}
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/status-500.json b/adapters/teads/teadstest/supplemental/status-500.json
new file mode 100644
index 00000000000..337d4754006
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/status-500.json
@@ -0,0 +1,65 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 500,
+ "body": {}
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 500. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 5d06ba9ba43..d8ab16c1d61 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -159,6 +159,7 @@ import (
"github.com/prebid/prebid-server/adapters/suntContent"
"github.com/prebid/prebid-server/adapters/taboola"
"github.com/prebid/prebid-server/adapters/tappx"
+ "github.com/prebid/prebid-server/adapters/teads"
"github.com/prebid/prebid-server/adapters/telaria"
"github.com/prebid/prebid-server/adapters/tpmn"
"github.com/prebid/prebid-server/adapters/trafficgate"
@@ -363,6 +364,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderSynacormedia: imds.Builder,
openrtb_ext.BidderTaboola: taboola.Builder,
openrtb_ext.BidderTappx: tappx.Builder,
+ openrtb_ext.BidderTeads: teads.Builder,
openrtb_ext.BidderTelaria: telaria.Builder,
openrtb_ext.BidderTpmn: tpmn.Builder,
openrtb_ext.BidderTrafficGate: trafficgate.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index fd5ae176ab1..635f17cd58f 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -191,6 +191,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderSynacormedia,
BidderTaboola,
BidderTappx,
+ BidderTeads,
BidderTelaria,
BidderTpmn,
BidderTrafficGate,
@@ -481,6 +482,7 @@ const (
BidderSynacormedia BidderName = "synacormedia"
BidderTaboola BidderName = "taboola"
BidderTappx BidderName = "tappx"
+ BidderTeads BidderName = "teads"
BidderTelaria BidderName = "telaria"
BidderTpmn BidderName = "tpmn"
BidderTrafficGate BidderName = "trafficgate"
diff --git a/openrtb_ext/imp_teads.go b/openrtb_ext/imp_teads.go
new file mode 100644
index 00000000000..50d11ae9192
--- /dev/null
+++ b/openrtb_ext/imp_teads.go
@@ -0,0 +1,5 @@
+package openrtb_ext
+
+type ExtImpTeads struct {
+ PlacementID string `json:"placementId"`
+}
diff --git a/static/bidder-info/teads.yaml b/static/bidder-info/teads.yaml
new file mode 100644
index 00000000000..5dc428ddf7b
--- /dev/null
+++ b/static/bidder-info/teads.yaml
@@ -0,0 +1,9 @@
+endpoint: "https://a.teads.tv/prebid-server/bid-request"
+maintainer:
+ email: "support-sdk@teads.com"
+gvlVendorID: 132
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
\ No newline at end of file
diff --git a/static/bidder-params/teads.json b/static/bidder-params/teads.json
new file mode 100644
index 00000000000..2b3f47d8bc2
--- /dev/null
+++ b/static/bidder-params/teads.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Teads Adapter Params",
+ "description": "A schema which validates params accepted by the Teads adapter",
+
+ "type": "object",
+ "properties": {
+ "placementId": {
+ "type": "integer",
+ "description": "The placement id.",
+ "minimum": 1
+ }
+ },
+ "required": ["placementId"]
+ }
\ No newline at end of file
From dff9b3b581e66dce0ed32a3d3d3cdf83771cb984 Mon Sep 17 00:00:00 2001
From: vrtcal-dev <50931150+vrtcal-dev@users.noreply.github.com>
Date: Mon, 16 Oct 2023 05:59:02 -0500
Subject: [PATCH 03/34] Updated User Sync Support and GPP Support Flag (#3181)
Co-authored-by: Ubuntu
---
static/bidder-info/vrtcal.yaml | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/static/bidder-info/vrtcal.yaml b/static/bidder-info/vrtcal.yaml
index 2aeb292a7ed..1ce005cd223 100644
--- a/static/bidder-info/vrtcal.yaml
+++ b/static/bidder-info/vrtcal.yaml
@@ -14,7 +14,11 @@ capabilities:
- video
- native
userSync:
- # vrtcal supports user syncing, but requires configuration by the host. contact this
- # bidder directly at the email address in this file to ask about enabling user sync.
- supports:
- - redirect
+ iframe:
+ url: "https://usync.vrtcal.com/i?ssp=1804&synctype=iframe&us_privacy={{.USPrivacy}}&gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&surl={{.RedirectURL}}"
+ userMacro: "$$VRTCALUSER$$"
+ redirect:
+ url: "https://usync.vrtcal.com/i?ssp=1804&synctype=redirect&us_privacy={{.USPrivacy}}&gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&surl={{.RedirectURL}}"
+ userMacro: "$$VRTCALUSER$$"
+openrtb:
+ gpp-supported: true
From 987e640abf1bd069f7da0825c6622b30ea2d5c9e Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Mon, 16 Oct 2023 16:40:50 +0530
Subject: [PATCH 04/34] make event endpoint case insensitive (#3199)
---
endpoints/events/event.go | 8 +++++++-
endpoints/events/event_test.go | 13 +++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/endpoints/events/event.go b/endpoints/events/event.go
index d5cf89b2ef5..ffcb4e006e1 100644
--- a/endpoints/events/event.go
+++ b/endpoints/events/event.go
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
+ "github.com/prebid/prebid-server/openrtb_ext"
"net/http"
"net/url"
"strconv"
@@ -188,7 +189,12 @@ func ParseEventRequest(r *http.Request) (*analytics.EventRequest, []error) {
}
// Bidder
- event.Bidder = r.URL.Query().Get(BidderParameter)
+ bidderName := r.URL.Query().Get(BidderParameter)
+ if normalisedBidderName, ok := openrtb_ext.NormalizeBidderName(bidderName); ok {
+ bidderName = normalisedBidderName.String()
+ }
+
+ event.Bidder = bidderName
return event, errs
}
diff --git a/endpoints/events/event_test.go b/endpoints/events/event_test.go
index d721187b6ff..5fc115786fe 100644
--- a/endpoints/events/event_test.go
+++ b/endpoints/events/event_test.go
@@ -651,6 +651,19 @@ func TestShouldParseEventCorrectly(t *testing.T) {
Analytics: analytics.Enabled,
},
},
+ "case insensitive bidder name": {
+ req: httptest.NewRequest("GET", "/event?t=win&b=bidId&f=b&ts=1000&x=1&a=accountId&bidder=RubiCon&int=intType", strings.NewReader("")),
+ expected: &analytics.EventRequest{
+ Type: analytics.Win,
+ BidID: "bidId",
+ Timestamp: 1000,
+ Bidder: "rubicon",
+ AccountID: "",
+ Format: analytics.Blank,
+ Analytics: analytics.Enabled,
+ Integration: "intType",
+ },
+ },
}
for name, test := range tests {
From 05e06bb1b22f9a957813ec77fdbbe29947d5aa25 Mon Sep 17 00:00:00 2001
From: lm-ved <105272141+lm-ved@users.noreply.github.com>
Date: Mon, 16 Oct 2023 16:43:38 +0530
Subject: [PATCH 05/34] New Adapter: LemmaDigital (#3157)
Co-authored-by: Tushar Pathare
---
adapters/lemmadigital/lemmadigital.go | 114 ++++++++++++++
adapters/lemmadigital/lemmadigital_test.go | 20 +++
.../lemmadigitaltest/exemplary/banner.json | 110 +++++++++++++
.../lemmadigitaltest/exemplary/multi-imp.json | 144 ++++++++++++++++++
.../lemmadigitaltest/exemplary/video.json | 89 +++++++++++
.../supplemental/empty-imps.json | 18 +++
.../supplemental/empty-seatbid-array.json | 101 ++++++++++++
.../invalid-ld-ext-bidder-object.json | 48 ++++++
.../supplemental/invalid-ld-ext-object.json | 42 +++++
.../supplemental/invalid-response.json | 62 ++++++++
.../supplemental/status-code-bad-request.json | 62 ++++++++
.../supplemental/status-code-no-content.json | 59 +++++++
.../supplemental/status-code-other-error.json | 62 ++++++++
adapters/lemmadigital/params_test.go | 59 +++++++
exchange/adapter_builders.go | 2 +
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_lemmadigital.go | 6 +
static/bidder-info/lemmadigital.yaml | 14 ++
static/bidder-params/lemmadigital.json | 19 +++
19 files changed, 1033 insertions(+)
create mode 100644 adapters/lemmadigital/lemmadigital.go
create mode 100644 adapters/lemmadigital/lemmadigital_test.go
create mode 100644 adapters/lemmadigital/lemmadigitaltest/exemplary/banner.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/exemplary/multi-imp.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/exemplary/video.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/empty-imps.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/empty-seatbid-array.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-bidder-object.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-object.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-response.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-bad-request.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-no-content.json
create mode 100644 adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-other-error.json
create mode 100644 adapters/lemmadigital/params_test.go
create mode 100644 openrtb_ext/imp_lemmadigital.go
create mode 100644 static/bidder-info/lemmadigital.yaml
create mode 100644 static/bidder-params/lemmadigital.json
diff --git a/adapters/lemmadigital/lemmadigital.go b/adapters/lemmadigital/lemmadigital.go
new file mode 100644
index 00000000000..3b77de52984
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigital.go
@@ -0,0 +1,114 @@
+package lemmadigital
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "strconv"
+ "text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+type adapter struct {
+ endpoint *template.Template
+}
+
+// Builder builds a new instance of the Lemmadigital 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 := &adapter{
+ endpoint: template,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ if len(request.Imp) == 0 {
+ return nil, []error{errors.New("Impression array should not be empty")}
+ }
+
+ var bidderExt adapters.ExtImpBidder
+ if err := json.Unmarshal(request.Imp[0].Ext, &bidderExt); err != nil {
+ return nil, []error{&errortypes.BadInput{
+ Message: fmt.Sprintf("Invalid imp.ext for impression index %d. Error Infomation: %s", 0, err.Error()),
+ }}
+ }
+
+ var impExt openrtb_ext.ImpExtLemmaDigital
+ if err := json.Unmarshal(bidderExt.Bidder, &impExt); err != nil {
+ return nil, []error{&errortypes.BadInput{
+ Message: fmt.Sprintf("Invalid imp.ext.bidder for impression index %d. Error Infomation: %s", 0, err.Error()),
+ }}
+ }
+
+ endpoint, err := a.buildEndpointURL(impExt)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ requestJSON, err := json.Marshal(request)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ requestData := &adapters.RequestData{
+ Method: "POST",
+ Uri: endpoint,
+ Body: requestJSON,
+ }
+
+ return []*adapters.RequestData{requestData}, nil
+}
+
+func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(responseData) {
+ return nil, nil
+ }
+
+ if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
+ return nil, []error{err}
+ }
+
+ var response openrtb2.BidResponse
+ if err := json.Unmarshal(responseData.Body, &response); err != nil {
+ return nil, []error{err}
+ }
+
+ bidType := openrtb_ext.BidTypeBanner
+ if nil != request.Imp[0].Video {
+ bidType = openrtb_ext.BidTypeVideo
+ }
+
+ bidResponse := adapters.NewBidderResponseWithBidsCapacity(len(request.Imp))
+ if len(response.Cur) > 0 {
+ bidResponse.Currency = response.Cur
+ }
+ for _, seatBid := range response.SeatBid {
+ for i := range seatBid.Bid {
+ b := &adapters.TypedBid{
+ Bid: &seatBid.Bid[i],
+ BidType: bidType,
+ }
+ bidResponse.Bids = append(bidResponse.Bids, b)
+ }
+ break
+ }
+
+ return bidResponse, nil
+}
+
+func (a *adapter) buildEndpointURL(params openrtb_ext.ImpExtLemmaDigital) (string, error) {
+ endpointParams := macros.EndpointTemplateParams{PublisherID: strconv.Itoa(params.PublisherId),
+ AdUnit: strconv.Itoa(params.AdId)}
+ return macros.ResolveMacros(a.endpoint, endpointParams)
+}
diff --git a/adapters/lemmadigital/lemmadigital_test.go b/adapters/lemmadigital/lemmadigital_test.go
new file mode 100644
index 00000000000..0372fa81d6b
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigital_test.go
@@ -0,0 +1,20 @@
+package lemmadigital
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderLemmadigital, config.Adapter{
+ Endpoint: "https://sg.ads.lemmatechnologies.com/lemma/servad?pid={{.PublisherID}}&aid={{.AdUnit}}"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "lemmadigitaltest", bidder)
+}
diff --git a/adapters/lemmadigital/lemmadigitaltest/exemplary/banner.json b/adapters/lemmadigital/lemmadigitaltest/exemplary/banner.json
new file mode 100644
index 00000000000..a478380e394
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/exemplary/banner.json
@@ -0,0 +1,110 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [{
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{
+ "w": 1920,
+ "h": 1080
+ }],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.1
+ }],
+ "device": {
+ "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
+ },
+ "site": {
+ "id": "siteID",
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id",
+ "imp": [{
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{
+ "w": 1920,
+ "h": 1080
+ }],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.1
+ }],
+ "device": {
+ "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
+ },
+ "site": {
+ "id": "siteID",
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [{
+ "seat": "1",
+ "bid": [{
+ "id": "1239875642389471056",
+ "impid": "test-imp-id",
+ "price": 0.500000,
+ "adid": "1",
+ "adm": "some-test-ad",
+ "adomain": ["lemmadigital.com"],
+ "crid": "1",
+ "h": 1080,
+ "w": 1920,
+ "dealid": "test_deal"
+ }]
+ }],
+ "bidid": "1239875642389471056",
+ "cur": "USD"
+ }
+ }
+ }],
+
+ "expectedBidResponses": [{
+ "currency": "USD",
+ "bids": [{
+ "bid": {
+ "id": "1239875642389471056",
+ "impid": "test-imp-id",
+ "price": 0.5,
+ "adid": "1",
+ "adm": "some-test-ad",
+ "adomain": ["lemmadigital.com"],
+ "crid": "1",
+ "w": 1920,
+ "h": 1080,
+ "dealid": "test_deal"
+ },
+ "type": "banner"
+ }]
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/exemplary/multi-imp.json b/adapters/lemmadigital/lemmadigitaltest/exemplary/multi-imp.json
new file mode 100644
index 00000000000..e051b54ff95
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/exemplary/multi-imp.json
@@ -0,0 +1,144 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [{
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{
+ "w": 1920,
+ "h": 1080
+ }],
+ "h": 1080,
+ "w": 1920
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.1
+ }, {
+ "id": "test-imp-id-2",
+ "banner": {
+ "format": [{
+ "w": 1080,
+ "h": 1920
+ }],
+ "h": 1920,
+ "w": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.12
+ }],
+ "device": {
+ "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
+ },
+ "site": {
+ "id": "siteID",
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id",
+ "imp": [{
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{
+ "w": 1920,
+ "h": 1080
+ }],
+ "h": 1080,
+ "w": 1920
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.1
+ }, {
+ "id": "test-imp-id-2",
+ "banner": {
+ "format": [{
+ "w": 1080,
+ "h": 1920
+ }],
+ "h": 1920,
+ "w": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "bidfloor": 0.12
+ }],
+ "device": {
+ "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
+ },
+ "site": {
+ "id": "siteID",
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [{
+ "seat": "1",
+ "bid": [{
+ "id": "1239875642389471056",
+ "impid": "test-imp-id",
+ "price": 0.500000,
+ "adid": "1",
+ "adm": "some-test-ad",
+ "adomain": ["lemmadigital.com"],
+ "crid": "1",
+ "h": 1080,
+ "w": 1920,
+ "dealid": "test_deal"
+ }]
+ }],
+ "bidid": "1239875642389471056",
+ "cur": "USD"
+ }
+ }
+ }],
+
+ "expectedBidResponses": [{
+ "currency": "USD",
+ "bids": [{
+ "bid": {
+ "id": "1239875642389471056",
+ "impid": "test-imp-id",
+ "price": 0.5,
+ "adid": "1",
+ "adm": "some-test-ad",
+ "adomain": ["lemmadigital.com"],
+ "crid": "1",
+ "w": 1920,
+ "h": 1080,
+ "dealid": "test_deal"
+ },
+ "type": "banner"
+ }]
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/exemplary/video.json b/adapters/lemmadigital/lemmadigitaltest/exemplary/video.json
new file mode 100644
index 00000000000..63bab75b674
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/exemplary/video.json
@@ -0,0 +1,89 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id-video",
+ "seatbid": [{
+ "seat": "1",
+ "bid": [{
+ "id": "1239875642389471056",
+ "impid": "test-imp-id-video",
+ "price": 0.500000,
+ "adm": "some-test-ad",
+ "crid": "crid_video",
+ "h": 1080,
+ "w": 1920
+ }]
+ }],
+ "cur": "USD"
+ }
+ }
+ }],
+
+ "expectedBidResponses": [{
+ "currency": "USD",
+ "bids": [{
+ "bid": {
+ "id": "1239875642389471056",
+ "impid": "test-imp-id-video",
+ "price": 0.5,
+ "adm": "some-test-ad",
+ "crid": "crid_video",
+ "w": 1920,
+ "h": 1080
+ },
+ "type": "video"
+ }]
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-imps.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-imps.json
new file mode 100644
index 00000000000..e13cdcb480a
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-imps.json
@@ -0,0 +1,18 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [],
+ "expectedBidResponses": [],
+ "expectedMakeRequestsErrors": [{
+ "value": "Impression array should not be empty",
+ "comparison": "literal"
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-seatbid-array.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-seatbid-array.json
new file mode 100644
index 00000000000..c88e0fa7861
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/empty-seatbid-array.json
@@ -0,0 +1,101 @@
+{
+ "mockBidRequest": {
+ "app": {
+ "bundle": "com.ld.test",
+ "cat": [
+ "IAB-1"
+ ],
+ "domain": "ld.com",
+ "id": "1",
+ "name": "LD Test",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ip": "0.0.0.0",
+ "language": "en",
+ "ua": "user-agent"
+ },
+ "id": "test-request-id-video",
+ "imp": [{
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "id": "test-imp-id-video",
+ "video": {
+ "h": 1080,
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 1
+ ],
+ "w": 1920
+ }
+ }],
+ "tmax": 1000
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "app": {
+ "bundle": "com.ld.test",
+ "cat": [
+ "IAB-1"
+ ],
+ "domain": "ld.com",
+ "id": "1",
+ "name": "LD Test",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ip": "0.0.0.0",
+ "language": "en",
+ "ua": "user-agent"
+ },
+ "id": "test-request-id-video",
+ "imp": [{
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ },
+ "id": "test-imp-id-video",
+ "video": {
+ "h": 1080,
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 1
+ ],
+ "w": 1920
+ }
+ }],
+ "tmax": 1000
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-1",
+ "seatbid": [],
+ "cur": "USD"
+ }
+ }
+ }],
+ "expectedBidResponses": [{
+ "currency": "USD",
+ "bids": []
+}]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-bidder-object.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-bidder-object.json
new file mode 100644
index 00000000000..ba46d76b598
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-bidder-object.json
@@ -0,0 +1,48 @@
+{
+ "expectedMakeRequestsErrors": [{
+ "value": "Invalid imp.ext.bidder for impression index 0. Error Infomation: json: cannot unmarshal string into Go struct field ImpExtLemmaDigital.pid of type int",
+ "comparison": "literal"
+ }],
+ "mockBidRequest": {
+ "app": {
+ "bundle": "com.ld.test",
+ "cat": [
+ "IAB-1"
+ ],
+ "domain": "ld.com",
+ "id": "1",
+ "name": "LD Test",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ip": "0.0.0.0",
+ "language": "en",
+ "ua": "user-agent"
+ },
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "h": 1080,
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 1
+ ],
+ "w": 1920
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": "1"
+ }
+ }
+ }],
+ "tmax": 1000
+ },
+ "httpCalls": []
+ }
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-object.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-object.json
new file mode 100644
index 00000000000..4d3d795c185
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-ld-ext-object.json
@@ -0,0 +1,42 @@
+{
+ "expectedMakeRequestsErrors": [{
+ "value": "Invalid imp.ext for impression index 0. Error Infomation: unexpected end of JSON input",
+ "comparison": "literal"
+ }],
+ "mockBidRequest": {
+ "app": {
+ "bundle": "com.ld.test",
+ "cat": [
+ "IAB-1"
+ ],
+ "domain": "ld.com",
+ "id": "1",
+ "name": "LD Test",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ip": "0.0.0.0",
+ "language": "en",
+ "ua": "user-agent"
+ },
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "h": 1080,
+ "mimes": [
+ "video/mp4"
+ ],
+ "protocols": [
+ 1
+ ],
+ "w": 1920
+ }
+ }],
+ "tmax": 1000
+ },
+ "httpCalls": []
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-response.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-response.json
new file mode 100644
index 00000000000..036d35fb345
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/invalid-response.json
@@ -0,0 +1,62 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": ""
+ }
+ }],
+ "expectedMakeBidsErrors": [{
+ "value": "json: cannot unmarshal string into Go value of type openrtb2.BidResponse",
+ "comparison": "literal"
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-bad-request.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-bad-request.json
new file mode 100644
index 00000000000..37ebea4b7be
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-bad-request.json
@@ -0,0 +1,62 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 400
+ }
+ }],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": [{
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-no-content.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-no-content.json
new file mode 100644
index 00000000000..7c4813df43a
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-no-content.json
@@ -0,0 +1,59 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 204
+ }
+ }],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": []
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-other-error.json b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-other-error.json
new file mode 100644
index 00000000000..047dc4efd83
--- /dev/null
+++ b/adapters/lemmadigital/lemmadigitaltest/supplemental/status-code-other-error.json
@@ -0,0 +1,62 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ },
+
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://sg.ads.lemmatechnologies.com/lemma/servad?pid=1&aid=1",
+ "body": {
+ "id": "test-request-id-video",
+ "imp": [{
+ "id": "test-imp-id-video",
+ "video": {
+ "mimes": ["video/mp4"],
+ "protocols": [1],
+ "w": 1920,
+ "h": 1080
+ },
+ "ext": {
+ "bidder": {
+ "aid": 1,
+ "pid": 1
+ }
+ }
+ }],
+ "site": {
+ "publisher": {
+ "id": "1"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 503
+ }
+ }],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": [{
+ "value": "Unexpected status code: 503. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }]
+}
\ No newline at end of file
diff --git a/adapters/lemmadigital/params_test.go b/adapters/lemmadigital/params_test.go
new file mode 100644
index 00000000000..57bc7d83e79
--- /dev/null
+++ b/adapters/lemmadigital/params_test.go
@@ -0,0 +1,59 @@
+package lemmadigital
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+// Tests for static/bidder-params/lemmadigital.json
+
+// Tests whether the schema supports the intended params.
+func TestValidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json-schema. %v", err)
+ }
+
+ for _, validParam := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderLemmadigital, json.RawMessage(validParam)); err != nil {
+ t.Errorf("Schema rejected params: %s \n Error: %s", validParam, err)
+ }
+ }
+}
+
+// Tests whether the schema rejects unsupported imp.ext fields.
+func TestInvalidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json-schema. %v", err)
+ }
+
+ for _, invalidParam := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderLemmadigital, json.RawMessage(invalidParam)); err == nil {
+ t.Errorf("Schema allowed invalid/unexpected params: %s", invalidParam)
+ }
+ }
+}
+
+var validParams = []string{
+ `{"pid":1, "aid": 1}`,
+ `{"pid":2147483647, "aid": 2147483647}`,
+}
+
+var invalidParams = []string{
+ ``,
+ `null`,
+ `false`,
+ `0`,
+ `0.0`,
+ `[]`,
+ `{}`,
+ `{"pid":1}`,
+ `{"aid":1}`,
+ `{"pid":"1","aid":1}`,
+ `{"pid":1.0,"aid":"1"}`,
+ `{"pid":"1","aid":"1"}`,
+ `{"pid":false,"aid":true}`,
+}
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index d8ab16c1d61..25630fed414 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -103,6 +103,7 @@ import (
"github.com/prebid/prebid-server/adapters/kidoz"
"github.com/prebid/prebid-server/adapters/kiviads"
"github.com/prebid/prebid-server/adapters/krushmedia"
+ "github.com/prebid/prebid-server/adapters/lemmadigital"
"github.com/prebid/prebid-server/adapters/liftoff"
"github.com/prebid/prebid-server/adapters/limelightDigital"
lmkiviads "github.com/prebid/prebid-server/adapters/lm_kiviads"
@@ -304,6 +305,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderKiviads: kiviads.Builder,
openrtb_ext.BidderLmKiviads: lmkiviads.Builder,
openrtb_ext.BidderKrushmedia: krushmedia.Builder,
+ openrtb_ext.BidderLemmadigital: lemmadigital.Builder,
openrtb_ext.BidderLiftoff: liftoff.Builder,
openrtb_ext.BidderLimelightDigital: limelightDigital.Builder,
openrtb_ext.BidderLockerDome: lockerdome.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 635f17cd58f..744c7fad3fe 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -131,6 +131,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderKiviads,
BidderLmKiviads,
BidderKrushmedia,
+ BidderLemmadigital,
BidderLiftoff,
BidderLimelightDigital,
BidderLockerDome,
@@ -422,6 +423,7 @@ const (
BidderKiviads BidderName = "kiviads"
BidderLmKiviads BidderName = "lm_kiviads"
BidderKrushmedia BidderName = "krushmedia"
+ BidderLemmadigital BidderName = "lemmadigital"
BidderLiftoff BidderName = "liftoff"
BidderLimelightDigital BidderName = "limelightDigital"
BidderLockerDome BidderName = "lockerdome"
diff --git a/openrtb_ext/imp_lemmadigital.go b/openrtb_ext/imp_lemmadigital.go
new file mode 100644
index 00000000000..c691dd173d9
--- /dev/null
+++ b/openrtb_ext/imp_lemmadigital.go
@@ -0,0 +1,6 @@
+package openrtb_ext
+
+type ImpExtLemmaDigital struct {
+ PublisherId int `json:"pid"`
+ AdId int `json:"aid"`
+}
diff --git a/static/bidder-info/lemmadigital.yaml b/static/bidder-info/lemmadigital.yaml
new file mode 100644
index 00000000000..535c91ffa77
--- /dev/null
+++ b/static/bidder-info/lemmadigital.yaml
@@ -0,0 +1,14 @@
+endpoint: "https://sg.ads.lemmatechnologies.com/lemma/servad?pid={{.PublisherID}}&aid={{.AdUnit}}"
+maintainer:
+ email: support@lemmatechnologies.com
+endpointCompression: gzip
+modifyingVastXmlAllowed: true
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
+ site:
+ mediaTypes:
+ - banner
+ - video
\ No newline at end of file
diff --git a/static/bidder-params/lemmadigital.json b/static/bidder-params/lemmadigital.json
new file mode 100644
index 00000000000..be4a89edd7a
--- /dev/null
+++ b/static/bidder-params/lemmadigital.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Lemma Adapter Params",
+ "description": "A schema which validates params accepted by the Lemma adapter",
+ "type": "object",
+
+ "properties": {
+ "pid": {
+ "type": "integer",
+ "description": "Publisher ID"
+ },
+ "aid": {
+ "type": "integer",
+ "description": "Ad ID"
+ }
+ },
+
+ "required": ["pid", "aid"]
+}
\ No newline at end of file
From 2dbf6719898e4a2f041db672d4b25f09310b20e0 Mon Sep 17 00:00:00 2001
From: Irakli Gotsiridze
Date: Mon, 16 Oct 2023 15:06:51 +0300
Subject: [PATCH 06/34] minduration non-required (#3185)
---
adapters/sovrn/sovrn.go | 1 -
.../sovrn/sovrntest/video/simple-video.json | 2 -
.../videosupplemental/no-minduration.json | 49 -------------------
3 files changed, 52 deletions(-)
delete mode 100644 adapters/sovrn/sovrntest/videosupplemental/no-minduration.json
diff --git a/adapters/sovrn/sovrn.go b/adapters/sovrn/sovrn.go
index 405e5ebf763..15b07800b78 100644
--- a/adapters/sovrn/sovrn.go
+++ b/adapters/sovrn/sovrn.go
@@ -97,7 +97,6 @@ func (s *SovrnAdapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapt
video := imp.Video
if video != nil {
if video.MIMEs == nil ||
- video.MinDuration == 0 ||
video.MaxDuration == 0 ||
video.Protocols == nil {
errs = append(errs, &errortypes.BadInput{
diff --git a/adapters/sovrn/sovrntest/video/simple-video.json b/adapters/sovrn/sovrntest/video/simple-video.json
index 9cfeef5e11d..fae6778a015 100644
--- a/adapters/sovrn/sovrntest/video/simple-video.json
+++ b/adapters/sovrn/sovrntest/video/simple-video.json
@@ -10,7 +10,6 @@
"video/3gpp",
"video/x-ms-wmv"
],
- "minduration": 5,
"maxduration": 30,
"protocols": [
4,
@@ -79,7 +78,6 @@
"video/3gpp",
"video/x-ms-wmv"
],
- "minduration": 5,
"maxduration": 30,
"protocols": [
4,
diff --git a/adapters/sovrn/sovrntest/videosupplemental/no-minduration.json b/adapters/sovrn/sovrntest/videosupplemental/no-minduration.json
deleted file mode 100644
index 88703ddadc4..00000000000
--- a/adapters/sovrn/sovrntest/videosupplemental/no-minduration.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "mockBidRequest": {
- "id": "test-request-id",
- "imp": [
- {
- "id": "test-imp-id",
- "video": {
- "mimes": [
- "video/mp4",
- "video/3gpp",
- "video/x-ms-wmv"
- ],
- "maxduration": 30,
- "protocols": [
- 4,
- 5,
- 6,
- 8
- ]
- },
- "ext": {
- "bidder": {
- "tagid": "123456"
- }
- }
- }
- ],
- "device": {
- "ua": "test-user-agent",
- "ip": "123.123.123.123",
- "language": "en",
- "dnt": 0
- },
- "site": {
- "domain": "www.publisher.com",
- "page": "http://www.publisher.com/awesome/site"
- },
- "user": {
- "buyeruid": "test_reader_id"
- }
- },
- "expectedMakeRequestsErrors": [
- {
- "value": "Missing required video parameter",
- "comparison": "literal"
- }
- ],
- "httpCalls": []
-}
From c45ab815c19a7e915331c13f9ffa08bd89371ac5 Mon Sep 17 00:00:00 2001
From: Arne Schulz
Date: Mon, 16 Oct 2023 14:08:57 +0200
Subject: [PATCH 07/34] add supportCORS to orbidder user sync config (#3193)
---
static/bidder-info/orbidder.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/bidder-info/orbidder.yaml b/static/bidder-info/orbidder.yaml
index 74348c75d7f..c42fb91de44 100644
--- a/static/bidder-info/orbidder.yaml
+++ b/static/bidder-info/orbidder.yaml
@@ -11,6 +11,7 @@ capabilities:
- banner
- native
userSync:
+ supportCors: true
redirect:
url: "https://orbidder.otto.de/pbs-usersync?gdpr={{.GDPR}}&consent={{.GDPRConsent}}&redirect={{.RedirectURL}}"
userMacro: "[ODN_ID]"
\ No newline at end of file
From 9d216fb8a04bff546bf403899135d4047050262d Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Mon, 16 Oct 2023 18:41:46 +0530
Subject: [PATCH 08/34] Adapter Name Case Insensitive: /vtrack endpoint (#3196)
authored by @onkarvhanumante
---
endpoints/events/vtrack.go | 41 ++++---
endpoints/events/vtrack_test.go | 209 ++++++++++++++++++++++++--------
2 files changed, 182 insertions(+), 68 deletions(-)
diff --git a/endpoints/events/vtrack.go b/endpoints/events/vtrack.go
index d320fdc6989..e0bf3fd4be8 100644
--- a/endpoints/events/vtrack.go
+++ b/endpoints/events/vtrack.go
@@ -16,6 +16,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
"github.com/prebid/prebid-server/stored_requests"
)
@@ -27,12 +28,15 @@ const (
ImpressionOpenTag = ""
)
+type normalizeBidderName func(name string) (openrtb_ext.BidderName, bool)
+
type vtrackEndpoint struct {
- Cfg *config.Configuration
- Accounts stored_requests.AccountFetcher
- BidderInfos config.BidderInfos
- Cache prebid_cache_client.Client
- MetricsEngine metrics.MetricsEngine
+ Cfg *config.Configuration
+ Accounts stored_requests.AccountFetcher
+ BidderInfos config.BidderInfos
+ Cache prebid_cache_client.Client
+ MetricsEngine metrics.MetricsEngine
+ normalizeBidderName normalizeBidderName
}
type BidCacheRequest struct {
@@ -49,11 +53,12 @@ type CacheObject struct {
func NewVTrackEndpoint(cfg *config.Configuration, accounts stored_requests.AccountFetcher, cache prebid_cache_client.Client, bidderInfos config.BidderInfos, me metrics.MetricsEngine) httprouter.Handle {
vte := &vtrackEndpoint{
- Cfg: cfg,
- Accounts: accounts,
- BidderInfos: bidderInfos,
- Cache: cache,
- MetricsEngine: me,
+ Cfg: cfg,
+ Accounts: accounts,
+ BidderInfos: bidderInfos,
+ Cache: cache,
+ MetricsEngine: me,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
return vte.Handle
@@ -203,7 +208,7 @@ func ParseVTrackRequest(httpRequest *http.Request, maxRequestSize int64) (req *B
// handleVTrackRequest handles a VTrack request
func (v *vtrackEndpoint) handleVTrackRequest(ctx context.Context, req *BidCacheRequest, account *config.Account, integration string) (*BidCacheResponse, []error) {
- biddersAllowingVastUpdate := getBiddersAllowingVastUpdate(req, &v.BidderInfos, v.Cfg.VTrack.AllowUnknownBidder)
+ biddersAllowingVastUpdate := getBiddersAllowingVastUpdate(req, &v.BidderInfos, v.Cfg.VTrack.AllowUnknownBidder, v.normalizeBidderName)
// cache data
r, errs := v.cachePutObjects(ctx, req, biddersAllowingVastUpdate, account.ID, integration)
@@ -251,11 +256,11 @@ func (v *vtrackEndpoint) cachePutObjects(ctx context.Context, req *BidCacheReque
}
// getBiddersAllowingVastUpdate returns a list of bidders that allow VAST XML modification
-func getBiddersAllowingVastUpdate(req *BidCacheRequest, bidderInfos *config.BidderInfos, allowUnknownBidder bool) map[string]struct{} {
+func getBiddersAllowingVastUpdate(req *BidCacheRequest, bidderInfos *config.BidderInfos, allowUnknownBidder bool, normalizeBidderName normalizeBidderName) map[string]struct{} {
bl := map[string]struct{}{}
for _, bcr := range req.Puts {
- if _, ok := bl[bcr.Bidder]; isAllowVastForBidder(bcr.Bidder, bidderInfos, allowUnknownBidder) && !ok {
+ if _, ok := bl[bcr.Bidder]; isAllowVastForBidder(bcr.Bidder, bidderInfos, allowUnknownBidder, normalizeBidderName) && !ok {
bl[bcr.Bidder] = struct{}{}
}
}
@@ -264,12 +269,14 @@ func getBiddersAllowingVastUpdate(req *BidCacheRequest, bidderInfos *config.Bidd
}
// isAllowVastForBidder checks if a bidder is active and allowed to modify vast xml data
-func isAllowVastForBidder(bidder string, bidderInfos *config.BidderInfos, allowUnknownBidder bool) bool {
+func isAllowVastForBidder(bidder string, bidderInfos *config.BidderInfos, allowUnknownBidder bool, normalizeBidderName normalizeBidderName) bool {
//if bidder is active and isModifyingVastXmlAllowed is true
// check if bidder is configured
- if b, ok := (*bidderInfos)[bidder]; bidderInfos != nil && ok {
- // check if bidder is enabled
- return b.IsEnabled() && b.ModifyingVastXmlAllowed
+ if normalizedBidder, ok := normalizeBidderName(bidder); ok {
+ if b, ok := (*bidderInfos)[normalizedBidder.String()]; bidderInfos != nil && ok {
+ // check if bidder is enabled
+ return b.IsEnabled() && b.ModifyingVastXmlAllowed
+ }
}
return allowUnknownBidder
diff --git a/endpoints/events/vtrack_test.go b/endpoints/events/vtrack_test.go
index 2c40c9b41de..1e36a9e627f 100644
--- a/endpoints/events/vtrack_test.go
+++ b/endpoints/events/vtrack_test.go
@@ -13,6 +13,7 @@ import (
"testing"
"github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
"github.com/prebid/prebid-server/stored_requests"
"github.com/stretchr/testify/assert"
@@ -28,15 +29,17 @@ const (
// Mock pbs cache client
type vtrackMockCacheClient struct {
- Fail bool
- Error error
- Uuids []string
+ Fail bool
+ Error error
+ Uuids []string
+ Values []prebid_cache_client.Cacheable
}
func (m *vtrackMockCacheClient) PutJson(ctx context.Context, values []prebid_cache_client.Cacheable) ([]string, []error) {
if m.Fail {
return []string{}, []error{m.Error}
}
+ m.Values = values
return m.Uuids, []error{}
}
func (m *vtrackMockCacheClient) GetExtCacheData() (scheme string, host string, path string) {
@@ -64,10 +67,11 @@ func TestShouldRespondWithBadRequestWhenAccountParameterIsMissing(t *testing.T)
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -105,10 +109,11 @@ func TestShouldRespondWithBadRequestWhenRequestBodyIsEmpty(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -146,10 +151,11 @@ func TestShouldRespondWithBadRequestWhenRequestBodyIsInvalid(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -190,10 +196,11 @@ func TestShouldRespondWithBadRequestWhenBidIdIsMissing(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -242,10 +249,11 @@ func TestShouldRespondWithBadRequestWhenBidderIsMissing(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -291,10 +299,11 @@ func TestShouldRespondWithInternalServerErrorWhenPbsCacheClientFails(t *testing.
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -340,10 +349,11 @@ func TestShouldTolerateAccountNotFound(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -397,10 +407,11 @@ func TestShouldSendToCacheExpectedPutsAndUpdatableBiddersWhenBidderVastNotAllowe
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: bidderInfos,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: bidderInfos,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -459,11 +470,15 @@ func TestShouldSendToCacheExpectedPutsAndUpdatableBiddersWhenBidderVastAllowed(t
recorder := httptest.NewRecorder()
+ var mockNormalizeBidderName normalizeBidderName = func(name string) (openrtb_ext.BidderName, bool) {
+ return openrtb_ext.BidderName(name), true
+ }
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: bidderInfos,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: bidderInfos,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: mockNormalizeBidderName,
}
// execute
@@ -478,6 +493,95 @@ func TestShouldSendToCacheExpectedPutsAndUpdatableBiddersWhenBidderVastAllowed(t
assert.Equal(t, 200, recorder.Result().StatusCode, "Expected 200 when account is not found and request is valid")
assert.Equal(t, "{\"responses\":[{\"uuid\":\"uuid1\"},{\"uuid\":\"uuid2\"}]}", string(d), "Expected 200 when account is found and request is valid")
assert.Equal(t, "application/json", recorder.Header().Get("Content-Type"))
+ assert.Len(t, mockCacheClient.Values, 2)
+ assert.Contains(t, string(mockCacheClient.Values[0].Data), "bidder=bidder")
+ assert.Contains(t, string(mockCacheClient.Values[1].Data), "bidder=updatable_bidder")
+}
+
+func TestShouldSendToCacheExpectedPutsAndUpdatableCaseSensitiveBiddersWhenBidderVastAllowed(t *testing.T) {
+ // mock pbs cache client
+ mockCacheClient := &vtrackMockCacheClient{
+ Fail: false,
+ Uuids: []string{"uuid1", "uuid2"},
+ }
+
+ // mock AccountsFetcher
+ mockAccountsFetcher := &mockAccountsFetcher{
+ Fail: false,
+ }
+
+ // config
+ cfg := &config.Configuration{
+ MaxRequestSize: maxSize, VTrack: config.VTrack{
+ TimeoutMS: int64(2000), AllowUnknownBidder: false,
+ },
+ AccountDefaults: config.Account{},
+ }
+ cfg.MarshalAccountDefaults()
+
+ // bidder info
+ bidderInfos := make(config.BidderInfos)
+ bidderInfos["appnexus"] = config.BidderInfo{
+ Disabled: false,
+ ModifyingVastXmlAllowed: true,
+ }
+
+ d, err := getVTrackRequestData(true, true)
+ assert.NoError(t, err)
+
+ cacheReq := &BidCacheRequest{
+ Puts: []prebid_cache_client.Cacheable{
+ {
+ Type: prebid_cache_client.TypeXML,
+ BidID: "bidId1",
+ Bidder: "APPNEXUS", // case sensitive name
+ Data: d,
+ TTLSeconds: 3600,
+ Timestamp: 1000,
+ },
+ {
+ Type: prebid_cache_client.TypeXML,
+ BidID: "bidId2",
+ Bidder: "ApPnExUs", // case sensitive name
+ Data: d,
+ TTLSeconds: 3600,
+ Timestamp: 1000,
+ },
+ },
+ }
+ buf := &bytes.Buffer{}
+ enc := json.NewEncoder(buf)
+ enc.SetEscapeHTML(false)
+ err = enc.Encode(cacheReq)
+ assert.NoError(t, err)
+ data := buf.String()
+
+ req := httptest.NewRequest("POST", "/vtrack?a=events_enabled", strings.NewReader(data))
+
+ recorder := httptest.NewRecorder()
+ e := vtrackEndpoint{
+ Cfg: cfg,
+ BidderInfos: bidderInfos,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
+ }
+
+ // execute
+ e.Handle(recorder, req, nil)
+
+ d, err = io.ReadAll(recorder.Result().Body)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // validate
+ assert.Equal(t, 200, recorder.Result().StatusCode, "Expected 200 when account is not found and request is valid")
+ assert.Equal(t, "{\"responses\":[{\"uuid\":\"uuid1\"},{\"uuid\":\"uuid2\"}]}", string(d), "Expected 200 when account is found and request is valid")
+ assert.Equal(t, "application/json", recorder.Header().Get("Content-Type"))
+ assert.Len(t, mockCacheClient.Values, 2)
+ assert.Contains(t, string(mockCacheClient.Values[0].Data), "bidder=APPNEXUS")
+ assert.Contains(t, string(mockCacheClient.Values[1].Data), "bidder=ApPnExUs")
}
func TestShouldSendToCacheExpectedPutsAndUpdatableUnknownBiddersWhenUnknownBidderIsAllowed(t *testing.T) {
@@ -515,10 +619,11 @@ func TestShouldSendToCacheExpectedPutsAndUpdatableUnknownBiddersWhenUnknownBidde
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: bidderInfos,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: bidderInfos,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -571,10 +676,11 @@ func TestShouldReturnBadRequestWhenRequestExceedsMaxRequestSize(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: bidderInfos,
- Cache: mockCacheClient,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: bidderInfos,
+ Cache: mockCacheClient,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
@@ -615,10 +721,11 @@ func TestShouldRespondWithInternalErrorPbsCacheIsNotConfigured(t *testing.T) {
recorder := httptest.NewRecorder()
e := vtrackEndpoint{
- Cfg: cfg,
- BidderInfos: nil,
- Cache: nil,
- Accounts: mockAccountsFetcher,
+ Cfg: cfg,
+ BidderInfos: nil,
+ Cache: nil,
+ Accounts: mockAccountsFetcher,
+ normalizeBidderName: openrtb_ext.NormalizeBidderName,
}
// execute
From 5b44d36066dccaa378ac6dba031964ea48a576cf Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Mon, 16 Oct 2023 18:42:52 +0530
Subject: [PATCH 09/34] Prometheus metrics: bidder name should be in lowercase
(#3198)
co-authored by @onkarvhanumante
---
metrics/prometheus/preload.go | 2 +-
metrics/prometheus/prometheus.go | 33 +++++++-----
metrics/prometheus/prometheus_test.go | 73 +++++++++++++++------------
metrics/prometheus/type_conversion.go | 9 ++++
4 files changed, 71 insertions(+), 46 deletions(-)
diff --git a/metrics/prometheus/preload.go b/metrics/prometheus/preload.go
index 59f70cfb9fb..db40feabbd8 100644
--- a/metrics/prometheus/preload.go
+++ b/metrics/prometheus/preload.go
@@ -9,7 +9,7 @@ import (
func preloadLabelValues(m *Metrics, syncerKeys []string, moduleStageNames map[string][]string) {
var (
adapterErrorValues = enumAsString(metrics.AdapterErrors())
- adapterValues = enumAsString(openrtb_ext.CoreBidderNames())
+ adapterValues = enumAsLowerCaseString(openrtb_ext.CoreBidderNames())
bidTypeValues = []string{markupDeliveryAdm, markupDeliveryNurl}
boolValues = boolValuesAsString()
cacheResultValues = enumAsString(metrics.CacheResults())
diff --git a/metrics/prometheus/prometheus.go b/metrics/prometheus/prometheus.go
index 30fb6c5f774..bd63997f0d2 100644
--- a/metrics/prometheus/prometheus.go
+++ b/metrics/prometheus/prometheus.go
@@ -3,6 +3,7 @@ package prometheusmetrics
import (
"fmt"
"strconv"
+ "strings"
"time"
"github.com/prebid/prebid-server/config"
@@ -762,15 +763,16 @@ func (m *Metrics) RecordStoredDataError(labels metrics.StoredDataLabels) {
}
func (m *Metrics) RecordAdapterRequest(labels metrics.AdapterLabels) {
+ lowerCasedAdapter := strings.ToLower(string(labels.Adapter))
m.adapterRequests.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: lowerCasedAdapter,
cookieLabel: string(labels.CookieFlag),
hasBidsLabel: strconv.FormatBool(labels.AdapterBids == metrics.AdapterBidPresent),
}).Inc()
for err := range labels.AdapterErrors {
m.adapterErrors.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: lowerCasedAdapter,
adapterErrorLabel: string(err),
}).Inc()
}
@@ -779,22 +781,23 @@ func (m *Metrics) RecordAdapterRequest(labels metrics.AdapterLabels) {
// Keeps track of created and reused connections to adapter bidders and the time from the
// connection request, to the connection creation, or reuse from the pool across all engines
func (m *Metrics) RecordAdapterConnections(adapterName openrtb_ext.BidderName, connWasReused bool, connWaitTime time.Duration) {
+ lowerCasedAdapterName := strings.ToLower(string(adapterName))
if m.metricsDisabled.AdapterConnectionMetrics {
return
}
if connWasReused {
m.adapterReusedConnections.With(prometheus.Labels{
- adapterLabel: string(adapterName),
+ adapterLabel: lowerCasedAdapterName,
}).Inc()
} else {
m.adapterCreatedConnections.With(prometheus.Labels{
- adapterLabel: string(adapterName),
+ adapterLabel: lowerCasedAdapterName,
}).Inc()
}
m.adapterConnectionWaitTime.With(prometheus.Labels{
- adapterLabel: string(adapterName),
+ adapterLabel: lowerCasedAdapterName,
}).Observe(connWaitTime.Seconds())
}
@@ -812,7 +815,7 @@ func (m *Metrics) RecordBidderServerResponseTime(bidderServerResponseTime time.D
func (m *Metrics) RecordAdapterPanic(labels metrics.AdapterLabels) {
m.adapterPanics.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: strings.ToLower(string(labels.Adapter)),
}).Inc()
}
@@ -823,14 +826,14 @@ func (m *Metrics) RecordAdapterBidReceived(labels metrics.AdapterLabels, bidType
}
m.adapterBids.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: strings.ToLower(string(labels.Adapter)),
markupDeliveryLabel: markupDelivery,
}).Inc()
}
func (m *Metrics) RecordAdapterPrice(labels metrics.AdapterLabels, cpm float64) {
m.adapterPrices.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: strings.ToLower(string(labels.Adapter)),
}).Observe(cpm)
}
@@ -843,7 +846,7 @@ func (m *Metrics) RecordOverheadTime(overhead metrics.OverheadType, duration tim
func (m *Metrics) RecordAdapterTime(labels metrics.AdapterLabels, length time.Duration) {
if len(labels.AdapterErrors) == 0 {
m.adapterRequestsTimer.With(prometheus.Labels{
- adapterLabel: string(labels.Adapter),
+ adapterLabel: strings.ToLower(string(labels.Adapter)),
}).Observe(length.Seconds())
}
}
@@ -955,7 +958,7 @@ func (m *Metrics) RecordAdapterGDPRRequestBlocked(adapterName openrtb_ext.Bidder
}
m.adapterGDPRBlockedRequests.With(prometheus.Labels{
- adapterLabel: string(adapterName),
+ adapterLabel: strings.ToLower(string(adapterName)),
}).Inc()
}
@@ -975,8 +978,9 @@ func (m *Metrics) RecordAdsCertSignTime(adsCertSignTime time.Duration) {
}
func (m *Metrics) RecordBidValidationCreativeSizeError(adapter openrtb_ext.BidderName, account string) {
+ lowerCasedAdapter := strings.ToLower(string(adapter))
m.adapterBidResponseValidationSizeError.With(prometheus.Labels{
- adapterLabel: string(adapter), successLabel: successLabel,
+ adapterLabel: lowerCasedAdapter, successLabel: successLabel,
}).Inc()
if !m.metricsDisabled.AccountAdapterDetails && account != metrics.PublisherUnknown {
@@ -987,8 +991,9 @@ func (m *Metrics) RecordBidValidationCreativeSizeError(adapter openrtb_ext.Bidde
}
func (m *Metrics) RecordBidValidationCreativeSizeWarn(adapter openrtb_ext.BidderName, account string) {
+ lowerCasedAdapter := strings.ToLower(string(adapter))
m.adapterBidResponseValidationSizeWarn.With(prometheus.Labels{
- adapterLabel: string(adapter), successLabel: successLabel,
+ adapterLabel: lowerCasedAdapter, successLabel: successLabel,
}).Inc()
if !m.metricsDisabled.AccountAdapterDetails && account != metrics.PublisherUnknown {
@@ -1000,7 +1005,7 @@ func (m *Metrics) RecordBidValidationCreativeSizeWarn(adapter openrtb_ext.Bidder
func (m *Metrics) RecordBidValidationSecureMarkupError(adapter openrtb_ext.BidderName, account string) {
m.adapterBidResponseSecureMarkupError.With(prometheus.Labels{
- adapterLabel: string(adapter), successLabel: successLabel,
+ adapterLabel: strings.ToLower(string(adapter)), successLabel: successLabel,
}).Inc()
if !m.metricsDisabled.AccountAdapterDetails && account != metrics.PublisherUnknown {
@@ -1012,7 +1017,7 @@ func (m *Metrics) RecordBidValidationSecureMarkupError(adapter openrtb_ext.Bidde
func (m *Metrics) RecordBidValidationSecureMarkupWarn(adapter openrtb_ext.BidderName, account string) {
m.adapterBidResponseSecureMarkupWarn.With(prometheus.Labels{
- adapterLabel: string(adapter), successLabel: successLabel,
+ adapterLabel: strings.ToLower(string(adapter)), successLabel: successLabel,
}).Inc()
if !m.metricsDisabled.AccountAdapterDetails && account != metrics.PublisherUnknown {
diff --git a/metrics/prometheus/prometheus_test.go b/metrics/prometheus/prometheus_test.go
index e57ae5e198a..bea0087c6ea 100644
--- a/metrics/prometheus/prometheus_test.go
+++ b/metrics/prometheus/prometheus_test.go
@@ -226,18 +226,19 @@ func TestBidValidationCreativeSizeMetric(t *testing.T) {
expectedAccountCount: 0,
},
}
-
+ adapterName := openrtb_ext.BidderName("AnyName")
+ lowerCasedAdapterName := "anyname"
for _, test := range testCases {
m := createMetricsForTesting()
m.metricsDisabled.AccountAdapterDetails = test.givenAccountAdapterMetricsDisabled
- m.RecordBidValidationCreativeSizeError(adapterLabel, "acct-id")
- m.RecordBidValidationCreativeSizeWarn(adapterLabel, "acct-id")
+ m.RecordBidValidationCreativeSizeError(adapterName, "acct-id")
+ m.RecordBidValidationCreativeSizeWarn(adapterName, "acct-id")
assertCounterVecValue(t, "", "account bid validation", m.accountBidResponseValidationSizeError, test.expectedAccountCount, prometheus.Labels{accountLabel: "acct-id", successLabel: successLabel})
- assertCounterVecValue(t, "", "adapter bid validation", m.adapterBidResponseValidationSizeError, test.expectedAdapterCount, prometheus.Labels{adapterLabel: adapterLabel, successLabel: successLabel})
+ assertCounterVecValue(t, "", "adapter bid validation", m.adapterBidResponseValidationSizeError, test.expectedAdapterCount, prometheus.Labels{adapterLabel: lowerCasedAdapterName, successLabel: successLabel})
assertCounterVecValue(t, "", "account bid validation", m.accountBidResponseValidationSizeWarn, test.expectedAccountCount, prometheus.Labels{accountLabel: "acct-id", successLabel: successLabel})
- assertCounterVecValue(t, "", "adapter bid validation", m.adapterBidResponseValidationSizeWarn, test.expectedAdapterCount, prometheus.Labels{adapterLabel: adapterLabel, successLabel: successLabel})
+ assertCounterVecValue(t, "", "adapter bid validation", m.adapterBidResponseValidationSizeWarn, test.expectedAdapterCount, prometheus.Labels{adapterLabel: lowerCasedAdapterName, successLabel: successLabel})
}
}
@@ -263,17 +264,19 @@ func TestBidValidationSecureMarkupMetric(t *testing.T) {
},
}
+ adapterName := openrtb_ext.BidderName("AnyName")
+ lowerCasedAdapterName := "anyname"
for _, test := range testCases {
m := createMetricsForTesting()
m.metricsDisabled.AccountAdapterDetails = test.givenAccountAdapterMetricsDisabled
- m.RecordBidValidationSecureMarkupError(adapterLabel, "acct-id")
- m.RecordBidValidationSecureMarkupWarn(adapterLabel, "acct-id")
+ m.RecordBidValidationSecureMarkupError(adapterName, "acct-id")
+ m.RecordBidValidationSecureMarkupWarn(adapterName, "acct-id")
assertCounterVecValue(t, "", "Account Secure Markup Error", m.accountBidResponseSecureMarkupError, test.expectedAccountCount, prometheus.Labels{accountLabel: "acct-id", successLabel: successLabel})
- assertCounterVecValue(t, "", "Adapter Secure Markup Error", m.adapterBidResponseSecureMarkupError, test.expectedAdapterCount, prometheus.Labels{adapterLabel: adapterLabel, successLabel: successLabel})
+ assertCounterVecValue(t, "", "Adapter Secure Markup Error", m.adapterBidResponseSecureMarkupError, test.expectedAdapterCount, prometheus.Labels{adapterLabel: lowerCasedAdapterName, successLabel: successLabel})
assertCounterVecValue(t, "", "Account Secure Markup Warn", m.accountBidResponseSecureMarkupWarn, test.expectedAccountCount, prometheus.Labels{accountLabel: "acct-id", successLabel: successLabel})
- assertCounterVecValue(t, "", "Adapter Secure Markup Warn", m.adapterBidResponseSecureMarkupWarn, test.expectedAdapterCount, prometheus.Labels{adapterLabel: adapterLabel, successLabel: successLabel})
+ assertCounterVecValue(t, "", "Adapter Secure Markup Warn", m.adapterBidResponseSecureMarkupWarn, test.expectedAdapterCount, prometheus.Labels{adapterLabel: lowerCasedAdapterName, successLabel: successLabel})
}
}
@@ -768,10 +771,11 @@ func TestRecordStoredDataError(t *testing.T) {
}
func TestAdapterBidReceivedMetric(t *testing.T) {
- adapterName := "anyName"
+ adapterName := openrtb_ext.BidderName("anyName")
+ lowerCasedAdapterName := "anyname"
performTest := func(m *Metrics, hasAdm bool) {
labels := metrics.AdapterLabels{
- Adapter: openrtb_ext.BidderName(adapterName),
+ Adapter: adapterName,
}
bidType := openrtb_ext.BidTypeBanner
m.RecordAdapterBidReceived(labels, bidType, hasAdm)
@@ -809,13 +813,13 @@ func TestAdapterBidReceivedMetric(t *testing.T) {
assertCounterVecValue(t, test.description, "adapterBids[adm]", m.adapterBids,
test.expectedAdmCount,
prometheus.Labels{
- adapterLabel: adapterName,
+ adapterLabel: lowerCasedAdapterName,
markupDeliveryLabel: markupDeliveryAdm,
})
assertCounterVecValue(t, test.description, "adapterBids[nurl]", m.adapterBids,
test.expectedNurlCount,
prometheus.Labels{
- adapterLabel: adapterName,
+ adapterLabel: lowerCasedAdapterName,
markupDeliveryLabel: markupDeliveryNurl,
})
}
@@ -824,6 +828,7 @@ func TestAdapterBidReceivedMetric(t *testing.T) {
func TestRecordAdapterPriceMetric(t *testing.T) {
m := createMetricsForTesting()
adapterName := "anyName"
+ lowerCasedAdapterName := "anyname"
cpm := float64(42)
m.RecordAdapterPrice(metrics.AdapterLabels{
@@ -832,12 +837,13 @@ func TestRecordAdapterPriceMetric(t *testing.T) {
expectedCount := uint64(1)
expectedSum := cpm
- result := getHistogramFromHistogramVec(m.adapterPrices, adapterLabel, adapterName)
+ result := getHistogramFromHistogramVec(m.adapterPrices, adapterLabel, lowerCasedAdapterName)
assertHistogram(t, "adapterPrices", result, expectedCount, expectedSum)
}
func TestAdapterRequestMetrics(t *testing.T) {
adapterName := "anyName"
+ lowerCasedAdapterName := "anyname"
performTest := func(m *Metrics, cookieFlag metrics.CookieFlag, adapterBids metrics.AdapterBid) {
labels := metrics.AdapterLabels{
Adapter: openrtb_ext.BidderName(adapterName),
@@ -937,7 +943,7 @@ func TestAdapterRequestMetrics(t *testing.T) {
processMetrics(m.adapterRequests, func(m dto.Metric) {
isMetricForAdapter := false
for _, label := range m.GetLabel() {
- if label.GetName() == adapterLabel && label.GetValue() == adapterName {
+ if label.GetName() == adapterLabel && label.GetValue() == lowerCasedAdapterName {
isMetricForAdapter = true
}
}
@@ -974,6 +980,7 @@ func TestAdapterRequestMetrics(t *testing.T) {
func TestAdapterRequestErrorMetrics(t *testing.T) {
adapterName := "anyName"
+ lowerCasedAdapterName := "anyname"
performTest := func(m *Metrics, adapterErrors map[metrics.AdapterError]struct{}) {
labels := metrics.AdapterLabels{
Adapter: openrtb_ext.BidderName(adapterName),
@@ -1030,7 +1037,7 @@ func TestAdapterRequestErrorMetrics(t *testing.T) {
processMetrics(m.adapterErrors, func(m dto.Metric) {
isMetricForAdapter := false
for _, label := range m.GetLabel() {
- if label.GetName() == adapterLabel && label.GetValue() == adapterName {
+ if label.GetName() == adapterLabel && label.GetValue() == lowerCasedAdapterName {
isMetricForAdapter = true
}
}
@@ -1052,6 +1059,7 @@ func TestAdapterRequestErrorMetrics(t *testing.T) {
func TestAdapterTimeMetric(t *testing.T) {
adapterName := "anyName"
+ lowerCasedAdapterName := "anyname"
performTest := func(m *Metrics, timeInMs float64, adapterErrors map[metrics.AdapterError]struct{}) {
m.RecordAdapterTime(metrics.AdapterLabels{
Adapter: openrtb_ext.BidderName(adapterName),
@@ -1090,24 +1098,24 @@ func TestAdapterTimeMetric(t *testing.T) {
test.testCase(m)
- result := getHistogramFromHistogramVec(m.adapterRequestsTimer, adapterLabel, adapterName)
+ result := getHistogramFromHistogramVec(m.adapterRequestsTimer, adapterLabel, lowerCasedAdapterName)
assertHistogram(t, test.description, result, test.expectedCount, test.expectedSum)
}
}
func TestAdapterPanicMetric(t *testing.T) {
m := createMetricsForTesting()
- adapterName := "anyName"
-
+ adapterName := openrtb_ext.BidderName("anyName")
+ lowerCasedAdapterName := "anyname"
m.RecordAdapterPanic(metrics.AdapterLabels{
- Adapter: openrtb_ext.BidderName(adapterName),
+ Adapter: adapterName,
})
expectedCount := float64(1)
assertCounterVecValue(t, "", "adapterPanics", m.adapterPanics,
expectedCount,
prometheus.Labels{
- adapterLabel: adapterName,
+ adapterLabel: lowerCasedAdapterName,
})
}
@@ -1509,6 +1517,8 @@ func TestRecordBidderServerResponseTime(t *testing.T) {
}
func TestRecordAdapterConnections(t *testing.T) {
+ adapterName := openrtb_ext.BidderName("Adapter")
+ lowerCasedAdapterName := "adapter"
type testIn struct {
adapterName openrtb_ext.BidderName
@@ -1531,7 +1541,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "[1] Successful, new connection created, was idle, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: adapterName,
connWasReused: false,
connWait: time.Second * 5,
},
@@ -1545,7 +1555,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "[2] Successful, new connection created, not idle, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: adapterName,
connWasReused: false,
connWait: time.Second * 4,
},
@@ -1559,7 +1569,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "[3] Successful, was reused, was idle, no connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: adapterName,
connWasReused: true,
},
out: testOut{
@@ -1572,7 +1582,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "[4] Successful, was reused, not idle, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: adapterName,
connWasReused: true,
connWait: time.Second * 5,
},
@@ -1602,7 +1612,7 @@ func TestRecordAdapterConnections(t *testing.T) {
"adapter_connection_reused",
m.adapterReusedConnections,
float64(test.out.expectedConnReusedCount),
- prometheus.Labels{adapterLabel: string(test.in.adapterName)})
+ prometheus.Labels{adapterLabel: lowerCasedAdapterName})
// Assert number of new created connections
assertCounterVecValue(t,
@@ -1610,10 +1620,10 @@ func TestRecordAdapterConnections(t *testing.T) {
"adapter_connection_created",
m.adapterCreatedConnections,
float64(test.out.expectedConnCreatedCount),
- prometheus.Labels{adapterLabel: string(test.in.adapterName)})
+ prometheus.Labels{adapterLabel: lowerCasedAdapterName})
// Assert connection wait time
- histogram := getHistogramFromHistogramVec(m.adapterConnectionWaitTime, adapterLabel, string(test.in.adapterName))
+ histogram := getHistogramFromHistogramVec(m.adapterConnectionWaitTime, adapterLabel, lowerCasedAdapterName)
assert.Equal(t, test.out.expectedConnWaitCount, histogram.GetSampleCount(), assertDesciptions[2])
assert.Equal(t, test.out.expectedConnWaitTime, histogram.GetSampleSum(), assertDesciptions[3])
}
@@ -1781,8 +1791,9 @@ func assertHistogram(t *testing.T, name string, histogram dto.Histogram, expecte
func TestRecordAdapterGDPRRequestBlocked(t *testing.T) {
m := createMetricsForTesting()
-
- m.RecordAdapterGDPRRequestBlocked(openrtb_ext.BidderAppnexus)
+ adapterName := openrtb_ext.BidderName("AnyName")
+ lowerCasedAdapterName := "anyname"
+ m.RecordAdapterGDPRRequestBlocked(adapterName)
assertCounterVecValue(t,
"Increment adapter GDPR request blocked counter",
@@ -1790,7 +1801,7 @@ func TestRecordAdapterGDPRRequestBlocked(t *testing.T) {
m.adapterGDPRBlockedRequests,
1,
prometheus.Labels{
- adapterLabel: string(openrtb_ext.BidderAppnexus),
+ adapterLabel: lowerCasedAdapterName,
})
}
diff --git a/metrics/prometheus/type_conversion.go b/metrics/prometheus/type_conversion.go
index 0ae5366b3f7..9bf2ec94a08 100644
--- a/metrics/prometheus/type_conversion.go
+++ b/metrics/prometheus/type_conversion.go
@@ -2,6 +2,7 @@ package prometheusmetrics
import (
"strconv"
+ "strings"
)
func enumAsString[T ~string](values []T) []string {
@@ -12,6 +13,14 @@ func enumAsString[T ~string](values []T) []string {
return valuesAsString
}
+func enumAsLowerCaseString[T ~string](values []T) []string {
+ valuesAsString := make([]string, len(values))
+ for i, v := range values {
+ valuesAsString[i] = strings.ToLower(string(v))
+ }
+ return valuesAsString
+}
+
func boolValuesAsString() []string {
return []string{
strconv.FormatBool(true),
From 6c6aa9ac75bc99deef78fa5870307cf1e04dd22c Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Mon, 16 Oct 2023 18:43:30 +0530
Subject: [PATCH 10/34] InfluxDB metrics : bidder name should be in lowercase
(#3209)
co-authored by @onkarvhanumante
---
metrics/config/metrics_test.go | 14 +-
metrics/go_metrics.go | 87 +++++----
metrics/go_metrics_test.go | 253 ++++++++++++++++++++------
metrics/metrics.go | 1 +
metrics/prometheus/prometheus_test.go | 2 +-
5 files changed, 259 insertions(+), 98 deletions(-)
diff --git a/metrics/config/metrics_test.go b/metrics/config/metrics_test.go
index f77dcf005d8..1eae1a25545 100644
--- a/metrics/config/metrics_test.go
+++ b/metrics/config/metrics_test.go
@@ -2,6 +2,7 @@ package config
import (
"fmt"
+ "strings"
"testing"
"time"
@@ -168,13 +169,14 @@ func TestMultiMetricsEngine(t *testing.T) {
VerifyMetrics(t, "Request", goEngine.RequestStatuses[metrics.ReqTypeORTB2Web][metrics.RequestStatusOK].Count(), 5)
VerifyMetrics(t, "ImpMeter", goEngine.ImpMeter.Count(), 8)
VerifyMetrics(t, "NoCookieMeter", goEngine.NoCookieMeter.Count(), 0)
- VerifyMetrics(t, "AdapterMetrics.Pubmatic.GotBidsMeter", goEngine.AdapterMetrics[openrtb_ext.BidderPubmatic].GotBidsMeter.Count(), 5)
- VerifyMetrics(t, "AdapterMetrics.Pubmatic.NoBidMeter", goEngine.AdapterMetrics[openrtb_ext.BidderPubmatic].NoBidMeter.Count(), 0)
+
+ VerifyMetrics(t, "AdapterMetrics.pubmatic.GotBidsMeter", goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderPubmatic))].GotBidsMeter.Count(), 5)
+ VerifyMetrics(t, "AdapterMetrics.pubmatic.NoBidMeter", goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderPubmatic))].NoBidMeter.Count(), 0)
for _, err := range metrics.AdapterErrors() {
- VerifyMetrics(t, "AdapterMetrics.Pubmatic.Request.ErrorMeter."+string(err), goEngine.AdapterMetrics[openrtb_ext.BidderPubmatic].ErrorMeters[err].Count(), 0)
+ VerifyMetrics(t, "AdapterMetrics.pubmatic.Request.ErrorMeter."+string(err), goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderPubmatic))].ErrorMeters[err].Count(), 0)
}
- VerifyMetrics(t, "AdapterMetrics.AppNexus.GotBidsMeter", goEngine.AdapterMetrics[openrtb_ext.BidderAppnexus].GotBidsMeter.Count(), 0)
- VerifyMetrics(t, "AdapterMetrics.AppNexus.NoBidMeter", goEngine.AdapterMetrics[openrtb_ext.BidderAppnexus].NoBidMeter.Count(), 5)
+ VerifyMetrics(t, "AdapterMetrics.appnexus.GotBidsMeter", goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderAppnexus))].GotBidsMeter.Count(), 0)
+ VerifyMetrics(t, "AdapterMetrics.appnexus.NoBidMeter", goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderAppnexus))].NoBidMeter.Count(), 5)
VerifyMetrics(t, "RecordRequestQueueTime.Video.Rejected", goEngine.RequestsQueueTimer[metrics.ReqTypeVideo][false].Count(), 1)
VerifyMetrics(t, "RecordRequestQueueTime.Video.Accepted", goEngine.RequestsQueueTimer[metrics.ReqTypeVideo][true].Count(), 0)
@@ -186,7 +188,7 @@ func TestMultiMetricsEngine(t *testing.T) {
VerifyMetrics(t, "StoredImpCache.Hit", goEngine.StoredImpCacheMeter[metrics.CacheHit].Count(), 5)
VerifyMetrics(t, "AccountCache.Hit", goEngine.AccountCacheMeter[metrics.CacheHit].Count(), 6)
- VerifyMetrics(t, "AdapterMetrics.AppNexus.GDPRRequestBlocked", goEngine.AdapterMetrics[openrtb_ext.BidderAppnexus].GDPRRequestBlocked.Count(), 1)
+ VerifyMetrics(t, "AdapterMetrics.appNexus.GDPRRequestBlocked", goEngine.AdapterMetrics[strings.ToLower(string(openrtb_ext.BidderAppnexus))].GDPRRequestBlocked.Count(), 1)
// verify that each module has its own metric recorded
for module, stages := range modulesStages {
diff --git a/metrics/go_metrics.go b/metrics/go_metrics.go
index 0d60a7009d9..13cc022c9c8 100644
--- a/metrics/go_metrics.go
+++ b/metrics/go_metrics.go
@@ -2,6 +2,7 @@ package metrics
import (
"fmt"
+ "strings"
"sync"
"time"
@@ -62,12 +63,13 @@ type Metrics struct {
PrivacyLMTRequest metrics.Meter
PrivacyTCFRequestVersion map[TCFVersionValue]metrics.Meter
- AdapterMetrics map[openrtb_ext.BidderName]*AdapterMetrics
+ AdapterMetrics map[string]*AdapterMetrics
// Don't export accountMetrics because we need helper functions here to insure its properly populated dynamically
accountMetrics map[string]*accountMetrics
accountMetricsRWMutex sync.RWMutex
- exchanges []openrtb_ext.BidderName
+ // adapter name exchanges
+ exchanges []string
modules []string
// Will hold boolean values to help us disable metric collection if needed
MetricsDisabled config.DisabledMetrics
@@ -117,7 +119,7 @@ type accountMetrics struct {
bidsReceivedMeter metrics.Meter
priceHistogram metrics.Histogram
// store account by adapter metrics. Type is map[PBSBidder.BidderCode]
- adapterMetrics map[openrtb_ext.BidderName]*AdapterMetrics
+ adapterMetrics map[string]*AdapterMetrics
moduleMetrics map[string]*ModuleMetrics
storedResponsesMeter metrics.Meter
@@ -145,7 +147,7 @@ type ModuleMetrics struct {
// rather than loading metrics that never get filled.
// This will also eventually let us configure metrics, such as setting a limited set of metrics
// for a production instance, and then expanding again when we need more debugging.
-func NewBlankMetrics(registry metrics.Registry, exchanges []openrtb_ext.BidderName, disabledMetrics config.DisabledMetrics, moduleStageNames map[string][]string) *Metrics {
+func NewBlankMetrics(registry metrics.Registry, exchanges []string, disabledMetrics config.DisabledMetrics, moduleStageNames map[string][]string) *Metrics {
blankMeter := &metrics.NilMeter{}
blankTimer := &metrics.NilTimer{}
@@ -193,7 +195,7 @@ func NewBlankMetrics(registry metrics.Registry, exchanges []openrtb_ext.BidderNa
PrivacyLMTRequest: blankMeter,
PrivacyTCFRequestVersion: make(map[TCFVersionValue]metrics.Meter, len(TCFVersions())),
- AdapterMetrics: make(map[openrtb_ext.BidderName]*AdapterMetrics, len(exchanges)),
+ AdapterMetrics: make(map[string]*AdapterMetrics, len(exchanges)),
accountMetrics: make(map[string]*accountMetrics),
MetricsDisabled: disabledMetrics,
@@ -272,7 +274,11 @@ func getModuleNames(moduleStageNames map[string][]string) []string {
// mode metrics. The code would allways try to record the metrics, but effectively noop if we are
// using a blank meter/timer.
func NewMetrics(registry metrics.Registry, exchanges []openrtb_ext.BidderName, disableAccountMetrics config.DisabledMetrics, syncerKeys []string, moduleStageNames map[string][]string) *Metrics {
- newMetrics := NewBlankMetrics(registry, exchanges, disableAccountMetrics, moduleStageNames)
+ lowerCaseExchanges := []string{}
+ for _, exchange := range exchanges {
+ lowerCaseExchanges = append(lowerCaseExchanges, strings.ToLower(string(exchange)))
+ }
+ newMetrics := NewBlankMetrics(registry, lowerCaseExchanges, disableAccountMetrics, moduleStageNames)
newMetrics.ConnectionCounter = metrics.GetOrRegisterCounter("active_connections", registry)
newMetrics.TMaxTimeoutCounter = metrics.GetOrRegisterCounter("tmax_timeout", registry)
newMetrics.ConnectionAcceptErrorMeter = metrics.GetOrRegisterMeter("connection_accept_errors", registry)
@@ -331,7 +337,7 @@ func NewMetrics(registry metrics.Registry, exchanges []openrtb_ext.BidderName, d
}
}
- for _, a := range exchanges {
+ for _, a := range lowerCaseExchanges {
registerAdapterMetrics(registry, "adapter", string(a), newMetrics.AdapterMetrics[a])
}
@@ -546,7 +552,7 @@ func (me *Metrics) getAccountMetrics(id string) *accountMetrics {
am.debugRequestMeter = metrics.GetOrRegisterMeter(fmt.Sprintf("account.%s.debug_requests", id), me.MetricsRegistry)
am.bidsReceivedMeter = metrics.GetOrRegisterMeter(fmt.Sprintf("account.%s.bids_received", id), me.MetricsRegistry)
am.priceHistogram = metrics.GetOrRegisterHistogram(fmt.Sprintf("account.%s.prices", id), me.MetricsRegistry, metrics.NewExpDecaySample(1028, 0.015))
- am.adapterMetrics = make(map[openrtb_ext.BidderName]*AdapterMetrics, len(me.exchanges))
+ am.adapterMetrics = make(map[string]*AdapterMetrics, len(me.exchanges))
am.moduleMetrics = make(map[string]*ModuleMetrics)
am.storedResponsesMeter = metrics.GetOrRegisterMeter(fmt.Sprintf("account.%s.stored_responses", id), me.MetricsRegistry)
if !me.MetricsDisabled.AccountAdapterDetails {
@@ -670,9 +676,11 @@ func (me *Metrics) RecordStoredDataError(labels StoredDataLabels) {
// RecordAdapterPanic implements a part of the MetricsEngine interface
func (me *Metrics) RecordAdapterPanic(labels AdapterLabels) {
- am, ok := me.AdapterMetrics[labels.Adapter]
+ adapterStr := string(labels.Adapter)
+ lowerCaseAdapterName := strings.ToLower(adapterStr)
+ am, ok := me.AdapterMetrics[lowerCaseAdapterName]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(labels.Adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
am.PanicMeter.Mark(1)
@@ -680,13 +688,15 @@ func (me *Metrics) RecordAdapterPanic(labels AdapterLabels) {
// RecordAdapterRequest implements a part of the MetricsEngine interface
func (me *Metrics) RecordAdapterRequest(labels AdapterLabels) {
- am, ok := me.AdapterMetrics[labels.Adapter]
+ adapterStr := string(labels.Adapter)
+ lowerCaseAdapter := strings.ToLower(adapterStr)
+ am, ok := me.AdapterMetrics[lowerCaseAdapter]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(labels.Adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
- aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[labels.Adapter]
+ aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[lowerCaseAdapter]
switch labels.AdapterBids {
case AdapterBidNone:
am.NoBidMeter.Mark(1)
@@ -719,8 +729,8 @@ func (me *Metrics) RecordAdapterConnections(adapterName openrtb_ext.BidderName,
if me.MetricsDisabled.AdapterConnectionMetrics {
return
}
-
- am, ok := me.AdapterMetrics[adapterName]
+ lowerCaseAdapterName := strings.ToLower(string(adapterName))
+ am, ok := me.AdapterMetrics[lowerCaseAdapterName]
if !ok {
glog.Errorf("Trying to log adapter connection metrics for %s: adapter not found", string(adapterName))
return
@@ -749,16 +759,18 @@ func (me *Metrics) RecordBidderServerResponseTime(bidderServerResponseTime time.
// RecordAdapterBidReceived implements a part of the MetricsEngine interface.
// This tracks how many bids from each Bidder use `adm` vs. `nurl.
func (me *Metrics) RecordAdapterBidReceived(labels AdapterLabels, bidType openrtb_ext.BidType, hasAdm bool) {
- am, ok := me.AdapterMetrics[labels.Adapter]
+ adapterStr := string(labels.Adapter)
+ lowerCaseAdapterName := strings.ToLower(adapterStr)
+ am, ok := me.AdapterMetrics[lowerCaseAdapterName]
if !ok {
- glog.Errorf("Trying to run adapter bid metrics on %s: adapter metrics not found", string(labels.Adapter))
+ glog.Errorf("Trying to run adapter bid metrics on %s: adapter metrics not found", adapterStr)
return
}
// Adapter metrics
am.BidsReceivedMeter.Mark(1)
// Account-Adapter metrics
- if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[labels.Adapter]; ok {
+ if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[lowerCaseAdapterName]; ok {
aam.BidsReceivedMeter.Mark(1)
}
@@ -775,22 +787,26 @@ func (me *Metrics) RecordAdapterBidReceived(labels AdapterLabels, bidType openrt
// RecordAdapterPrice implements a part of the MetricsEngine interface. Generates a histogram of winning bid prices
func (me *Metrics) RecordAdapterPrice(labels AdapterLabels, cpm float64) {
- am, ok := me.AdapterMetrics[labels.Adapter]
+ adapterStr := string(labels.Adapter)
+ lowercaseAdapter := strings.ToLower(adapterStr)
+ am, ok := me.AdapterMetrics[lowercaseAdapter]
if !ok {
- glog.Errorf("Trying to run adapter price metrics on %s: adapter metrics not found", string(labels.Adapter))
+ glog.Errorf("Trying to run adapter price metrics on %s: adapter metrics not found", adapterStr)
return
}
// Adapter metrics
am.PriceHistogram.Update(int64(cpm))
// Account-Adapter metrics
- if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[labels.Adapter]; ok {
+ if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[lowercaseAdapter]; ok {
aam.PriceHistogram.Update(int64(cpm))
}
}
// RecordAdapterTime implements a part of the MetricsEngine interface. Records the adapter response time
func (me *Metrics) RecordAdapterTime(labels AdapterLabels, length time.Duration) {
- am, ok := me.AdapterMetrics[labels.Adapter]
+ adapterStr := string(labels.Adapter)
+ lowercaseAdapter := strings.ToLower(adapterStr)
+ am, ok := me.AdapterMetrics[lowercaseAdapter]
if !ok {
glog.Errorf("Trying to run adapter latency metrics on %s: adapter metrics not found", string(labels.Adapter))
return
@@ -798,7 +814,7 @@ func (me *Metrics) RecordAdapterTime(labels AdapterLabels, length time.Duration)
// Adapter metrics
am.RequestTimer.Update(length)
// Account-Adapter metrics
- if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[labels.Adapter]; ok {
+ if aam, ok := me.getAccountMetrics(labels.PubID).adapterMetrics[lowercaseAdapter]; ok {
aam.RequestTimer.Update(length)
}
}
@@ -911,13 +927,14 @@ func (me *Metrics) RecordRequestPrivacy(privacy PrivacyLabels) {
}
func (me *Metrics) RecordAdapterGDPRRequestBlocked(adapterName openrtb_ext.BidderName) {
+ adapterStr := string(adapterName)
if me.MetricsDisabled.AdapterGDPRRequestBlocked {
return
}
- am, ok := me.AdapterMetrics[adapterName]
+ am, ok := me.AdapterMetrics[strings.ToLower(adapterStr)]
if !ok {
- glog.Errorf("Trying to log adapter GDPR request blocked metric for %s: adapter not found", string(adapterName))
+ glog.Errorf("Trying to log adapter GDPR request blocked metric for %s: adapter not found", adapterStr)
return
}
@@ -937,9 +954,10 @@ func (me *Metrics) RecordAdsCertSignTime(adsCertSignTime time.Duration) {
}
func (me *Metrics) RecordBidValidationCreativeSizeError(adapter openrtb_ext.BidderName, pubID string) {
- am, ok := me.AdapterMetrics[adapter]
+ adapterStr := string(adapter)
+ am, ok := me.AdapterMetrics[strings.ToLower(adapterStr)]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
am.BidValidationCreativeSizeErrorMeter.Mark(1)
@@ -951,9 +969,10 @@ func (me *Metrics) RecordBidValidationCreativeSizeError(adapter openrtb_ext.Bidd
}
func (me *Metrics) RecordBidValidationCreativeSizeWarn(adapter openrtb_ext.BidderName, pubID string) {
- am, ok := me.AdapterMetrics[adapter]
+ adapterStr := string(adapter)
+ am, ok := me.AdapterMetrics[strings.ToLower(adapterStr)]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
am.BidValidationCreativeSizeWarnMeter.Mark(1)
@@ -965,9 +984,10 @@ func (me *Metrics) RecordBidValidationCreativeSizeWarn(adapter openrtb_ext.Bidde
}
func (me *Metrics) RecordBidValidationSecureMarkupError(adapter openrtb_ext.BidderName, pubID string) {
- am, ok := me.AdapterMetrics[adapter]
+ adapterStr := string(adapter)
+ am, ok := me.AdapterMetrics[strings.ToLower(adapterStr)]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
am.BidValidationSecureMarkupErrorMeter.Mark(1)
@@ -979,9 +999,10 @@ func (me *Metrics) RecordBidValidationSecureMarkupError(adapter openrtb_ext.Bidd
}
func (me *Metrics) RecordBidValidationSecureMarkupWarn(adapter openrtb_ext.BidderName, pubID string) {
- am, ok := me.AdapterMetrics[adapter]
+ adapterStr := string(adapter)
+ am, ok := me.AdapterMetrics[strings.ToLower(adapterStr)]
if !ok {
- glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", string(adapter))
+ glog.Errorf("Trying to run adapter metrics on %s: adapter metrics not found", adapterStr)
return
}
am.BidValidationSecureMarkupWarnMeter.Mark(1)
diff --git a/metrics/go_metrics_test.go b/metrics/go_metrics_test.go
index 8acd1923a85..08ee65f52ac 100644
--- a/metrics/go_metrics_test.go
+++ b/metrics/go_metrics_test.go
@@ -15,15 +15,15 @@ func TestNewMetrics(t *testing.T) {
registry := metrics.NewRegistry()
syncerKeys := []string{"foo"}
moduleStageNames := map[string][]string{"foobar": {"entry", "raw"}, "another_module": {"raw", "auction"}}
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{}, syncerKeys, moduleStageNames)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Adapter1"), openrtb_ext.BidderName("Adapter2")}, config.DisabledMetrics{}, syncerKeys, moduleStageNames)
ensureContains(t, registry, "app_requests", m.AppRequestMeter)
ensureContains(t, registry, "debug_requests", m.DebugRequestMeter)
ensureContains(t, registry, "no_cookie_requests", m.NoCookieMeter)
ensureContains(t, registry, "request_time", m.RequestTimer)
ensureContains(t, registry, "amp_no_cookie_requests", m.AmpNoCookieMeter)
- ensureContainsAdapterMetrics(t, registry, "adapter.appnexus", m.AdapterMetrics["appnexus"])
- ensureContainsAdapterMetrics(t, registry, "adapter.rubicon", m.AdapterMetrics["rubicon"])
+ ensureContainsAdapterMetrics(t, registry, "adapter.adapter1", m.AdapterMetrics["adapter1"])
+ ensureContainsAdapterMetrics(t, registry, "adapter.adapter2", m.AdapterMetrics["adapter2"])
ensureContains(t, registry, "cookie_sync_requests", m.CookieSyncMeter)
ensureContains(t, registry, "cookie_sync_requests.ok", m.CookieSyncStatusMeter[CookieSyncOK])
ensureContains(t, registry, "cookie_sync_requests.bad_request", m.CookieSyncStatusMeter[CookieSyncBadRequest])
@@ -95,19 +95,21 @@ func TestNewMetrics(t *testing.T) {
func TestRecordBidType(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{}, nil, nil)
+ adapterName := "FOO"
+ lowerCaseAdapterName := "foo"
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapterName)}, config.DisabledMetrics{}, nil, nil)
m.RecordAdapterBidReceived(AdapterLabels{
- Adapter: openrtb_ext.BidderAppnexus,
+ Adapter: openrtb_ext.BidderName(adapterName),
}, openrtb_ext.BidTypeBanner, true)
- VerifyMetrics(t, "Appnexus Banner Adm Bids", m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[openrtb_ext.BidTypeBanner].AdmMeter.Count(), 1)
- VerifyMetrics(t, "Appnexus Banner Nurl Bids", m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[openrtb_ext.BidTypeBanner].NurlMeter.Count(), 0)
+ VerifyMetrics(t, "foo Banner Adm Bids", m.AdapterMetrics[lowerCaseAdapterName].MarkupMetrics[openrtb_ext.BidTypeBanner].AdmMeter.Count(), 1)
+ VerifyMetrics(t, "foo Banner Nurl Bids", m.AdapterMetrics[lowerCaseAdapterName].MarkupMetrics[openrtb_ext.BidTypeBanner].NurlMeter.Count(), 0)
m.RecordAdapterBidReceived(AdapterLabels{
- Adapter: openrtb_ext.BidderAppnexus,
+ Adapter: openrtb_ext.BidderName(adapterName),
}, openrtb_ext.BidTypeVideo, false)
- VerifyMetrics(t, "Appnexus Video Adm Bids", m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[openrtb_ext.BidTypeVideo].AdmMeter.Count(), 0)
- VerifyMetrics(t, "Appnexus Video Nurl Bids", m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[openrtb_ext.BidTypeVideo].NurlMeter.Count(), 1)
+ VerifyMetrics(t, "foo Video Adm Bids", m.AdapterMetrics[lowerCaseAdapterName].MarkupMetrics[openrtb_ext.BidTypeVideo].AdmMeter.Count(), 0)
+ VerifyMetrics(t, "foo Video Nurl Bids", m.AdapterMetrics[lowerCaseAdapterName].MarkupMetrics[openrtb_ext.BidTypeVideo].NurlMeter.Count(), 1)
}
func ensureContains(t *testing.T, registry metrics.Registry, name string, metric interface{}) {
@@ -198,17 +200,19 @@ func TestRecordBidTypeDisabledConfig(t *testing.T) {
PubID: "acct-id",
},
}
-
+ adapter := "AnyName"
+ lowerCaseAdapter := "anyname"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, test.DisabledMetrics, nil, nil)
+
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, test.DisabledMetrics, nil, nil)
m.RecordAdapterBidReceived(AdapterLabels{
- Adapter: openrtb_ext.BidderAppnexus,
+ Adapter: openrtb_ext.BidderName(adapter),
PubID: test.PubID,
}, test.BidType, test.hasAdm)
- assert.Equal(t, test.ExpectedAdmMeterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[test.BidType].AdmMeter.Count(), "Appnexus Banner Adm Bids")
- assert.Equal(t, test.ExpectedNurlMeterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].MarkupMetrics[test.BidType].NurlMeter.Count(), "Appnexus Banner Nurl Bids")
+ assert.Equal(t, test.ExpectedAdmMeterCount, m.AdapterMetrics[lowerCaseAdapter].MarkupMetrics[test.BidType].AdmMeter.Count(), "AnyName Banner Adm Bids")
+ assert.Equal(t, test.ExpectedNurlMeterCount, m.AdapterMetrics[lowerCaseAdapter].MarkupMetrics[test.BidType].NurlMeter.Count(), "AnyName Banner Nurl Bids")
if test.DisabledMetrics.AccountAdapterDetails {
assert.Len(t, m.accountMetrics[test.PubID].adapterMetrics, 0, "Test failed. Account metrics that contain adapter information are disabled, therefore we expect no entries in m.accountMetrics[accountId].adapterMetrics, we have %d \n", len(m.accountMetrics[test.PubID].adapterMetrics))
@@ -272,9 +276,10 @@ func TestRecordDebugRequest(t *testing.T) {
expectedDebugCount: 0,
},
}
+ adapter := "AnyName"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, test.givenDisabledMetrics, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, test.givenDisabledMetrics, nil, nil)
m.RecordDebugRequest(test.givenDebugEnabledFlag, test.givenPubID)
am := m.getAccountMetrics(test.givenPubID)
@@ -311,16 +316,18 @@ func TestRecordBidValidationCreativeSize(t *testing.T) {
expectedAccountCount: 0,
},
}
+ adapter := "AnyName"
+ lowerCaseAdapter := "anyname"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, test.givenDisabledMetrics, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, test.givenDisabledMetrics, nil, nil)
- m.RecordBidValidationCreativeSizeError(openrtb_ext.BidderAppnexus, test.givenPubID)
- m.RecordBidValidationCreativeSizeWarn(openrtb_ext.BidderAppnexus, test.givenPubID)
+ m.RecordBidValidationCreativeSizeError(openrtb_ext.BidderName(adapter), test.givenPubID)
+ m.RecordBidValidationCreativeSizeWarn(openrtb_ext.BidderName(adapter), test.givenPubID)
am := m.getAccountMetrics(test.givenPubID)
- assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].BidValidationCreativeSizeErrorMeter.Count())
- assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].BidValidationCreativeSizeWarnMeter.Count())
+ assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[lowerCaseAdapter].BidValidationCreativeSizeErrorMeter.Count())
+ assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[lowerCaseAdapter].BidValidationCreativeSizeWarnMeter.Count())
assert.Equal(t, test.expectedAccountCount, am.bidValidationCreativeSizeMeter.Count())
assert.Equal(t, test.expectedAccountCount, am.bidValidationCreativeSizeWarnMeter.Count())
}
@@ -353,16 +360,18 @@ func TestRecordBidValidationSecureMarkup(t *testing.T) {
expectedAccountCount: 0,
},
}
+ adapter := "AnyName"
+ lowerCaseAdapter := "anyname"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, test.givenDisabledMetrics, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, test.givenDisabledMetrics, nil, nil)
- m.RecordBidValidationSecureMarkupError(openrtb_ext.BidderAppnexus, test.givenPubID)
- m.RecordBidValidationSecureMarkupWarn(openrtb_ext.BidderAppnexus, test.givenPubID)
+ m.RecordBidValidationSecureMarkupError(openrtb_ext.BidderName(adapter), test.givenPubID)
+ m.RecordBidValidationSecureMarkupWarn(openrtb_ext.BidderName(adapter), test.givenPubID)
am := m.getAccountMetrics(test.givenPubID)
- assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].BidValidationSecureMarkupErrorMeter.Count())
- assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].BidValidationSecureMarkupWarnMeter.Count())
+ assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[lowerCaseAdapter].BidValidationSecureMarkupErrorMeter.Count())
+ assert.Equal(t, test.expectedAdapterCount, m.AdapterMetrics[lowerCaseAdapter].BidValidationSecureMarkupWarnMeter.Count())
assert.Equal(t, test.expectedAccountCount, am.bidValidationSecureMarkupMeter.Count())
assert.Equal(t, test.expectedAccountCount, am.bidValidationSecureMarkupWarnMeter.Count())
}
@@ -385,9 +394,10 @@ func TestRecordDNSTime(t *testing.T) {
outExpDuration: time.Duration(0),
},
}
+ adapter := "AnyName"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordDNSTime(test.inDnsLookupDuration)
@@ -412,9 +422,10 @@ func TestRecordTLSHandshakeTime(t *testing.T) {
expectedDuration: time.Duration(0),
},
}
+ adapter := "AnyName"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordTLSHandshakeTime(test.tLSHandshakeDuration)
@@ -442,9 +453,10 @@ func TestRecordBidderServerResponseTime(t *testing.T) {
expectedSum: 1000,
},
}
+ adapter := "AnyName"
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordBidderServerResponseTime(test.time)
@@ -467,7 +479,8 @@ func TestRecordAdapterConnections(t *testing.T) {
expectedConnCreatedCount int64
expectedConnWaitTime time.Duration
}
-
+ adapter := "AnyName"
+ lowerCaseAdapterName := "anyname"
testCases := []struct {
description string
in testIn
@@ -476,7 +489,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "Successful, new connection created, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
connWasReused: false,
connWait: time.Second * 5,
connMetricsDisabled: false,
@@ -490,7 +503,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "Successful, new connection created, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
connWasReused: false,
connWait: time.Second * 4,
connMetricsDisabled: false,
@@ -503,7 +516,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "Successful, was reused, no connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
connWasReused: true,
connMetricsDisabled: false,
},
@@ -515,7 +528,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "Successful, was reused, has connection wait",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
connWasReused: true,
connWait: time.Second * 5,
connMetricsDisabled: false,
@@ -538,7 +551,7 @@ func TestRecordAdapterConnections(t *testing.T) {
{
description: "Adapter connection metrics are disabled, nothing gets updated",
in: testIn{
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
connWasReused: false,
connWait: time.Second * 5,
connMetricsDisabled: true,
@@ -549,19 +562,18 @@ func TestRecordAdapterConnections(t *testing.T) {
for i, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AdapterConnectionMetrics: test.in.connMetricsDisabled}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AdapterConnectionMetrics: test.in.connMetricsDisabled}, nil, nil)
m.RecordAdapterConnections(test.in.adapterName, test.in.connWasReused, test.in.connWait)
-
- assert.Equal(t, test.out.expectedConnReusedCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].ConnReused.Count(), "Test [%d] incorrect number of reused connections to adapter", i)
- assert.Equal(t, test.out.expectedConnCreatedCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].ConnCreated.Count(), "Test [%d] incorrect number of new connections to adapter created", i)
- assert.Equal(t, test.out.expectedConnWaitTime.Nanoseconds(), m.AdapterMetrics[openrtb_ext.BidderAppnexus].ConnWaitTime.Sum(), "Test [%d] incorrect wait time in connection to adapter", i)
+ assert.Equal(t, test.out.expectedConnReusedCount, m.AdapterMetrics[lowerCaseAdapterName].ConnReused.Count(), "Test [%d] incorrect number of reused connections to adapter", i)
+ assert.Equal(t, test.out.expectedConnCreatedCount, m.AdapterMetrics[lowerCaseAdapterName].ConnCreated.Count(), "Test [%d] incorrect number of new connections to adapter created", i)
+ assert.Equal(t, test.out.expectedConnWaitTime.Nanoseconds(), m.AdapterMetrics[lowerCaseAdapterName].ConnWaitTime.Sum(), "Test [%d] incorrect wait time in connection to adapter", i)
}
}
func TestNewMetricsWithDisabledConfig(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{AccountAdapterDetails: true, AccountModulesMetrics: true}, nil, map[string][]string{"foobar": {"entry", "raw"}})
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("bar")}, config.DisabledMetrics{AccountAdapterDetails: true, AccountModulesMetrics: true}, nil, map[string][]string{"foobar": {"entry", "raw"}})
assert.True(t, m.MetricsDisabled.AccountAdapterDetails, "Accound adapter metrics should be disabled")
assert.True(t, m.MetricsDisabled.AccountModulesMetrics, "Accound modules metrics should be disabled")
@@ -569,7 +581,7 @@ func TestNewMetricsWithDisabledConfig(t *testing.T) {
func TestRecordPrebidCacheRequestTimeWithSuccess(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo")}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordPrebidCacheRequestTime(true, 42)
@@ -579,7 +591,7 @@ func TestRecordPrebidCacheRequestTimeWithSuccess(t *testing.T) {
func TestRecordPrebidCacheRequestTimeWithNotSuccess(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo")}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordPrebidCacheRequestTime(false, 42)
@@ -647,7 +659,7 @@ func TestRecordStoredDataFetchTime(t *testing.T) {
for _, tt := range tests {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("Bar")}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordStoredDataFetchTime(StoredDataLabels{
DataType: tt.dataType,
DataFetchType: tt.fetchType,
@@ -721,7 +733,7 @@ func TestRecordStoredDataError(t *testing.T) {
for _, tt := range tests {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("Bar")}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
m.RecordStoredDataError(StoredDataLabels{
DataType: tt.dataType,
Error: tt.errorType,
@@ -734,7 +746,7 @@ func TestRecordStoredDataError(t *testing.T) {
func TestRecordRequestPrivacy(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("Bar")}, config.DisabledMetrics{AccountAdapterDetails: true}, nil, nil)
// CCPA
m.RecordRequestPrivacy(PrivacyLabels{
@@ -780,6 +792,8 @@ func TestRecordRequestPrivacy(t *testing.T) {
func TestRecordAdapterGDPRRequestBlocked(t *testing.T) {
var fakeBidder openrtb_ext.BidderName = "fooAdvertising"
+ adapter := "AnyName"
+ lowerCaseAdapterName := "anyname"
tests := []struct {
description string
@@ -790,7 +804,7 @@ func TestRecordAdapterGDPRRequestBlocked(t *testing.T) {
{
description: "",
metricsDisabled: false,
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
expectedCount: 1,
},
{
@@ -802,24 +816,23 @@ func TestRecordAdapterGDPRRequestBlocked(t *testing.T) {
{
description: "",
metricsDisabled: true,
- adapterName: openrtb_ext.BidderAppnexus,
+ adapterName: openrtb_ext.BidderName(adapter),
expectedCount: 0,
},
}
-
for _, tt := range tests {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AdapterGDPRRequestBlocked: tt.metricsDisabled}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AdapterGDPRRequestBlocked: tt.metricsDisabled}, nil, nil)
m.RecordAdapterGDPRRequestBlocked(tt.adapterName)
- assert.Equal(t, tt.expectedCount, m.AdapterMetrics[openrtb_ext.BidderAppnexus].GDPRRequestBlocked.Count(), tt.description)
+ assert.Equal(t, tt.expectedCount, m.AdapterMetrics[lowerCaseAdapterName].GDPRRequestBlocked.Count(), tt.description)
}
}
func TestRecordCookieSync(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("Bar")}, config.DisabledMetrics{}, nil, nil)
// Known
m.RecordCookieSync(CookieSyncBadRequest)
@@ -837,7 +850,7 @@ func TestRecordCookieSync(t *testing.T) {
func TestRecordSyncerRequest(t *testing.T) {
registry := metrics.NewRegistry()
syncerKeys := []string{"foo"}
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{}, syncerKeys, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Adapter1"), openrtb_ext.BidderName("Adapter2")}, config.DisabledMetrics{}, syncerKeys, nil)
// Known
m.RecordSyncerRequest("foo", SyncerCookieSyncOK)
@@ -856,7 +869,7 @@ func TestRecordSyncerRequest(t *testing.T) {
func TestRecordSetUid(t *testing.T) {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Foo"), openrtb_ext.BidderName("Bar")}, config.DisabledMetrics{}, nil, nil)
// Known
m.RecordSetUid(SetUidOptOut)
@@ -875,7 +888,7 @@ func TestRecordSetUid(t *testing.T) {
func TestRecordSyncerSet(t *testing.T) {
registry := metrics.NewRegistry()
syncerKeys := []string{"foo"}
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon}, config.DisabledMetrics{}, syncerKeys, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("Adapter1"), openrtb_ext.BidderName("Adapter2")}, config.DisabledMetrics{}, syncerKeys, nil)
// Known
m.RecordSyncerSet("foo", SyncerSetUidCleared)
@@ -929,7 +942,7 @@ func TestStoredResponses(t *testing.T) {
}
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{AccountStoredResponses: test.accountStoredResponsesMetricsDisabled}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("AnyName")}, config.DisabledMetrics{AccountStoredResponses: test.accountStoredResponsesMetricsDisabled}, nil, nil)
m.RecordStoredResponse(test.givenPubID)
am := m.getAccountMetrics(test.givenPubID)
@@ -963,7 +976,7 @@ func TestRecordAdsCertSignTime(t *testing.T) {
}
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("AnyName")}, config.DisabledMetrics{}, nil, nil)
m.RecordAdsCertSignTime(test.inAdsCertSignDuration)
@@ -994,7 +1007,7 @@ func TestRecordAdsCertReqMetric(t *testing.T) {
for _, test := range testCases {
registry := metrics.NewRegistry()
- m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus}, config.DisabledMetrics{}, nil, nil)
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName("AnyName")}, config.DisabledMetrics{}, nil, nil)
m.RecordAdsCertReq(test.requestSuccess)
@@ -1131,3 +1144,127 @@ func VerifyMetrics(t *testing.T, name string, expected int64, actual int64) {
t.Errorf("Error in metric %s: expected %d, got %d.", name, expected, actual)
}
}
+
+func TestRecordAdapterPanic(t *testing.T) {
+ registry := metrics.NewRegistry()
+ adapter := "AnyName"
+ lowerCaseAdapterName := "anyname"
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{AccountAdapterDetails: true, AccountModulesMetrics: true}, nil, map[string][]string{"foobar": {"entry", "raw"}})
+ m.RecordAdapterPanic(AdapterLabels{Adapter: openrtb_ext.BidderName(adapter)})
+ assert.Equal(t, m.AdapterMetrics[lowerCaseAdapterName].PanicMeter.Count(), int64(1))
+}
+
+func TestRecordAdapterPrice(t *testing.T) {
+ registry := metrics.NewRegistry()
+ syncerKeys := []string{"foo"}
+ adapter := "AnyName"
+ lowerCaseAdapterName := "anyname"
+ pubID := "pub1"
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter), openrtb_ext.BidderAppnexus}, config.DisabledMetrics{}, syncerKeys, nil)
+ m.RecordAdapterPrice(AdapterLabels{Adapter: openrtb_ext.BidderName(adapter), PubID: pubID}, 1000)
+ assert.Equal(t, m.AdapterMetrics[lowerCaseAdapterName].PriceHistogram.Max(), int64(1000))
+ assert.Equal(t, m.getAccountMetrics(pubID).adapterMetrics[lowerCaseAdapterName].PriceHistogram.Max(), int64(1000))
+}
+
+func TestRecordAdapterTime(t *testing.T) {
+ registry := metrics.NewRegistry()
+ syncerKeys := []string{"foo"}
+ adapter := "AnyName"
+ lowerCaseAdapterName := "anyname"
+ pubID := "pub1"
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter), openrtb_ext.BidderAppnexus, openrtb_ext.BidderName("Adapter2")}, config.DisabledMetrics{}, syncerKeys, nil)
+ m.RecordAdapterTime(AdapterLabels{Adapter: openrtb_ext.BidderName(adapter), PubID: pubID}, 1000)
+ assert.Equal(t, m.AdapterMetrics[lowerCaseAdapterName].RequestTimer.Max(), int64(1000))
+ assert.Equal(t, m.getAccountMetrics(pubID).adapterMetrics[lowerCaseAdapterName].RequestTimer.Max(), int64(1000))
+}
+
+func TestRecordAdapterRequest(t *testing.T) {
+ syncerKeys := []string{"foo"}
+ moduleStageNames := map[string][]string{"foobar": {"entry", "raw"}, "another_module": {"raw", "auction"}}
+ adapter := "AnyName"
+ lowerCaseAdapter := "anyname"
+ type errorCount struct {
+ badInput, badServer, timeout, failedToRequestBid, validation, tmaxTimeout, unknown int64
+ }
+ type adapterBidsCount struct {
+ NoBid, GotBid int64
+ }
+ tests := []struct {
+ description string
+ labels AdapterLabels
+ expectedNoCookieCount int64
+ expectedAdapterBidsCount adapterBidsCount
+ expectedErrorCount errorCount
+ }{
+ {
+ description: "no-bid",
+ labels: AdapterLabels{
+ Adapter: openrtb_ext.BidderName(adapter),
+ AdapterBids: AdapterBidNone,
+ PubID: "acc-1",
+ },
+ expectedAdapterBidsCount: adapterBidsCount{NoBid: 1},
+ },
+ {
+ description: "got-bid",
+ labels: AdapterLabels{
+ Adapter: openrtb_ext.BidderName(adapter),
+ AdapterBids: AdapterBidPresent,
+ PubID: "acc-2",
+ },
+ expectedAdapterBidsCount: adapterBidsCount{GotBid: 1},
+ },
+ {
+ description: "adapter-errors",
+ labels: AdapterLabels{
+ Adapter: openrtb_ext.BidderName(adapter),
+ PubID: "acc-1",
+ AdapterErrors: map[AdapterError]struct{}{
+ AdapterErrorBadInput: {},
+ AdapterErrorBadServerResponse: {},
+ AdapterErrorFailedToRequestBids: {},
+ AdapterErrorTimeout: {},
+ AdapterErrorValidation: {},
+ AdapterErrorTmaxTimeout: {},
+ AdapterErrorUnknown: {},
+ },
+ },
+ expectedErrorCount: errorCount{
+ badInput: 1,
+ badServer: 1,
+ timeout: 1,
+ failedToRequestBid: 1,
+ validation: 1,
+ tmaxTimeout: 1,
+ unknown: 1,
+ },
+ },
+ }
+ for _, test := range tests {
+ t.Run(test.description, func(t *testing.T) {
+ registry := metrics.NewRegistry()
+ m := NewMetrics(registry, []openrtb_ext.BidderName{openrtb_ext.BidderName(adapter)}, config.DisabledMetrics{}, syncerKeys, moduleStageNames)
+ m.RecordAdapterRequest(test.labels)
+ adapterMetric := m.AdapterMetrics[lowerCaseAdapter]
+ if assert.NotNil(t, adapterMetric) {
+ assert.Equal(t, test.expectedAdapterBidsCount, adapterBidsCount{
+ NoBid: adapterMetric.NoBidMeter.Count(),
+ GotBid: adapterMetric.GotBidsMeter.Count(),
+ })
+ }
+ assert.Equal(t, test.expectedNoCookieCount, adapterMetric.NoCookieMeter.Count())
+ adapterErrMetric := adapterMetric.ErrorMeters
+ if assert.NotNil(t, adapterErrMetric) {
+ assert.Equal(t, test.expectedErrorCount, errorCount{
+ badInput: adapterErrMetric[AdapterErrorBadInput].Count(),
+ badServer: adapterErrMetric[AdapterErrorBadServerResponse].Count(),
+ timeout: adapterErrMetric[AdapterErrorTimeout].Count(),
+ failedToRequestBid: adapterErrMetric[AdapterErrorFailedToRequestBids].Count(),
+ validation: adapterErrMetric[AdapterErrorValidation].Count(),
+ tmaxTimeout: adapterErrMetric[AdapterErrorTmaxTimeout].Count(),
+ unknown: adapterErrMetric[AdapterErrorUnknown].Count(),
+ })
+ }
+ })
+ }
+}
diff --git a/metrics/metrics.go b/metrics/metrics.go
index 99e64af0835..0c3025bd296 100644
--- a/metrics/metrics.go
+++ b/metrics/metrics.go
@@ -282,6 +282,7 @@ func AdapterErrors() []AdapterError {
AdapterErrorTimeout,
AdapterErrorFailedToRequestBids,
AdapterErrorValidation,
+ AdapterErrorTmaxTimeout,
AdapterErrorUnknown,
}
}
diff --git a/metrics/prometheus/prometheus_test.go b/metrics/prometheus/prometheus_test.go
index bea0087c6ea..a2b0e84d2ea 100644
--- a/metrics/prometheus/prometheus_test.go
+++ b/metrics/prometheus/prometheus_test.go
@@ -64,7 +64,7 @@ func TestMetricCountGatekeeping(t *testing.T) {
// Verify Per-Adapter Cardinality
// - This assertion provides a warning for newly added adapter metrics. Threre are 40+ adapters which makes the
// cost of new per-adapter metrics rather expensive. Thought should be given when adding new per-adapter metrics.
- assert.True(t, perAdapterCardinalityCount <= 29, "Per-Adapter Cardinality count equals %d \n", perAdapterCardinalityCount)
+ assert.True(t, perAdapterCardinalityCount <= 30, "Per-Adapter Cardinality count equals %d \n", perAdapterCardinalityCount)
}
func TestConnectionMetrics(t *testing.T) {
From eea6ffe5d71c9c629948e3bde0ebd4ef377c889c Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Tue, 17 Oct 2023 11:45:09 +0530
Subject: [PATCH 11/34] migrate adform alias to use new pattern (#3180)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/adform.yaml | 20 +------------------
static/bidder-params/adform.json | 33 --------------------------------
4 files changed, 1 insertion(+), 55 deletions(-)
delete mode 100644 static/bidder-params/adform.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 25630fed414..61af122ad1a 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -197,7 +197,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderAceex: aceex.Builder,
openrtb_ext.BidderAcuityAds: acuityads.Builder,
openrtb_ext.BidderAdf: adf.Builder,
- openrtb_ext.BidderAdform: adf.Builder,
openrtb_ext.BidderAdgeneration: adgeneration.Builder,
openrtb_ext.BidderAdhese: adhese.Builder,
openrtb_ext.BidderAdkernel: adkernel.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 744c7fad3fe..8c4a9ea0dc4 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -23,7 +23,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderAceex,
BidderAcuityAds,
BidderAdf,
- BidderAdform,
BidderAdgeneration,
BidderAdhese,
BidderAdkernel,
@@ -315,7 +314,6 @@ const (
BidderAceex BidderName = "aceex"
BidderAcuityAds BidderName = "acuityads"
BidderAdf BidderName = "adf"
- BidderAdform BidderName = "adform"
BidderAdgeneration BidderName = "adgeneration"
BidderAdhese BidderName = "adhese"
BidderAdkernel BidderName = "adkernel"
diff --git a/static/bidder-info/adform.yaml b/static/bidder-info/adform.yaml
index 2310f346c25..4aa6e70f1d0 100644
--- a/static/bidder-info/adform.yaml
+++ b/static/bidder-info/adform.yaml
@@ -1,19 +1 @@
-endpoint: "https://adx.adform.net/adx/openrtb"
-maintainer:
- email: "scope.sspp@adform.com"
-gvlVendorID: 50
-capabilities:
- app:
- mediaTypes:
- - banner
- - native
- - video
- site:
- mediaTypes:
- - banner
- - native
- - video
-userSync:
- redirect:
- url: "https://cm.adform.net/cookie?redirect_url={{.RedirectURL}}"
- userMacro: "$UID"
+aliasOf: adf
diff --git a/static/bidder-params/adform.json b/static/bidder-params/adform.json
deleted file mode 100644
index e112f122e49..00000000000
--- a/static/bidder-params/adform.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Adform Adapter Params",
- "description": "A schema which validates params accepted by the adf adapter",
- "type": "object",
- "properties": {
- "mid": {
- "type": ["integer", "string"],
- "pattern": "^\\d+$",
- "description": "An ID which identifies the placement selling the impression"
- },
- "inv": {
- "type": ["integer"],
- "description": "An ID which identifies the Adform inventory source id"
- },
- "mname": {
- "type": ["string"],
- "description": "A Name which identifies the placement selling the impression"
- },
- "priceType": {
- "type": ["string"],
- "description": "gross or net. Default is net.",
- "pattern": "gross|net"
- }
- },
- "anyOf":[
- {
- "required": ["mid"]
- }, {
- "required": ["inv", "mname"]
- }
- ]
-}
From 293cadc2f365d39ca452ccddea938b69f7482feb Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Tue, 17 Oct 2023 11:52:09 +0530
Subject: [PATCH 12/34] migrate copper alias to use new pattern (#3182)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/copper6.yaml | 10 +---------
static/bidder-params/copper6.json | 26 --------------------------
4 files changed, 1 insertion(+), 38 deletions(-)
delete mode 100644 static/bidder-params/copper6.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 61af122ad1a..f758b3ee33b 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -257,7 +257,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderConnectAd: connectad.Builder,
openrtb_ext.BidderConsumable: consumable.Builder,
openrtb_ext.BidderConversant: conversant.Builder,
- openrtb_ext.BidderCopper6: adtelligent.Builder,
openrtb_ext.BidderCpmstar: cpmstar.Builder,
openrtb_ext.BidderCriteo: criteo.Builder,
openrtb_ext.BidderCWire: cwire.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 8c4a9ea0dc4..8b0262bca19 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -83,7 +83,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderConnectAd,
BidderConsumable,
BidderConversant,
- BidderCopper6,
BidderCpmstar,
BidderCriteo,
BidderCWire,
@@ -374,7 +373,6 @@ const (
BidderConnectAd BidderName = "connectad"
BidderConsumable BidderName = "consumable"
BidderConversant BidderName = "conversant"
- BidderCopper6 BidderName = "copper6"
BidderCpmstar BidderName = "cpmstar"
BidderCriteo BidderName = "criteo"
BidderCWire BidderName = "cwire"
diff --git a/static/bidder-info/copper6.yaml b/static/bidder-info/copper6.yaml
index 213cbe3624d..b4e259ef08a 100644
--- a/static/bidder-info/copper6.yaml
+++ b/static/bidder-info/copper6.yaml
@@ -1,15 +1,7 @@
+aliasOf: adtelligent
endpoint: "http://ghb.app.copper6.com/pbs/ortb"
maintainer:
email: "info@copper6.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
userSync:
# Copper6 ssp supports user syncing, but requires configuration by the host. contact this
# bidder directly at the email address in this file to ask about enabling user sync.
diff --git a/static/bidder-params/copper6.json b/static/bidder-params/copper6.json
deleted file mode 100644
index fa4050f6c84..00000000000
--- a/static/bidder-params/copper6.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Copper6 Adapter Params",
- "description": "A schema which validates params accepted by the Copper6 ssp adapter",
-
- "type": "object",
- "properties": {
- "placementId": {
- "type": "integer",
- "description": "An ID which identifies this placement of the impression"
- },
- "siteId": {
- "type": "integer",
- "description": "An ID which identifies the site selling the impression"
- },
- "aid": {
- "type": "integer",
- "description": "An ID which identifies the channel"
- },
- "bidFloor": {
- "type": "number",
- "description": "BidFloor, US Dollars"
- }
- },
- "required": ["aid"]
-}
From 1384564fb934b487eba9f4e491268d7cdacbc4d5 Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Tue, 17 Oct 2023 12:00:53 +0530
Subject: [PATCH 13/34] update cookie sync endpoint to be case insensitive
(#3103)
---
endpoints/cookie_sync_test.go | 2 +-
usersync/bidderfilter.go | 6 +-
usersync/bidderfilter_test.go | 7 +
usersync/chooser.go | 32 +++-
usersync/chooser_test.go | 344 ++++++++++++++++++++++++----------
5 files changed, 283 insertions(+), 108 deletions(-)
diff --git a/endpoints/cookie_sync_test.go b/endpoints/cookie_sync_test.go
index 45f7a75da0c..af7819b94b9 100644
--- a/endpoints/cookie_sync_test.go
+++ b/endpoints/cookie_sync_test.go
@@ -87,7 +87,7 @@ func TestNewCookieSyncEndpoint(t *testing.T) {
assert.IsType(t, &cookieSyncEndpoint{}, endpoint)
assert.Equal(t, expected.config, result.config)
- assert.Equal(t, expected.chooser, result.chooser)
+ assert.ObjectsAreEqualValues(expected.chooser, result.chooser)
assert.Equal(t, expected.metrics, result.metrics)
assert.Equal(t, expected.pbsAnalytics, result.pbsAnalytics)
assert.Equal(t, expected.accountsFetcher, result.accountsFetcher)
diff --git a/usersync/bidderfilter.go b/usersync/bidderfilter.go
index 2d7d16ffe2b..2e4df476f26 100644
--- a/usersync/bidderfilter.go
+++ b/usersync/bidderfilter.go
@@ -1,5 +1,9 @@
package usersync
+import (
+ "strings"
+)
+
// BidderFilter determines if a bidder has permission to perform a user sync activity.
type BidderFilter interface {
// Allowed returns true if the filter determines the bidder has permission and false if either
@@ -40,7 +44,7 @@ func (f SpecificBidderFilter) Allowed(bidder string) bool {
func NewSpecificBidderFilter(bidders []string, mode BidderFilterMode) BidderFilter {
biddersLookup := make(map[string]struct{}, len(bidders))
for _, bidder := range bidders {
- biddersLookup[bidder] = struct{}{}
+ biddersLookup[strings.ToLower(bidder)] = struct{}{}
}
return SpecificBidderFilter{biddersLookup: biddersLookup, mode: mode}
diff --git a/usersync/bidderfilter_test.go b/usersync/bidderfilter_test.go
index ddc757339a2..009c051bacc 100644
--- a/usersync/bidderfilter_test.go
+++ b/usersync/bidderfilter_test.go
@@ -1,6 +1,7 @@
package usersync
import (
+ "strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -69,6 +70,12 @@ func TestSpecificBidderFilter(t *testing.T) {
mode: BidderFilterMode(-1),
expected: false,
},
+ {
+ description: "Case Insensitive Include - One",
+ bidders: []string{strings.ToUpper(bidder)},
+ mode: BidderFilterModeInclude,
+ expected: true,
+ },
}
for _, test := range testCases {
diff --git a/usersync/chooser.go b/usersync/chooser.go
index 3f478049066..578c63717de 100644
--- a/usersync/chooser.go
+++ b/usersync/chooser.go
@@ -1,5 +1,10 @@
package usersync
+import (
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "strings"
+)
+
// Chooser determines which syncers are eligible for a given request.
type Chooser interface {
// Choose considers bidders to sync, filters the bidders, and returns the result of the
@@ -15,9 +20,10 @@ func NewChooser(bidderSyncerLookup map[string]Syncer) Chooser {
}
return standardChooser{
- bidderSyncerLookup: bidderSyncerLookup,
- biddersAvailable: bidders,
- bidderChooser: standardBidderChooser{shuffler: randomShuffler{}},
+ bidderSyncerLookup: bidderSyncerLookup,
+ biddersAvailable: bidders,
+ bidderChooser: standardBidderChooser{shuffler: randomShuffler{}},
+ normalizeValidBidderName: openrtb_ext.NormalizeBidderName,
}
}
@@ -100,9 +106,10 @@ type Privacy interface {
// standardChooser implements the user syncer algorithm per official Prebid specification.
type standardChooser struct {
- bidderSyncerLookup map[string]Syncer
- biddersAvailable []string
- bidderChooser bidderChooser
+ bidderSyncerLookup map[string]Syncer
+ biddersAvailable []string
+ bidderChooser bidderChooser
+ normalizeValidBidderName func(name string) (openrtb_ext.BidderName, bool)
}
// Choose randomly selects user syncers which are permitted by the user's privacy settings and
@@ -136,7 +143,12 @@ func (c standardChooser) Choose(request Request, cookie *Cookie) Result {
}
func (c standardChooser) evaluate(bidder string, syncersSeen map[string]struct{}, syncTypeFilter SyncTypeFilter, privacy Privacy, cookie *Cookie) (Syncer, BidderEvaluation) {
- syncer, exists := c.bidderSyncerLookup[bidder]
+ bidderNormalized, exists := c.normalizeValidBidderName(bidder)
+ if !exists {
+ return nil, BidderEvaluation{Status: StatusUnknownBidder, Bidder: bidder}
+ }
+
+ syncer, exists := c.bidderSyncerLookup[bidderNormalized.String()]
if !exists {
return nil, BidderEvaluation{Status: StatusUnknownBidder, Bidder: bidder}
}
@@ -147,7 +159,7 @@ func (c standardChooser) evaluate(bidder string, syncersSeen map[string]struct{}
}
syncersSeen[syncer.Key()] = struct{}{}
- if !syncer.SupportsType(syncTypeFilter.ForBidder(bidder)) {
+ if !syncer.SupportsType(syncTypeFilter.ForBidder(strings.ToLower(bidder))) {
return nil, BidderEvaluation{Status: StatusTypeNotSupported, Bidder: bidder, SyncerKey: syncer.Key()}
}
@@ -160,11 +172,11 @@ func (c standardChooser) evaluate(bidder string, syncersSeen map[string]struct{}
return nil, BidderEvaluation{Status: StatusBlockedByPrivacy, Bidder: bidder, SyncerKey: syncer.Key()}
}
- if !privacy.GDPRAllowsBidderSync(bidder) {
+ if !privacy.GDPRAllowsBidderSync(bidderNormalized.String()) {
return nil, BidderEvaluation{Status: StatusBlockedByGDPR, Bidder: bidder, SyncerKey: syncer.Key()}
}
- if !privacy.CCPAAllowsBidderSync(bidder) {
+ if !privacy.CCPAAllowsBidderSync(bidderNormalized.String()) {
return nil, BidderEvaluation{Status: StatusBlockedByCCPA, Bidder: bidder, SyncerKey: syncer.Key()}
}
diff --git a/usersync/chooser_test.go b/usersync/chooser_test.go
index 4f38002c988..6ab5a6b53e3 100644
--- a/usersync/chooser_test.go
+++ b/usersync/chooser_test.go
@@ -1,12 +1,13 @@
package usersync
import (
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
"testing"
"time"
"github.com/prebid/prebid-server/macros"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
)
func TestNewChooser(t *testing.T) {
@@ -47,7 +48,10 @@ func TestChooserChoose(t *testing.T) {
fakeSyncerA := fakeSyncer{key: "keyA", supportsIFrame: true}
fakeSyncerB := fakeSyncer{key: "keyB", supportsIFrame: true}
fakeSyncerC := fakeSyncer{key: "keyC", supportsIFrame: false}
- bidderSyncerLookup := map[string]Syncer{"a": fakeSyncerA, "b": fakeSyncerB, "c": fakeSyncerC}
+ bidderSyncerLookup := map[string]Syncer{"a": fakeSyncerA, "b": fakeSyncerB, "c": fakeSyncerC, "appnexus": fakeSyncerA}
+ normalizedBidderNamesLookup := func(name string) (openrtb_ext.BidderName, bool) {
+ return openrtb_ext.BidderName(name), true
+ }
syncerChoiceA := SyncerChoice{Bidder: "a", Syncer: fakeSyncerA}
syncerChoiceB := SyncerChoice{Bidder: "b", Syncer: fakeSyncerB}
syncTypeFilter := SyncTypeFilter{
@@ -61,16 +65,18 @@ func TestChooserChoose(t *testing.T) {
givenRequest Request
givenChosenBidders []string
givenCookie Cookie
+ bidderNamesLookup func(name string) (openrtb_ext.BidderName, bool)
expected Result
}{
{
description: "Cookie Opt Out",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"a"},
givenCookie: Cookie{optOut: true},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusBlockedByUserOptOut,
BiddersEvaluated: nil,
@@ -80,11 +86,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "GDPR Host Cookie Not Allowed",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: false, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: false, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"a"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusBlockedByGDPR,
BiddersEvaluated: nil,
@@ -94,11 +101,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "No Bidders",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{},
@@ -108,11 +116,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "One Bidder - Sync",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"a"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "a", SyncerKey: "keyA", Status: StatusOK}},
@@ -122,11 +131,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "One Bidder - No Sync",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"c"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "c", SyncerKey: "keyC", Status: StatusTypeNotSupported}},
@@ -136,11 +146,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "Many Bidders - All Sync - Limit Disabled With 0",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"a", "b"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "a", SyncerKey: "keyA", Status: StatusOK}, {Bidder: "b", SyncerKey: "keyB", Status: StatusOK}},
@@ -150,11 +161,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "Many Bidders - All Sync - Limit Disabled With Negative Value",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: -1,
},
givenChosenBidders: []string{"a", "b"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "a", SyncerKey: "keyA", Status: StatusOK}, {Bidder: "b", SyncerKey: "keyB", Status: StatusOK}},
@@ -164,11 +176,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "Many Bidders - Limited Sync",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 1,
},
givenChosenBidders: []string{"a", "b"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "a", SyncerKey: "keyA", Status: StatusOK}},
@@ -178,11 +191,12 @@ func TestChooserChoose(t *testing.T) {
{
description: "Many Bidders - Limited Sync - Disqualified Syncers Don't Count Towards Limit",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 1,
},
givenChosenBidders: []string{"c", "a", "b"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "c", SyncerKey: "keyC", Status: StatusTypeNotSupported}, {Bidder: "a", SyncerKey: "keyA", Status: StatusOK}},
@@ -192,17 +206,65 @@ func TestChooserChoose(t *testing.T) {
{
description: "Many Bidders - Some Sync, Some Don't",
givenRequest: Request{
- Privacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
Limit: 0,
},
givenChosenBidders: []string{"a", "c"},
givenCookie: Cookie{},
+ bidderNamesLookup: normalizedBidderNamesLookup,
expected: Result{
Status: StatusOK,
BiddersEvaluated: []BidderEvaluation{{Bidder: "a", SyncerKey: "keyA", Status: StatusOK}, {Bidder: "c", SyncerKey: "keyC", Status: StatusTypeNotSupported}},
SyncersChosen: []SyncerChoice{syncerChoiceA},
},
},
+ {
+ description: "Unknown Bidder",
+ givenRequest: Request{
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Limit: 0,
+ },
+ givenChosenBidders: []string{"a"},
+ givenCookie: Cookie{},
+ bidderNamesLookup: func(name string) (openrtb_ext.BidderName, bool) {
+ return openrtb_ext.BidderName(name), false
+ },
+ expected: Result{
+ Status: StatusOK,
+ BiddersEvaluated: []BidderEvaluation{{Bidder: "a", Status: StatusUnknownBidder}},
+ SyncersChosen: []SyncerChoice{},
+ },
+ },
+ {
+ description: "Case insensitive bidder name",
+ givenRequest: Request{
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Limit: 0,
+ },
+ givenChosenBidders: []string{"AppNexus"},
+ givenCookie: Cookie{},
+ bidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expected: Result{
+ Status: StatusOK,
+ BiddersEvaluated: []BidderEvaluation{{Bidder: "AppNexus", SyncerKey: "keyA", Status: StatusOK}},
+ SyncersChosen: []SyncerChoice{{Bidder: "AppNexus", Syncer: fakeSyncerA}},
+ },
+ },
+ {
+ description: "Duplicate bidder name",
+ givenRequest: Request{
+ Privacy: &fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ Limit: 0,
+ },
+ givenChosenBidders: []string{"AppNexus", "appNexus"},
+ givenCookie: Cookie{},
+ bidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expected: Result{
+ Status: StatusOK,
+ BiddersEvaluated: []BidderEvaluation{{Bidder: "AppNexus", SyncerKey: "keyA", Status: StatusOK}, {Bidder: "appNexus", SyncerKey: "keyA", Status: StatusDuplicate}},
+ SyncersChosen: []SyncerChoice{{Bidder: "AppNexus", Syncer: fakeSyncerA}},
+ },
+ },
}
bidders := []string{"anyRequested"}
@@ -219,9 +281,10 @@ func TestChooserChoose(t *testing.T) {
Return(test.givenChosenBidders)
chooser := standardChooser{
- bidderSyncerLookup: bidderSyncerLookup,
- biddersAvailable: biddersAvailable,
- bidderChooser: mockBidderChooser,
+ bidderSyncerLookup: bidderSyncerLookup,
+ biddersAvailable: biddersAvailable,
+ bidderChooser: mockBidderChooser,
+ normalizeValidBidderName: test.bidderNamesLookup,
}
result := chooser.Choose(test.givenRequest, &test.givenCookie)
@@ -232,113 +295,199 @@ func TestChooserChoose(t *testing.T) {
func TestChooserEvaluate(t *testing.T) {
fakeSyncerA := fakeSyncer{key: "keyA", supportsIFrame: true}
fakeSyncerB := fakeSyncer{key: "keyB", supportsIFrame: false}
- bidderSyncerLookup := map[string]Syncer{"a": fakeSyncerA, "b": fakeSyncerB}
+ bidderSyncerLookup := map[string]Syncer{"a": fakeSyncerA, "b": fakeSyncerB, "appnexus": fakeSyncerA, "suntContent": fakeSyncerA}
syncTypeFilter := SyncTypeFilter{
IFrame: NewUniformBidderFilter(BidderFilterModeInclude),
Redirect: NewUniformBidderFilter(BidderFilterModeExclude)}
-
+ normalizedBidderNamesLookup := func(name string) (openrtb_ext.BidderName, bool) {
+ return openrtb_ext.BidderName(name), true
+ }
cookieNeedsSync := Cookie{}
cookieAlreadyHasSyncForA := Cookie{uids: map[string]UIDEntry{"keyA": {Expires: time.Now().Add(time.Duration(24) * time.Hour)}}}
cookieAlreadyHasSyncForB := Cookie{uids: map[string]UIDEntry{"keyB": {Expires: time.Now().Add(time.Duration(24) * time.Hour)}}}
testCases := []struct {
- description string
- givenBidder string
- givenSyncersSeen map[string]struct{}
- givenPrivacy Privacy
- givenCookie Cookie
- expectedSyncer Syncer
- expectedEvaluation BidderEvaluation
+ description string
+ givenBidder string
+ normalisedBidderName string
+ givenSyncersSeen map[string]struct{}
+ givenPrivacy fakePrivacy
+ givenCookie Cookie
+ givenSyncTypeFilter SyncTypeFilter
+ normalizedBidderNamesLookup func(name string) (openrtb_ext.BidderName, bool)
+ expectedSyncer Syncer
+ expectedEvaluation BidderEvaluation
}{
{
- description: "Valid",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: fakeSyncerA,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusOK},
+ description: "Valid",
+ givenBidder: "a",
+ normalisedBidderName: "a",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: fakeSyncerA,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusOK},
+ },
+ {
+ description: "Unknown Bidder",
+ givenBidder: "unknown",
+ normalisedBidderName: "",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "unknown", Status: StatusUnknownBidder},
+ },
+ {
+ description: "Duplicate Syncer",
+ givenBidder: "a",
+ normalisedBidderName: "",
+ givenSyncersSeen: map[string]struct{}{"keyA": {}},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusDuplicate},
+ },
+ {
+ description: "Incompatible Kind",
+ givenBidder: "b",
+ normalisedBidderName: "",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "b", SyncerKey: "keyB", Status: StatusTypeNotSupported},
+ },
+ {
+ description: "Already Synced",
+ givenBidder: "a",
+ normalisedBidderName: "",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieAlreadyHasSyncForA,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusAlreadySynced},
},
{
- description: "Unknown Bidder",
- givenBidder: "unknown",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "unknown", Status: StatusUnknownBidder},
+ description: "Different Bidder Already Synced",
+ givenBidder: "a",
+ normalisedBidderName: "a",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieAlreadyHasSyncForB,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: fakeSyncerA,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusOK},
},
{
- description: "Duplicate Syncer",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{"keyA": {}},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusDuplicate},
+ description: "Blocked By GDPR",
+ givenBidder: "a",
+ normalisedBidderName: "a",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: false, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByGDPR},
},
{
- description: "Incompatible Kind",
- givenBidder: "b",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "b", SyncerKey: "keyB", Status: StatusTypeNotSupported},
+ description: "Blocked By CCPA",
+ givenBidder: "a",
+ normalisedBidderName: "a",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: false, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByCCPA},
},
{
- description: "Already Synced",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieAlreadyHasSyncForA,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusAlreadySynced},
+ description: "Blocked By activity control",
+ givenBidder: "a",
+ normalisedBidderName: "",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: false},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: normalizedBidderNamesLookup,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByPrivacy},
},
{
- description: "Different Bidder Already Synced",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieAlreadyHasSyncForB,
- expectedSyncer: fakeSyncerA,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusOK},
+ description: "Case insensitive bidder name",
+ givenBidder: "AppNexus",
+ normalisedBidderName: "appnexus",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expectedSyncer: fakeSyncerA,
+ expectedEvaluation: BidderEvaluation{Bidder: "AppNexus", SyncerKey: "keyA", Status: StatusOK},
},
{
- description: "Blocked By GDPR",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: false, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByGDPR},
+ description: "Case insensitivity check for sync type filter",
+ givenBidder: "SuntContent",
+ normalisedBidderName: "suntContent",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: SyncTypeFilter{
+ IFrame: NewSpecificBidderFilter([]string{"SuntContent"}, BidderFilterModeInclude),
+ Redirect: NewSpecificBidderFilter([]string{"SuntContent"}, BidderFilterModeExclude)},
+ normalizedBidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expectedSyncer: fakeSyncerA,
+ expectedEvaluation: BidderEvaluation{Bidder: "SuntContent", SyncerKey: "keyA", Status: StatusOK},
},
{
- description: "Blocked By CCPA",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: false, activityAllowUserSync: true},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByCCPA},
+ description: "Case Insensitivity Check For Blocked By GDPR",
+ givenBidder: "AppNexus",
+ normalisedBidderName: "appnexus",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: false, ccpaAllowsBidderSync: true, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "AppNexus", SyncerKey: "keyA", Status: StatusBlockedByGDPR},
},
{
- description: "Blocked By activity control",
- givenBidder: "a",
- givenSyncersSeen: map[string]struct{}{},
- givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: true, activityAllowUserSync: false},
- givenCookie: cookieNeedsSync,
- expectedSyncer: nil,
- expectedEvaluation: BidderEvaluation{Bidder: "a", SyncerKey: "keyA", Status: StatusBlockedByPrivacy},
+ description: "Case Insensitivity Check For Blocked By CCPA",
+ givenBidder: "AppNexus",
+ normalisedBidderName: "appnexus",
+ givenSyncersSeen: map[string]struct{}{},
+ givenPrivacy: fakePrivacy{gdprAllowsHostCookie: true, gdprAllowsBidderSync: true, ccpaAllowsBidderSync: false, activityAllowUserSync: true},
+ givenCookie: cookieNeedsSync,
+ givenSyncTypeFilter: syncTypeFilter,
+ normalizedBidderNamesLookup: openrtb_ext.NormalizeBidderName,
+ expectedSyncer: nil,
+ expectedEvaluation: BidderEvaluation{Bidder: "AppNexus", SyncerKey: "keyA", Status: StatusBlockedByCCPA},
},
}
for _, test := range testCases {
- chooser, _ := NewChooser(bidderSyncerLookup).(standardChooser)
- sync, evaluation := chooser.evaluate(test.givenBidder, test.givenSyncersSeen, syncTypeFilter, test.givenPrivacy, &test.givenCookie)
+ t.Run(test.description, func(t *testing.T) {
+ chooser, _ := NewChooser(bidderSyncerLookup).(standardChooser)
+ chooser.normalizeValidBidderName = test.normalizedBidderNamesLookup
+ sync, evaluation := chooser.evaluate(test.givenBidder, test.givenSyncersSeen, test.givenSyncTypeFilter, &test.givenPrivacy, &test.givenCookie)
- assert.Equal(t, test.expectedSyncer, sync, test.description+":syncer")
- assert.Equal(t, test.expectedEvaluation, evaluation, test.description+":evaluation")
+ assert.Equal(t, test.normalisedBidderName, test.givenPrivacy.inputBidderName)
+ assert.Equal(t, test.expectedSyncer, sync, test.description+":syncer")
+ assert.Equal(t, test.expectedEvaluation, evaluation, test.description+":evaluation")
+ })
}
}
@@ -386,20 +535,23 @@ type fakePrivacy struct {
gdprAllowsBidderSync bool
ccpaAllowsBidderSync bool
activityAllowUserSync bool
+ inputBidderName string
}
-func (p fakePrivacy) GDPRAllowsHostCookie() bool {
+func (p *fakePrivacy) GDPRAllowsHostCookie() bool {
return p.gdprAllowsHostCookie
}
-func (p fakePrivacy) GDPRAllowsBidderSync(bidder string) bool {
+func (p *fakePrivacy) GDPRAllowsBidderSync(bidder string) bool {
+ p.inputBidderName = bidder
return p.gdprAllowsBidderSync
}
-func (p fakePrivacy) CCPAAllowsBidderSync(bidder string) bool {
+func (p *fakePrivacy) CCPAAllowsBidderSync(bidder string) bool {
+ p.inputBidderName = bidder
return p.ccpaAllowsBidderSync
}
-func (p fakePrivacy) ActivityAllowsUserSync(bidder string) bool {
+func (p *fakePrivacy) ActivityAllowsUserSync(bidder string) bool {
return p.activityAllowUserSync
}
From b3e5d1d062507d071cd7833af2d91d2e118d4038 Mon Sep 17 00:00:00 2001
From: Sonali-More-Xandr <87759626+Sonali-More-Xandr@users.noreply.github.com>
Date: Tue, 17 Oct 2023 20:42:02 +0530
Subject: [PATCH 14/34] Adapter Name Case Insensitive:
user.ext.prebid.buyeruids (#3152)
---
endpoints/openrtb2/amp_auction_test.go | 3 +
endpoints/openrtb2/auction.go | 4 +-
.../aliased-buyeruids-case-insensitive.json | 84 ++++++++++
.../buyeruids-camel-case.json | 77 ++++++++++
.../buyeruids-case-insensitive.json | 77 ++++++++++
.../buyeruid_case_insensitive.json | 144 ++++++++++++++++++
exchange/utils.go | 10 +-
7 files changed, 396 insertions(+), 3 deletions(-)
create mode 100644 endpoints/openrtb2/sample-requests/amp/valid-supplementary/aliased-buyeruids-case-insensitive.json
create mode 100644 endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-camel-case.json
create mode 100644 endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-case-insensitive.json
create mode 100644 exchange/exchangetest/buyeruid_case_insensitive.json
diff --git a/endpoints/openrtb2/amp_auction_test.go b/endpoints/openrtb2/amp_auction_test.go
index 3c0feb4f7ab..4315ec7926f 100644
--- a/endpoints/openrtb2/amp_auction_test.go
+++ b/endpoints/openrtb2/amp_auction_test.go
@@ -50,6 +50,9 @@ func TestGoodAmpRequests(t *testing.T) {
"imp-with-stored-resp.json",
"gdpr-no-consentstring.json",
"gdpr.json",
+ "buyeruids-case-insensitive.json",
+ "buyeruids-camel-case.json",
+ "aliased-buyeruids-case-insensitive.json",
},
},
{
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index 3a929c43abe..fdb135497d0 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -1817,7 +1817,9 @@ func (deps *endpointDeps) validateUser(req *openrtb_ext.RequestWrapper, aliases
return append(errL, errors.New(`request.user.ext.prebid requires a "buyeruids" property with at least one ID defined. If none exist, then request.user.ext.prebid should not be defined.`))
}
for bidderName := range prebid.BuyerUIDs {
- if _, ok := deps.bidderMap[bidderName]; !ok {
+ normalizedCoreBidder, _ := deps.normalizeBidderName(bidderName)
+ coreBidder := normalizedCoreBidder.String()
+ if _, ok := deps.bidderMap[coreBidder]; !ok {
if _, ok := aliases[bidderName]; !ok {
return append(errL, fmt.Errorf("request.user.ext.%s is neither a known bidder name nor an alias in request.ext.prebid.aliases", bidderName))
}
diff --git a/endpoints/openrtb2/sample-requests/amp/valid-supplementary/aliased-buyeruids-case-insensitive.json b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/aliased-buyeruids-case-insensitive.json
new file mode 100644
index 00000000000..1d2462c98b8
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/aliased-buyeruids-case-insensitive.json
@@ -0,0 +1,84 @@
+{
+ "description": "Amp request where root.user.ext.prebid.buyeruids field makes use of alias defined in root.ext.prebid.aliases and request makes use of case sensitive bidder name",
+ "query": "tag_id=101",
+ "config": {
+ "mockBidders": [
+ {
+ "bidderName": "appnexus",
+ "currency": "USD",
+ "price": 2
+ }
+ ]
+ },
+ "mockBidRequest": {
+ "id": "request-with-user-ext-obj",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "Appnexus": {
+ "placementId": 12883451
+ }
+ }
+ }
+ }
+ }
+ ],
+ "user": {
+ "ext": {
+ "prebid": {
+ "buyeruids": {
+ "unknown": "123"
+ }
+ }
+ }
+ },
+ "ext": {
+ "prebid": {
+ "aliases": {
+ "unknown": "Appnexus"
+ }
+ }
+ }
+ },
+ "expectedAmpResponse": {
+ "targeting": {
+ "hb_bidder": "Appnexus",
+ "hb_bidder_Appnexus": "Appnexus",
+ "hb_cache_host": "www.pbcserver.com",
+ "hb_cache_host_Appnex": "www.pbcserver.com",
+ "hb_cache_id": "0",
+ "hb_cache_id_Appnexus": "0",
+ "hb_cache_path": "/pbcache/endpoint",
+ "hb_cache_path_Appnex": "/pbcache/endpoint",
+ "hb_pb": "2.00",
+ "hb_pb_Appnexus": "2.00"
+ },
+ "ortb2": {
+ "ext": {
+ "warnings": {
+ "general": [
+ {
+ "code": 10002,
+ "message": "debug turned off for account"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "expectedReturnCode": 200
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-camel-case.json b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-camel-case.json
new file mode 100644
index 00000000000..4597fe7786a
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-camel-case.json
@@ -0,0 +1,77 @@
+{
+ "description": "Amp request where root.user.ext.prebid.buyeruids field has camel case bidder name",
+ "query": "tag_id=101",
+ "config": {
+ "mockBidders": [
+ {
+ "bidderName": "yahooAds",
+ "currency": "USD",
+ "price": 2
+ }
+ ]
+ },
+ "mockBidRequest": {
+ "id": "request-with-user-ext-obj",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "YahooAds": {
+ "placementId": 12883451
+ }
+ }
+ }
+ }
+ }
+ ],
+ "user": {
+ "ext": {
+ "prebid": {
+ "buyeruids": {
+ "YahooAds": "123"
+ }
+ }
+ }
+ }
+ },
+ "expectedAmpResponse": {
+ "targeting": {
+ "hb_bidder": "YahooAds",
+ "hb_bidder_YahooAds": "YahooAds",
+ "hb_cache_host": "www.pbcserver.com",
+ "hb_cache_host_YahooA": "www.pbcserver.com",
+ "hb_cache_id": "0",
+ "hb_cache_id_YahooAds": "0",
+ "hb_cache_path": "/pbcache/endpoint",
+ "hb_cache_path_YahooA": "/pbcache/endpoint",
+ "hb_pb": "2.00",
+ "hb_pb_YahooAds": "2.00"
+ },
+ "ortb2": {
+ "ext": {
+ "warnings": {
+ "general": [
+ {
+ "code": 10002,
+ "message": "debug turned off for account"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "expectedReturnCode": 200
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-case-insensitive.json b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-case-insensitive.json
new file mode 100644
index 00000000000..976fcb3cf7f
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/amp/valid-supplementary/buyeruids-case-insensitive.json
@@ -0,0 +1,77 @@
+{
+ "description": "Amp request where root.user.ext.prebid.buyeruids field has case insensitive bidder name",
+ "query": "tag_id=101",
+ "config": {
+ "mockBidders": [
+ {
+ "bidderName": "appnexus",
+ "currency": "USD",
+ "price": 2
+ }
+ ]
+ },
+ "mockBidRequest": {
+ "id": "request-with-user-ext-obj",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "Appnexus": {
+ "placementId": 12883451
+ }
+ }
+ }
+ }
+ }
+ ],
+ "user": {
+ "ext": {
+ "prebid": {
+ "buyeruids": {
+ "Appnexus": "123"
+ }
+ }
+ }
+ }
+ },
+ "expectedAmpResponse": {
+ "targeting": {
+ "hb_bidder": "Appnexus",
+ "hb_bidder_Appnexus": "Appnexus",
+ "hb_cache_host": "www.pbcserver.com",
+ "hb_cache_host_Appnex": "www.pbcserver.com",
+ "hb_cache_id": "0",
+ "hb_cache_id_Appnexus": "0",
+ "hb_cache_path": "/pbcache/endpoint",
+ "hb_cache_path_Appnex": "/pbcache/endpoint",
+ "hb_pb": "2.00",
+ "hb_pb_Appnexus": "2.00"
+ },
+ "ortb2": {
+ "ext": {
+ "warnings": {
+ "general": [
+ {
+ "code": 10002,
+ "message": "debug turned off for account"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "expectedReturnCode": 200
+}
\ No newline at end of file
diff --git a/exchange/exchangetest/buyeruid_case_insensitive.json b/exchange/exchangetest/buyeruid_case_insensitive.json
new file mode 100644
index 00000000000..6999e8c9515
--- /dev/null
+++ b/exchange/exchangetest/buyeruid_case_insensitive.json
@@ -0,0 +1,144 @@
+{
+ "incomingRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "user": {
+ "id": "userId",
+ "ext": {
+ "prebid": {
+ "buyeruids": {
+ "APPnexUS": "12345"
+ }
+ }
+ }
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "APPnexus": {
+ "placementId": 1
+ },
+ "appNEXUS": {
+ "placementId": 2
+ },
+ "amx": {}
+ }
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "aliases": {
+ "APPnexus": "appnexus",
+ "appNEXUS": "appnexus"
+ }
+ }
+ }
+ }
+ },
+ "outgoingRequests": {
+ "APPnexus": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "user": {
+ "id": "userId",
+ "buyeruid": "12345"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "appNEXUS": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "user": {
+ "id": "userId",
+ "buyeruid": "12345"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 2
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "amx": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "user": {
+ "id": "userId"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "response": {
+ "bids": {
+ "id": "some-request-id",
+ "ext": {}
+ }
+ }
+}
diff --git a/exchange/utils.go b/exchange/utils.go
index 0d9c90cda99..7d5beb64fb0 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -327,6 +327,12 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
return nil, []error{err}
}
+ lowerCaseExplicitBuyerUIDs := make(map[string]string)
+ for bidder, uid := range explicitBuyerUIDs {
+ lowerKey := strings.ToLower(bidder)
+ lowerCaseExplicitBuyerUIDs[lowerKey] = uid
+ }
+
var errs []error
for bidder, imps := range impsByBidder {
coreBidder := resolveBidder(bidder, aliases)
@@ -361,7 +367,7 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
}
syncerKey := bidderToSyncerKey[string(coreBidder)]
- if hadSync := prepareUser(&reqCopy, bidder, syncerKey, explicitBuyerUIDs, auctionRequest.UserSyncs); !hadSync && req.BidRequest.App == nil {
+ if hadSync := prepareUser(&reqCopy, bidder, syncerKey, lowerCaseExplicitBuyerUIDs, auctionRequest.UserSyncs); !hadSync && req.BidRequest.App == nil {
bidderRequest.BidderLabels.CookieFlag = metrics.CookieFlagNo
} else {
bidderRequest.BidderLabels.CookieFlag = metrics.CookieFlagYes
@@ -642,7 +648,7 @@ func createSanitizedImpExt(impExt, impExtPrebid map[string]json.RawMessage) (map
func prepareUser(req *openrtb2.BidRequest, givenBidder, syncerKey string, explicitBuyerUIDs map[string]string, usersyncs IdFetcher) bool {
cookieId, hadCookie, _ := usersyncs.GetUID(syncerKey)
- if id, ok := explicitBuyerUIDs[givenBidder]; ok {
+ if id, ok := explicitBuyerUIDs[strings.ToLower(givenBidder)]; ok {
req.User = copyWithBuyerUID(req.User, id)
} else if hadCookie {
req.User = copyWithBuyerUID(req.User, cookieId)
From f152b0d3bbfe624c39d2512d3146484bfc7a4e1e Mon Sep 17 00:00:00 2001
From: AlexBVolcy <74930484+AlexBVolcy@users.noreply.github.com>
Date: Tue, 17 Oct 2023 08:24:37 -0700
Subject: [PATCH 15/34] Adapter Name Case Insensitive: Bid Adjustment Factors
(#3210)
---
endpoints/openrtb2/auction.go | 7 ++
...actors-case-invalid-same-bidder-names.json | 81 ++++++++++++++++
...ors-case-insensitive-different-casing.json | 97 +++++++++++++++++++
... => bid-adj-factors-case-insensitive.json} | 0
exchange/bidder.go | 4 +-
exchange/bidder_test.go | 14 +--
exchange/utils.go | 8 +-
exchange/utils_test.go | 5 +
8 files changed, 205 insertions(+), 11 deletions(-)
create mode 100644 endpoints/openrtb2/sample-requests/invalid-whole/bid-adj-factors-case-invalid-same-bidder-names.json
create mode 100644 endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive-different-casing.json
rename endpoints/openrtb2/sample-requests/valid-whole/exemplary/{bidder-adjustment-factors-case-insensitive.json => bid-adj-factors-case-insensitive.json} (100%)
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index fdb135497d0..0e1a23583a1 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -965,6 +965,7 @@ func validateAndFillSourceTID(req *openrtb_ext.RequestWrapper, generateRequestID
}
func (deps *endpointDeps) validateBidAdjustmentFactors(adjustmentFactors map[string]float64, aliases map[string]string) error {
+ uniqueBidders := make(map[string]struct{})
for bidderToAdjust, adjustmentFactor := range adjustmentFactors {
if adjustmentFactor <= 0 {
return fmt.Errorf("request.ext.prebid.bidadjustmentfactors.%s must be a positive number. Got %f", bidderToAdjust, adjustmentFactor)
@@ -976,6 +977,12 @@ func (deps *endpointDeps) validateBidAdjustmentFactors(adjustmentFactors map[str
bidderName = normalizedCoreBidder.String()
}
+ if _, exists := uniqueBidders[bidderName]; exists {
+ return fmt.Errorf("cannot have multiple bidders that differ only in case style")
+ } else {
+ uniqueBidders[bidderName] = struct{}{}
+ }
+
if _, isBidder := deps.bidderMap[bidderName]; !isBidder {
if _, isAlias := aliases[bidderToAdjust]; !isAlias {
return fmt.Errorf("request.ext.prebid.bidadjustmentfactors.%s is not a known bidder or alias", bidderToAdjust)
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/bid-adj-factors-case-invalid-same-bidder-names.json b/endpoints/openrtb2/sample-requests/invalid-whole/bid-adj-factors-case-invalid-same-bidder-names.json
new file mode 100644
index 00000000000..d484f129ba3
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/bid-adj-factors-case-invalid-same-bidder-names.json
@@ -0,0 +1,81 @@
+{
+ "description": "This demonstrates a request with bidadjustmentfactors that have multiple of the same bidder is invalid request",
+ "config": {
+ "mockBidders": [
+ {
+ "bidderName": "appnexus",
+ "currency": "USD",
+ "price": 1.00
+ }
+ ]
+ },
+ "mockBidRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "prebid.org"
+ },
+ "user": {
+ "ext": {
+ "consent": "gdpr-consent-string"
+ }
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 1,
+ "us_privacy": "1NYN"
+ }
+ },
+ "imp": [
+ {
+ "id": "some-impression-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "Appnexus": {
+ "placementId": 12883451
+ }
+ }
+ }
+ ],
+ "tmax": 500,
+ "ext": {
+ "prebid": {
+ "bidadjustmentfactors": {
+ "APPNEXUS": 1.01,
+ "Appnexus": 2.00
+ },
+ "cache": {
+ "bids": {}
+ },
+ "channel": {
+ "name": "video",
+ "version": "1.0"
+ },
+ "targeting": {
+ "includewinners": false,
+ "pricegranularity": {
+ "precision": 2,
+ "ranges": [
+ {
+ "max": 20,
+ "increment": 0.10
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "expectedReturnCode": 400,
+ "expectedErrorMessage": "Invalid request: cannot have multiple bidders that differ only in case style"
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive-different-casing.json b/endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive-different-casing.json
new file mode 100644
index 00000000000..a231af657cd
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive-different-casing.json
@@ -0,0 +1,97 @@
+{
+ "description": "This demonstrates bid adjustment factors with bidder names that have different casing in imp vs. in bidadjustmentfactors",
+ "config": {
+ "mockBidders": [
+ {
+ "bidderName": "appnexus",
+ "currency": "USD",
+ "price": 1.00
+ }
+ ]
+ },
+ "mockBidRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "prebid.org"
+ },
+ "user": {
+ "ext": {
+ "consent": "gdpr-consent-string"
+ }
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 1,
+ "us_privacy": "1NYN"
+ }
+ },
+ "imp": [
+ {
+ "id": "some-impression-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "Appnexus": {
+ "placementId": 12883451
+ }
+ }
+ }
+ ],
+ "tmax": 500,
+ "ext": {
+ "prebid": {
+ "bidadjustmentfactors": {
+ "APPNEXUS": 1.01
+ },
+ "cache": {
+ "bids": {}
+ },
+ "channel": {
+ "name": "video",
+ "version": "1.0"
+ },
+ "targeting": {
+ "includewinners": false,
+ "pricegranularity": {
+ "precision": 2,
+ "ranges": [
+ {
+ "max": 20,
+ "increment": 0.10
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "expectedBidResponse": {
+ "id": "some-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "appnexus-bid",
+ "impid": "some-impression-id",
+ "price": 1.01
+ }
+ ],
+ "seat": "Appnexus"
+ }
+ ],
+ "bidid": "test bid id",
+ "cur": "USD",
+ "nbr": 0
+ },
+ "expectedReturnCode": 200
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/exemplary/bidder-adjustment-factors-case-insensitive.json b/endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive.json
similarity index 100%
rename from endpoints/openrtb2/sample-requests/valid-whole/exemplary/bidder-adjustment-factors-case-insensitive.json
rename to endpoints/openrtb2/sample-requests/valid-whole/exemplary/bid-adj-factors-case-insensitive.json
diff --git a/exchange/bidder.go b/exchange/bidder.go
index dfdb7cdf85f..40135787b25 100644
--- a/exchange/bidder.go
+++ b/exchange/bidder.go
@@ -348,9 +348,9 @@ func (bidder *bidderAdapter) requestBid(ctx context.Context, bidderRequest Bidde
}
adjustmentFactor := 1.0
- if givenAdjustment, ok := bidRequestOptions.bidAdjustments[bidderName.String()]; ok {
+ if givenAdjustment, ok := bidRequestOptions.bidAdjustments[(strings.ToLower(bidderName.String()))]; ok {
adjustmentFactor = givenAdjustment
- } else if givenAdjustment, ok := bidRequestOptions.bidAdjustments[bidderRequest.BidderName.String()]; ok {
+ } else if givenAdjustment, ok := bidRequestOptions.bidAdjustments[(strings.ToLower(bidderRequest.BidderName.String()))]; ok {
adjustmentFactor = givenAdjustment
}
diff --git a/exchange/bidder_test.go b/exchange/bidder_test.go
index 65f6b795247..09c811ba9c6 100644
--- a/exchange/bidder_test.go
+++ b/exchange/bidder_test.go
@@ -2672,7 +2672,7 @@ func TestExtraBidWithBidAdjustments(t *testing.T) {
},
BidType: openrtb_ext.BidTypeBanner,
DealPriority: 4,
- Seat: "pubmatic",
+ Seat: "PUBMATIC",
},
{
Bid: &openrtb2.Bid{
@@ -2699,7 +2699,7 @@ func TestExtraBidWithBidAdjustments(t *testing.T) {
BidType: openrtb_ext.BidTypeVideo,
OriginalBidCPM: 7,
OriginalBidCur: "USD",
- BidMeta: &openrtb_ext.ExtBidPrebidMeta{AdapterCode: string(openrtb_ext.BidderPubmatic)},
+ BidMeta: &openrtb_ext.ExtBidPrebidMeta{AdapterCode: "PUBMATIC"},
}},
Seat: "groupm",
Currency: "USD",
@@ -2715,9 +2715,9 @@ func TestExtraBidWithBidAdjustments(t *testing.T) {
BidType: openrtb_ext.BidTypeBanner,
OriginalBidCur: "USD",
OriginalBidCPM: 3,
- BidMeta: &openrtb_ext.ExtBidPrebidMeta{AdapterCode: string(openrtb_ext.BidderPubmatic)},
+ BidMeta: &openrtb_ext.ExtBidPrebidMeta{AdapterCode: "PUBMATIC"},
}},
- Seat: string(openrtb_ext.BidderPubmatic),
+ Seat: "PUBMATIC",
Currency: "USD",
},
}
@@ -2727,10 +2727,10 @@ func TestExtraBidWithBidAdjustments(t *testing.T) {
bidderReq := BidderRequest{
BidRequest: &openrtb2.BidRequest{Imp: []openrtb2.Imp{{ID: "impId"}}},
- BidderName: openrtb_ext.BidderPubmatic,
+ BidderName: "PUBMATIC",
}
bidAdjustments := map[string]float64{
- string(openrtb_ext.BidderPubmatic): 2,
+ string(openrtb_ext.BidderPubmatic): 2, // All lowercase value in bid adjustments to simulate it being case insensitive
"groupm": 3,
}
@@ -2745,7 +2745,7 @@ func TestExtraBidWithBidAdjustments(t *testing.T) {
openrtb_ext.ExtAlternateBidderCodes{
Enabled: true,
Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
- string(openrtb_ext.BidderPubmatic): {
+ "PUBMATIC": {
Enabled: true,
AllowedBidderCodes: []string{"groupm"},
},
diff --git a/exchange/utils.go b/exchange/utils.go
index 7d5beb64fb0..4fe9af12ff3 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -899,8 +899,12 @@ func parseRequestDebugValues(test int8, requestExtPrebid *openrtb_ext.ExtRequest
}
func getExtBidAdjustmentFactors(requestExtPrebid *openrtb_ext.ExtRequestPrebid) map[string]float64 {
- if requestExtPrebid != nil {
- return requestExtPrebid.BidAdjustmentFactors
+ if requestExtPrebid != nil && requestExtPrebid.BidAdjustmentFactors != nil {
+ caseInsensitiveMap := make(map[string]float64, len(requestExtPrebid.BidAdjustmentFactors))
+ for bidder, bidAdjFactor := range requestExtPrebid.BidAdjustmentFactors {
+ caseInsensitiveMap[strings.ToLower(bidder)] = bidAdjFactor
+ }
+ return caseInsensitiveMap
}
return nil
}
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index 0dbf5b38e5c..a1e71b30c23 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -1834,6 +1834,11 @@ func TestGetExtBidAdjustmentFactors(t *testing.T) {
requestExtPrebid: &openrtb_ext.ExtRequestPrebid{BidAdjustmentFactors: map[string]float64{"bid-factor": 1.0}},
outBidAdjustmentFactors: map[string]float64{"bid-factor": 1.0},
},
+ {
+ desc: "BidAdjustmentFactors contains uppercase bidders, expect case insensitve map returned",
+ requestExtPrebid: &openrtb_ext.ExtRequestPrebid{BidAdjustmentFactors: map[string]float64{"Bidder": 1.0, "APPNEXUS": 2.0}},
+ outBidAdjustmentFactors: map[string]float64{"bidder": 1.0, "appnexus": 2.0},
+ },
}
for _, test := range testCases {
actualBidAdjustmentFactors := getExtBidAdjustmentFactors(test.requestExtPrebid)
From 17109ca1a600463f4ba18da6ab2bee43cf88c020 Mon Sep 17 00:00:00 2001
From: Scott Kay
Date: Tue, 17 Oct 2023 23:42:12 -0400
Subject: [PATCH 16/34] Welcome Back: yeahmobi (#3228)
---
adapters/yeahmobi/params_test.go | 47 +++++
adapters/yeahmobi/yeahmobi.go | 189 ++++++++++++++++++
adapters/yeahmobi/yeahmobi_test.go | 28 +++
.../yeahmobitest/exemplary/no-bid.json | 51 +++++
.../yeahmobitest/exemplary/simple-banner.json | 81 ++++++++
.../exemplary/simple-native-1.1.json | 82 ++++++++
.../yeahmobitest/exemplary/simple-native.json | 82 ++++++++
.../yeahmobitest/exemplary/simple-video.json | 89 +++++++++
.../supplemental/bad_imp_ext.json | 21 ++
.../supplemental/bad_imp_ext_bidder.json | 23 +++
.../supplemental/bad_response.json | 55 +++++
.../yeahmobitest/supplemental/status_400.json | 55 +++++
.../yeahmobitest/supplemental/status_500.json | 55 +++++
exchange/adapter_builders.go | 2 +
exchange/adapter_util.go | 1 -
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_yeahmobi.go | 7 +
static/bidder-info/yeahmobi.yaml | 9 +
static/bidder-params/yeahmobi.json | 21 ++
19 files changed, 899 insertions(+), 1 deletion(-)
create mode 100644 adapters/yeahmobi/params_test.go
create mode 100644 adapters/yeahmobi/yeahmobi.go
create mode 100644 adapters/yeahmobi/yeahmobi_test.go
create mode 100644 adapters/yeahmobi/yeahmobitest/exemplary/no-bid.json
create mode 100644 adapters/yeahmobi/yeahmobitest/exemplary/simple-banner.json
create mode 100644 adapters/yeahmobi/yeahmobitest/exemplary/simple-native-1.1.json
create mode 100644 adapters/yeahmobi/yeahmobitest/exemplary/simple-native.json
create mode 100644 adapters/yeahmobi/yeahmobitest/exemplary/simple-video.json
create mode 100644 adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext.json
create mode 100644 adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext_bidder.json
create mode 100644 adapters/yeahmobi/yeahmobitest/supplemental/bad_response.json
create mode 100644 adapters/yeahmobi/yeahmobitest/supplemental/status_400.json
create mode 100644 adapters/yeahmobi/yeahmobitest/supplemental/status_500.json
create mode 100644 openrtb_ext/imp_yeahmobi.go
create mode 100644 static/bidder-info/yeahmobi.yaml
create mode 100644 static/bidder-params/yeahmobi.json
diff --git a/adapters/yeahmobi/params_test.go b/adapters/yeahmobi/params_test.go
new file mode 100644
index 00000000000..997bf93a53f
--- /dev/null
+++ b/adapters/yeahmobi/params_test.go
@@ -0,0 +1,47 @@
+package yeahmobi
+
+import (
+ "encoding/json"
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "testing"
+)
+
+func TestValidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, validParam := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderYeahmobi, json.RawMessage(validParam)); err != nil {
+ t.Errorf("Schema rejected yeahmobi params: %s", validParam)
+ }
+ }
+}
+
+// TestInvalidParams makes sure that the yeahmobi 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 {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, invalidParam := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderYeahmobi, json.RawMessage(invalidParam)); err == nil {
+ t.Errorf("Schema allowed unexpected params: %s", invalidParam)
+ }
+ }
+}
+
+var validParams = []string{
+ `{"pubId": "11233", "zoneId": "sin"}`,
+ `{"pubId": "11244", "zoneId": "iad"}`,
+}
+
+var invalidParams = []string{
+ `{"pubId": "11233"}`,
+ `{"zoneId": "aaa"}`,
+ `{"pubId": 123, "zoneId": "sin"}`,
+ `{"pubId": "", "zoneId": "iad"}`,
+ `{"pubId": "11233", "zoneId": ""}`,
+}
diff --git a/adapters/yeahmobi/yeahmobi.go b/adapters/yeahmobi/yeahmobi.go
new file mode 100644
index 00000000000..ede25387ce2
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobi.go
@@ -0,0 +1,189 @@
+package yeahmobi
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+type adapter struct {
+ EndpointTemplate *template.Template
+}
+
+// Builder builds a new instance of the Yeahmobi 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 := &adapter{
+ EndpointTemplate: template,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ var adapterRequests []*adapters.RequestData
+
+ adapterRequest, errs := a.makeRequest(request)
+ if errs == nil {
+ adapterRequests = append(adapterRequests, adapterRequest)
+ }
+
+ return adapterRequests, errs
+}
+
+func (a *adapter) makeRequest(request *openrtb2.BidRequest) (*adapters.RequestData, []error) {
+ var errs []error
+
+ yeahmobiExt, errs := getYeahmobiExt(request)
+
+ if yeahmobiExt == nil {
+ return nil, errs
+ }
+ endPoint, err := a.getEndpoint(yeahmobiExt)
+ if err != nil {
+ return nil, append(errs, err)
+ }
+ transform(request)
+ reqBody, err := json.Marshal(request)
+
+ if err != nil {
+ return nil, append(errs, err)
+ }
+
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+
+ return &adapters.RequestData{
+ Method: "POST",
+ Uri: endPoint,
+ Body: reqBody,
+ Headers: headers,
+ }, errs
+}
+
+func transform(request *openrtb2.BidRequest) {
+ for i, imp := range request.Imp {
+ if imp.Native != nil {
+ var nativeRequest map[string]interface{}
+ nativeCopyRequest := make(map[string]interface{})
+ err := json.Unmarshal([]byte(request.Imp[i].Native.Request), &nativeRequest)
+ //just ignore the bad native request
+ if err == nil {
+ _, exists := nativeRequest["native"]
+ if exists {
+ continue
+ }
+
+ nativeCopyRequest["native"] = nativeRequest
+ nativeReqByte, err := json.Marshal(nativeCopyRequest)
+ //just ignore the bad native request
+ if err != nil {
+ continue
+ }
+
+ nativeCopy := *request.Imp[i].Native
+ nativeCopy.Request = string(nativeReqByte)
+ request.Imp[i].Native = &nativeCopy
+ }
+ }
+ }
+}
+
+func getYeahmobiExt(request *openrtb2.BidRequest) (*openrtb_ext.ExtImpYeahmobi, []error) {
+ var extImpYeahmobi openrtb_ext.ExtImpYeahmobi
+ var errs []error
+
+ for _, imp := range request.Imp {
+ var extBidder adapters.ExtImpBidder
+ err := json.Unmarshal(imp.Ext, &extBidder)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+ err = json.Unmarshal(extBidder.Bidder, &extImpYeahmobi)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+ break
+ }
+
+ return &extImpYeahmobi, errs
+
+}
+
+func (a *adapter) getEndpoint(ext *openrtb_ext.ExtImpYeahmobi) (string, error) {
+ return macros.ResolveMacros(a.EndpointTemplate, macros.EndpointTemplateParams{Host: "gw-" + url.QueryEscape(ext.ZoneId) + "-bid.yeahtargeter.com"})
+}
+
+// MakeBids make the bids for the bid response.
+func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if response.StatusCode == http.StatusNoContent {
+ return nil, nil
+ }
+
+ if response.StatusCode == http.StatusBadRequest {
+ return nil, []error{&errortypes.BadInput{
+ Message: fmt.Sprintf("Unexpected status code: %d.", response.StatusCode),
+ }}
+ }
+
+ if response.StatusCode != http.StatusOK {
+ return nil, []error{&errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Unexpected status code: %d.", response.StatusCode),
+ }}
+ }
+
+ var bidResp openrtb2.BidResponse
+
+ if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+ return nil, []error{err}
+ }
+
+ bidResponse := adapters.NewBidderResponseWithBidsCapacity(1)
+
+ for _, sb := range bidResp.SeatBid {
+ for i := range sb.Bid {
+ var mediaType = getBidType(sb.Bid[i].ImpID, internalRequest.Imp)
+ bidResponse.Bids = append(bidResponse.Bids, &adapters.TypedBid{
+ Bid: &sb.Bid[i],
+ BidType: mediaType,
+ })
+ }
+ }
+ return bidResponse, nil
+
+}
+
+func getBidType(impId string, imps []openrtb2.Imp) openrtb_ext.BidType {
+ bidType := openrtb_ext.BidTypeBanner
+ for _, imp := range imps {
+ if imp.ID == impId {
+ if imp.Banner != nil {
+ break
+ }
+ if imp.Video != nil {
+ bidType = openrtb_ext.BidTypeVideo
+ break
+ }
+ if imp.Native != nil {
+ bidType = openrtb_ext.BidTypeNative
+ break
+ }
+
+ }
+ }
+ return bidType
+}
diff --git a/adapters/yeahmobi/yeahmobi_test.go b/adapters/yeahmobi/yeahmobi_test.go
new file mode 100644
index 00000000000..0b1c39ef214
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobi_test.go
@@ -0,0 +1,28 @@
+package yeahmobi
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderYeahmobi, config.Adapter{
+ Endpoint: "https://{{.Host}}/prebid/bid"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "yeahmobitest", bidder)
+}
+
+func TestEndpointTemplateMalformed(t *testing.T) {
+ _, buildErr := Builder(openrtb_ext.BidderYeahmobi, config.Adapter{
+ Endpoint: "{{Malformed}}"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+
+ assert.Error(t, buildErr)
+}
diff --git a/adapters/yeahmobi/yeahmobitest/exemplary/no-bid.json b/adapters/yeahmobi/yeahmobitest/exemplary/no-bid.json
new file mode 100644
index 00000000000..723cc40e664
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/exemplary/no-bid.json
@@ -0,0 +1,51 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 204,
+ "body": {}
+ }
+ }
+ ],
+
+ "expectedBidResponses": []
+
+}
diff --git a/adapters/yeahmobi/yeahmobitest/exemplary/simple-banner.json b/adapters/yeahmobi/yeahmobitest/exemplary/simple-banner.json
new file mode 100644
index 00000000000..7499a7874e7
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/exemplary/simple-banner.json
@@ -0,0 +1,81 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "seat": "ttx",
+ "bid": [{
+ "id": "8ee514f1-b2b8-4abb-89fd-084437d1e800",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some-ads",
+ "crid": "crid_testid"
+ }]
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "8ee514f1-b2b8-4abb-89fd-084437d1e800",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some-ads",
+ "crid": "crid_testid"
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/exemplary/simple-native-1.1.json b/adapters/yeahmobi/yeahmobitest/exemplary/simple-native-1.1.json
new file mode 100644
index 00000000000..7e93eb68246
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/exemplary/simple-native-1.1.json
@@ -0,0 +1,82 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "native": {
+ "request": "{\"native\":{\"ver\":\"1.2\",\"context\":1,\"plcmttype\":4,\"plcmtcnt\":1,\"assets\":[{\"id\":2,\"required\":1,\"title\":{\"len\":90}},{\"id\":6,\"required\":1,\"img\":{\"type\":3,\"wmin\":128,\"hmin\":128,\"mimes\":[\"image/jpg\",\"image/jpeg\",\"image/png\"]}},{\"id\":7,\"required\":1,\"data\":{\"type\":2,\"len\":120}}]}}",
+ "ver": "1.2"
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+ "httpcalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "native": {
+ "request": "{\"native\":{\"ver\":\"1.2\",\"context\":1,\"plcmttype\":4,\"plcmtcnt\":1,\"assets\":[{\"id\":2,\"required\":1,\"title\":{\"len\":90}},{\"id\":6,\"required\":1,\"img\":{\"type\":3,\"wmin\":128,\"hmin\":128,\"mimes\":[\"image/jpg\",\"image/jpeg\",\"image/png\"]}},{\"id\":7,\"required\":1,\"data\":{\"type\":2,\"len\":120}}]}}",
+ "ver": "1.2"
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "8400d766-58b3-47d4-80d7-6658b337d403",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some ads",
+ "crid": "crid_testid"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "8400d766-58b3-47d4-80d7-6658b337d403",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some ads",
+ "crid": "crid_testid"
+
+ },
+ "type": "native"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/exemplary/simple-native.json b/adapters/yeahmobi/yeahmobitest/exemplary/simple-native.json
new file mode 100644
index 00000000000..894e835bc07
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/exemplary/simple-native.json
@@ -0,0 +1,82 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "native": {
+ "request": "{\"ver\":\"1.2\",\"context\":1,\"plcmttype\":4,\"plcmtcnt\":1,\"assets\":[{\"id\":2,\"required\":1,\"title\":{\"len\":90}},{\"id\":6,\"required\":1,\"img\":{\"type\":3,\"wmin\":128,\"hmin\":128,\"mimes\":[\"image/jpg\",\"image/jpeg\",\"image/png\"]}},{\"id\":7,\"required\":1,\"data\":{\"type\":2,\"len\":120}}]}",
+ "ver": "1.2"
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+ "httpcalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "native": {
+ "request": "{\"native\":{\"assets\":[{\"id\":2,\"required\":1,\"title\":{\"len\":90}},{\"id\":6,\"img\":{\"hmin\":128,\"mimes\":[\"image/jpg\",\"image/jpeg\",\"image/png\"],\"type\":3,\"wmin\":128},\"required\":1},{\"data\":{\"len\":120,\"type\":2},\"id\":7,\"required\":1}],\"context\":1,\"plcmtcnt\":1,\"plcmttype\":4,\"ver\":\"1.2\"}}",
+ "ver": "1.2"
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "8400d766-58b3-47d4-80d7-6658b337d403",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some ads",
+ "crid": "crid_testid"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "8400d766-58b3-47d4-80d7-6658b337d403",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some ads",
+ "crid": "crid_testid"
+
+ },
+ "type": "native"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/exemplary/simple-video.json b/adapters/yeahmobi/yeahmobitest/exemplary/simple-video.json
new file mode 100644
index 00000000000..b040d31b5f6
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/exemplary/simple-video.json
@@ -0,0 +1,89 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 300,
+ "h": 250,
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "video": {
+ "w": 300,
+ "h": 250,
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "seat": "ttx",
+ "bid": [{
+ "id": "8ee514f1-b2b8-4abb-89fd-084437d1e800",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some-ads",
+ "crid": "crid_testid"
+ }]
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "8ee514f1-b2b8-4abb-89fd-084437d1e800",
+ "impid": "test-imp-id",
+ "price": 1.2,
+ "adm": "some-ads",
+ "crid": "crid_testid"
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext.json b/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext.json
new file mode 100644
index 00000000000..444e1e7a8d8
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext.json
@@ -0,0 +1,21 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": "aaa"
+ }
+ ]
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "json: cannot unmarshal string into Go value of type adapters.ExtImpBidder",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext_bidder.json b/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext_bidder.json
new file mode 100644
index 00000000000..89697d37141
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/supplemental/bad_imp_ext_bidder.json
@@ -0,0 +1,23 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": "aa"
+ }
+ }
+ ]
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "json: cannot unmarshal string into Go value of type openrtb_ext.ExtImpYeahmobi",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/supplemental/bad_response.json b/adapters/yeahmobi/yeahmobitest/supplemental/bad_response.json
new file mode 100644
index 00000000000..0d77e5af93a
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/supplemental/bad_response.json
@@ -0,0 +1,55 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": "{\"id\":test-request-id"
+ }
+ }
+ ],
+
+ "expectedMakeBidsErrors": [
+ {
+ "comparison": "literal",
+ "value": "json: cannot unmarshal string into Go value of type openrtb2.BidResponse"
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/supplemental/status_400.json b/adapters/yeahmobi/yeahmobitest/supplemental/status_400.json
new file mode 100644
index 00000000000..74bb869218c
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/supplemental/status_400.json
@@ -0,0 +1,55 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 400,
+ "body": {}
+ }
+ }
+ ],
+
+ "expectedMakeBidsErrors": [
+ {
+ "comparison": "literal",
+ "value": "Unexpected status code: 400."
+ }
+ ]
+}
diff --git a/adapters/yeahmobi/yeahmobitest/supplemental/status_500.json b/adapters/yeahmobi/yeahmobitest/supplemental/status_500.json
new file mode 100644
index 00000000000..2d3264de897
--- /dev/null
+++ b/adapters/yeahmobi/yeahmobitest/supplemental/status_500.json
@@ -0,0 +1,55 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://gw-sin-bid.yeahtargeter.com/prebid/bid",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id":"test-imp-id",
+ "banner": {
+ "format": [{"w": 300, "h": 50}]
+ },
+ "ext": {
+ "bidder": {
+ "pubId": "fake-pub-id",
+ "zoneId": "sin"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 500,
+ "body": {}
+ }
+ }
+ ],
+
+ "expectedMakeBidsErrors": [
+ {
+ "comparison": "literal",
+ "value": "Unexpected status code: 500."
+ }
+ ]
+}
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index f758b3ee33b..ea9e99cfb6c 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -179,6 +179,7 @@ import (
"github.com/prebid/prebid-server/adapters/vrtcal"
"github.com/prebid/prebid-server/adapters/xeworks"
"github.com/prebid/prebid-server/adapters/yahooAds"
+ "github.com/prebid/prebid-server/adapters/yeahmobi"
"github.com/prebid/prebid-server/adapters/yieldlab"
"github.com/prebid/prebid-server/adapters/yieldmo"
"github.com/prebid/prebid-server/adapters/yieldone"
@@ -389,6 +390,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderYahooAds: yahooAds.Builder,
openrtb_ext.BidderYahooAdvertising: yahooAds.Builder,
openrtb_ext.BidderYahooSSP: yahooAds.Builder,
+ openrtb_ext.BidderYeahmobi: yeahmobi.Builder,
openrtb_ext.BidderYieldlab: yieldlab.Builder,
openrtb_ext.BidderYieldmo: yieldmo.Builder,
openrtb_ext.BidderYieldone: yieldone.Builder,
diff --git a/exchange/adapter_util.go b/exchange/adapter_util.go
index 1890635cb3d..a5a232bbd93 100644
--- a/exchange/adapter_util.go
+++ b/exchange/adapter_util.go
@@ -115,7 +115,6 @@ func GetDisabledBidderWarningMessages(infos config.BidderInfos) map[string]strin
"verizonmedia": `Bidder "verizonmedia" is no longer available in Prebid Server. Please update your configuration.`,
"brightroll": `Bidder "brightroll" is no longer available in Prebid Server. Please update your configuration.`,
"engagebdr": `Bidder "engagebdr" is no longer available in Prebid Server. Please update your configuration.`,
- "yeahmobi": `Bidder "yeahmobi" is no longer available in Prebid Server. Please update your configuration.`,
"ninthdecimal": `Bidder "ninthdecimal" is no longer available in Prebid Server. Please update your configuration.`,
"kubient": `Bidder "kubient" is no longer available in Prebid Server. Please update your configuration.`,
"definemedia": `Bidder "definemedia" is no longer available in Prebid Server. Please update your configuration.`,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 8b0262bca19..1caa625c0d1 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -215,6 +215,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderYahooAds,
BidderYahooAdvertising,
BidderYahooSSP,
+ BidderYeahmobi,
BidderYieldlab,
BidderYieldmo,
BidderYieldone,
@@ -505,6 +506,7 @@ const (
BidderYahooAds BidderName = "yahooAds"
BidderYahooAdvertising BidderName = "yahooAdvertising"
BidderYahooSSP BidderName = "yahoossp"
+ BidderYeahmobi BidderName = "yeahmobi"
BidderYieldlab BidderName = "yieldlab"
BidderYieldmo BidderName = "yieldmo"
BidderYieldone BidderName = "yieldone"
diff --git a/openrtb_ext/imp_yeahmobi.go b/openrtb_ext/imp_yeahmobi.go
new file mode 100644
index 00000000000..16948d807c4
--- /dev/null
+++ b/openrtb_ext/imp_yeahmobi.go
@@ -0,0 +1,7 @@
+package openrtb_ext
+
+// ExtImpYeahmobi defines the contract for bidrequest.imp[i].ext.prebid.bidder.yeahmobi
+type ExtImpYeahmobi struct {
+ PubId string `json:"pubId"`
+ ZoneId string `json:"zoneId"`
+}
diff --git a/static/bidder-info/yeahmobi.yaml b/static/bidder-info/yeahmobi.yaml
new file mode 100644
index 00000000000..975bf044c5b
--- /dev/null
+++ b/static/bidder-info/yeahmobi.yaml
@@ -0,0 +1,9 @@
+endpoint: "https://{{.Host}}/prebid/bid"
+maintainer:
+ email: "developer@yeahmobi.com"
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
+ - native
diff --git a/static/bidder-params/yeahmobi.json b/static/bidder-params/yeahmobi.json
new file mode 100644
index 00000000000..fe26fa7255a
--- /dev/null
+++ b/static/bidder-params/yeahmobi.json
@@ -0,0 +1,21 @@
+
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Yeahmobi Adapter Params",
+ "description": "A schema which validates params accepted by the Yeahmobi adapter",
+
+ "type": "object",
+ "properties": {
+ "pubId": {
+ "type": "string",
+ "description": "Publisher ID",
+ "minLength": 1
+ },
+ "zoneId": {
+ "type": "string",
+ "description": "Zone Id",
+ "minLength": 1
+ }
+ },
+ "required": ["pubId", "zoneId"]
+}
\ No newline at end of file
From 11ef54d1989a624eb8c39e9b7183718fb82c67e0 Mon Sep 17 00:00:00 2001
From: Scott Kay
Date: Wed, 18 Oct 2023 01:57:26 -0400
Subject: [PATCH 17/34] Adapter Name Case Insensitive: First Party Data (#3211)
---
exchange/exchange.go | 1 +
exchange/utils.go | 54 +++--
exchange/utils_test.go | 151 ++++++++++---
firstpartydata/first_party_data.go | 24 +--
firstpartydata/first_party_data_test.go | 198 +++++++++---------
.../bidder-config-case-normalize.json | 28 +++
...er-config-duplicated-case-insensitive.json | 63 ++++++
...r-config-request-alias-case-sensitive.json | 28 +++
.../global-fpd-defined-app-content-data.json | 2 +-
...-correct-case-insensitive-integration.json | 88 ++++++++
.../resolvefpd/bidder-fpd-alias-matches.json | 25 +++
.../bidder-fpd-alias-not-matches.json | 21 ++
.../resolvefpd/bidder-fpd-case-normalize.json | 25 +++
.../tests/resolvefpd/bidder-fpd-only-app.json | 55 ++---
.../resolvefpd/bidder-fpd-only-site.json | 55 ++---
.../resolvefpd/bidder-fpd-only-user.json | 65 +++---
.../bidder-fpd-site-content-data-only.json | 75 +++----
...bidder-fpd-app-content-data-user-data.json | 77 +++----
.../resolvefpd/global-and-bidder-fpd-app.json | 62 +++---
.../global-and-bidder-fpd-site-user.json | 66 +++---
.../global-and-bidder-fpd-site.json | 52 ++---
.../global-and-bidder-fpd-user.json | 30 +--
.../global-and-bidder-site-content-data.json | 90 ++++----
...lobal-and-no-bidder-fpd-site-app-user.json | 102 ++++-----
...d-no-bidder-fpd-site-content-app-user.json | 92 ++++----
.../tests/resolvefpd/global-fpd-only-app.json | 98 ++++-----
.../global-fpd-only-excludes-some.json | 138 ++++++++++++
.../global-fpd-only-include-all-explicit.json | 144 +++++++++++++
.../global-fpd-only-include-all-implicit.json | 141 +++++++++++++
.../resolvefpd/global-fpd-only-site.json | 102 ++++-----
.../req-and-bidder-fpd-site-content.json | 102 ++++-----
.../tests/resolvefpd/req-app-not-defined.json | 6 +-
.../resolvefpd/req-site-not-defined.json | 6 +-
.../resolvefpd/req-user-not-defined.json | 10 +-
.../resolvefpd/site-page-empty-conflict.json | 6 +-
openrtb_ext/bidders.go | 9 +
36 files changed, 1593 insertions(+), 698 deletions(-)
create mode 100644 firstpartydata/tests/extractbidderconfigfpd/bidder-config-case-normalize.json
create mode 100644 firstpartydata/tests/extractbidderconfigfpd/bidder-config-duplicated-case-insensitive.json
create mode 100644 firstpartydata/tests/extractbidderconfigfpd/bidder-config-request-alias-case-sensitive.json
create mode 100644 firstpartydata/tests/extractfpdforbidders/two-bidders-correct-case-insensitive-integration.json
create mode 100644 firstpartydata/tests/resolvefpd/bidder-fpd-alias-matches.json
create mode 100644 firstpartydata/tests/resolvefpd/bidder-fpd-alias-not-matches.json
create mode 100644 firstpartydata/tests/resolvefpd/bidder-fpd-case-normalize.json
create mode 100644 firstpartydata/tests/resolvefpd/global-fpd-only-excludes-some.json
create mode 100644 firstpartydata/tests/resolvefpd/global-fpd-only-include-all-explicit.json
create mode 100644 firstpartydata/tests/resolvefpd/global-fpd-only-include-all-implicit.json
diff --git a/exchange/exchange.go b/exchange/exchange.go
index 7544b4a7020..0810ad814ab 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -223,6 +223,7 @@ type BidderRequest struct {
BidderCoreName openrtb_ext.BidderName
BidderLabels metrics.AdapterLabels
BidderStoredResponses map[string]json.RawMessage
+ IsRequestAlias bool
ImpReplaceImpId map[string]bool
}
diff --git a/exchange/utils.go b/exchange/utils.go
index 4fe9af12ff3..a67a87b9c97 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -214,9 +214,7 @@ func (rs *requestSplitter) cleanOpenRTBRequests(ctx context.Context,
}
- if auctionReq.FirstPartyData != nil && auctionReq.FirstPartyData[bidderRequest.BidderName] != nil {
- applyFPD(auctionReq.FirstPartyData[bidderRequest.BidderName], bidderRequest.BidRequest)
- }
+ applyFPD(auctionReq.FirstPartyData, bidderRequest)
privacyEnforcement.TID = !auctionReq.Activities.Allow(privacy.ActivityTransmitTIDs, scopedName, privacy.NewRequestFromBidRequest(*req))
@@ -335,7 +333,7 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
var errs []error
for bidder, imps := range impsByBidder {
- coreBidder := resolveBidder(bidder, aliases)
+ coreBidder, isRequestAlias := resolveBidder(bidder, aliases)
reqCopy := *req.BidRequest
reqCopy.Imp = imps
@@ -355,6 +353,7 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
bidderRequest := BidderRequest{
BidderName: openrtb_ext.BidderName(bidder),
BidderCoreName: coreBidder,
+ IsRequestAlias: isRequestAlias,
BidRequest: &reqCopy,
BidderLabels: metrics.AdapterLabels{
Source: auctionRequest.LegacyLabels.Source,
@@ -768,12 +767,14 @@ func setUserExtWithCopy(request *openrtb2.BidRequest, userExtJSON json.RawMessag
}
// resolveBidder returns the known BidderName associated with bidder, if bidder is an alias. If it's not an alias, the bidder is returned.
-func resolveBidder(bidder string, aliases map[string]string) openrtb_ext.BidderName {
+func resolveBidder(bidder string, requestAliases map[string]string) (openrtb_ext.BidderName, bool) {
normalisedBidderName, _ := openrtb_ext.NormalizeBidderName(bidder)
- if coreBidder, ok := aliases[bidder]; ok {
- return openrtb_ext.BidderName(coreBidder)
+
+ if coreBidder, ok := requestAliases[bidder]; ok {
+ return openrtb_ext.BidderName(coreBidder), true
}
- return normalisedBidderName
+
+ return normalisedBidderName, false
}
// parseAliases parses the aliases from the BidRequest
@@ -909,20 +910,36 @@ func getExtBidAdjustmentFactors(requestExtPrebid *openrtb_ext.ExtRequestPrebid)
return nil
}
-func applyFPD(fpd *firstpartydata.ResolvedFirstPartyData, bidReq *openrtb2.BidRequest) {
- if fpd.Site != nil {
- bidReq.Site = fpd.Site
+func applyFPD(fpd map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData, r BidderRequest) {
+ if fpd == nil {
+ return
}
- if fpd.App != nil {
- bidReq.App = fpd.App
+
+ bidder := r.BidderCoreName
+ if r.IsRequestAlias {
+ bidder = r.BidderName
}
- if fpd.User != nil {
+
+ fpdToApply, exists := fpd[bidder]
+ if !exists || fpdToApply == nil {
+ return
+ }
+
+ if fpdToApply.Site != nil {
+ r.BidRequest.Site = fpdToApply.Site
+ }
+
+ if fpdToApply.App != nil {
+ r.BidRequest.App = fpdToApply.App
+ }
+
+ if fpdToApply.User != nil {
//BuyerUID is a value obtained between fpd extraction and fpd application.
//BuyerUID needs to be set back to fpd before applying this fpd to final bidder request
- if bidReq.User != nil && len(bidReq.User.BuyerUID) > 0 {
- fpd.User.BuyerUID = bidReq.User.BuyerUID
+ if r.BidRequest.User != nil && len(r.BidRequest.User.BuyerUID) > 0 {
+ fpdToApply.User.BuyerUID = r.BidRequest.User.BuyerUID
}
- bidReq.User = fpd.User
+ r.BidRequest.User = fpdToApply.User
}
}
@@ -934,13 +951,14 @@ func buildBidResponseRequest(req *openrtb2.BidRequest,
bidderToBidderResponse := make(map[openrtb_ext.BidderName]BidderRequest)
for bidderName, impResps := range bidderImpResponses {
- resolvedBidder := resolveBidder(string(bidderName), aliases)
+ resolvedBidder, isRequestAlias := resolveBidder(string(bidderName), aliases)
bidderToBidderResponse[bidderName] = BidderRequest{
BidRequest: req,
BidderCoreName: resolvedBidder,
BidderName: bidderName,
BidderStoredResponses: impResps,
ImpReplaceImpId: bidderImpReplaceImpID[string(resolvedBidder)],
+ IsRequestAlias: isRequestAlias,
BidderLabels: metrics.AdapterLabels{Adapter: resolvedBidder},
}
}
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index a1e71b30c23..1be1aaa8493 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -3242,60 +3242,145 @@ func TestCleanOpenRTBRequestsBidAdjustment(t *testing.T) {
}
func TestApplyFPD(t *testing.T) {
-
testCases := []struct {
- description string
- inputFpd firstpartydata.ResolvedFirstPartyData
- inputRequest openrtb2.BidRequest
- expectedRequest openrtb2.BidRequest
+ description string
+ inputFpd map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData
+ inputBidderName string
+ inputBidderCoreName string
+ inputBidderIsRequestAlias bool
+ inputRequest openrtb2.BidRequest
+ expectedRequest openrtb2.BidRequest
}{
{
- description: "req.Site defined; bidderFPD.Site not defined; expect request.Site remains the same",
- inputFpd: firstpartydata.ResolvedFirstPartyData{Site: nil, App: nil, User: nil},
- inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
- expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ description: "fpd-nil",
+ inputFpd: nil,
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ },
+ {
+ description: "fpd-bidderdata-nil",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": nil,
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ },
+ {
+ description: "fpd-bidderdata-notdefined",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "differentBidder": {App: &openrtb2.App{ID: "AppId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ },
+ {
+ description: "fpd-bidderdata-alias",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "alias": {App: &openrtb2.App{ID: "AppId"}},
+ },
+ inputBidderName: "alias",
+ inputBidderCoreName: "bidder",
+ inputBidderIsRequestAlias: true,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
+ },
+ {
+ description: "req.Site defined; bidderFPD.Site not defined; expect request.Site remains the same",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {Site: nil, App: nil, User: nil},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
},
{
description: "req.Site, req.App, req.User are not defined; bidderFPD.App, bidderFPD.Site and bidderFPD.User defined; " +
"expect req.Site, req.App, req.User to be overriden by bidderFPD.App, bidderFPD.Site and bidderFPD.User",
- inputFpd: firstpartydata.ResolvedFirstPartyData{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
- inputRequest: openrtb2.BidRequest{},
- expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
},
{
- description: "req.Site, defined; bidderFPD.App defined; expect request.App to be overriden by bidderFPD.App; expect req.Site remains the same",
- inputFpd: firstpartydata.ResolvedFirstPartyData{App: &openrtb2.App{ID: "AppId"}},
- inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
- expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
+ description: "req.Site, defined; bidderFPD.App defined; expect request.App to be overriden by bidderFPD.App; expect req.Site remains the same",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {App: &openrtb2.App{ID: "AppId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
},
{
- description: "req.Site, req.App defined; bidderFPD.App defined; expect request.App to be overriden by bidderFPD.App",
- inputFpd: firstpartydata.ResolvedFirstPartyData{App: &openrtb2.App{ID: "AppId"}},
- inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "TestAppId"}},
- expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
+ description: "req.Site, req.App defined; bidderFPD.App defined; expect request.App to be overriden by bidderFPD.App",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {App: &openrtb2.App{ID: "AppId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "TestAppId"}},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
},
{
- description: "req.User is defined; bidderFPD.User defined; req.User has BuyerUID. Expect to see user.BuyerUID in result request",
- inputFpd: firstpartydata.ResolvedFirstPartyData{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
- inputRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserIdIn", BuyerUID: "12345"}},
- expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserId", BuyerUID: "12345"}, Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
+ description: "req.User is defined; bidderFPD.User defined; req.User has BuyerUID. Expect to see user.BuyerUID in result request",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserIdIn", BuyerUID: "12345"}},
+ expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserId", BuyerUID: "12345"}, Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
},
{
- description: "req.User is defined; bidderFPD.User defined; req.User has BuyerUID with zero length. Expect to see empty user.BuyerUID in result request",
- inputFpd: firstpartydata.ResolvedFirstPartyData{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
- inputRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserIdIn", BuyerUID: ""}},
- expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserId"}, Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
+ description: "req.User is defined; bidderFPD.User defined; req.User has BuyerUID with zero length. Expect to see empty user.BuyerUID in result request",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserIdIn", BuyerUID: ""}},
+ expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{ID: "UserId"}, Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}},
},
{
- description: "req.User is not defined; bidderFPD.User defined and has BuyerUID. Expect to see user.BuyerUID in result request",
- inputFpd: firstpartydata.ResolvedFirstPartyData{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId", BuyerUID: "FPDBuyerUID"}},
- inputRequest: openrtb2.BidRequest{},
- expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId", BuyerUID: "FPDBuyerUID"}},
+ description: "req.User is not defined; bidderFPD.User defined and has BuyerUID. Expect to see user.BuyerUID in result request",
+ inputFpd: map[openrtb_ext.BidderName]*firstpartydata.ResolvedFirstPartyData{
+ "bidderNormalized": {Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId", BuyerUID: "FPDBuyerUID"}},
+ },
+ inputBidderName: "bidderFromRequest",
+ inputBidderCoreName: "bidderNormalized",
+ inputBidderIsRequestAlias: false,
+ inputRequest: openrtb2.BidRequest{},
+ expectedRequest: openrtb2.BidRequest{Site: &openrtb2.Site{ID: "SiteId"}, App: &openrtb2.App{ID: "AppId"}, User: &openrtb2.User{ID: "UserId", BuyerUID: "FPDBuyerUID"}},
},
}
for _, testCase := range testCases {
- applyFPD(&testCase.inputFpd, &testCase.inputRequest)
+ bidderRequest := BidderRequest{
+ BidderName: openrtb_ext.BidderName(testCase.inputBidderName),
+ BidderCoreName: openrtb_ext.BidderName(testCase.inputBidderCoreName),
+ IsRequestAlias: testCase.inputBidderIsRequestAlias,
+ BidRequest: &testCase.inputRequest,
+ }
+ applyFPD(testCase.inputFpd, bidderRequest)
assert.Equal(t, testCase.expectedRequest, testCase.inputRequest, fmt.Sprintf("incorrect request after applying fpd, testcase %s", testCase.description))
}
}
diff --git a/firstpartydata/first_party_data.go b/firstpartydata/first_party_data.go
index 0fde931d445..b63feb1ec52 100644
--- a/firstpartydata/first_party_data.go
+++ b/firstpartydata/first_party_data.go
@@ -120,7 +120,9 @@ func ResolveFPD(bidRequest *openrtb2.BidRequest, fpdBidderConfigData map[openrtb
}
} else {
// only bidders in global bidder list will receive global data and bidder specific data
- for _, bidderName := range biddersWithGlobalFPD {
+ for _, bidder := range biddersWithGlobalFPD {
+ bidderName := openrtb_ext.NormalizeBidderNameOrUnchanged(bidder)
+
if _, present := allBiddersTable[string(bidderName)]; !present {
allBiddersTable[string(bidderName)] = struct{}{}
}
@@ -462,12 +464,14 @@ func buildExtData(data []byte) []byte {
// ExtractBidderConfigFPD extracts bidder specific configs from req.ext.prebid.bidderconfig
func ExtractBidderConfigFPD(reqExt *openrtb_ext.RequestExt) (map[openrtb_ext.BidderName]*openrtb_ext.ORTB2, error) {
fpd := make(map[openrtb_ext.BidderName]*openrtb_ext.ORTB2)
+
reqExtPrebid := reqExt.GetPrebid()
if reqExtPrebid != nil {
for _, bidderConfig := range reqExtPrebid.BidderConfigs {
for _, bidder := range bidderConfig.Bidders {
- if _, present := fpd[openrtb_ext.BidderName(bidder)]; present {
- //if bidder has duplicated config - throw an error
+ bidderName := openrtb_ext.NormalizeBidderNameOrUnchanged(bidder)
+
+ if _, duplicate := fpd[bidderName]; duplicate {
return nil, &errortypes.BadInput{
Message: fmt.Sprintf("multiple First Party Data bidder configs provided for bidder: %s", bidder),
}
@@ -476,18 +480,12 @@ func ExtractBidderConfigFPD(reqExt *openrtb_ext.RequestExt) (map[openrtb_ext.Bid
fpdBidderData := &openrtb_ext.ORTB2{}
if bidderConfig.Config != nil && bidderConfig.Config.ORTB2 != nil {
- if bidderConfig.Config.ORTB2.Site != nil {
- fpdBidderData.Site = bidderConfig.Config.ORTB2.Site
- }
- if bidderConfig.Config.ORTB2.App != nil {
- fpdBidderData.App = bidderConfig.Config.ORTB2.App
- }
- if bidderConfig.Config.ORTB2.User != nil {
- fpdBidderData.User = bidderConfig.Config.ORTB2.User
- }
+ fpdBidderData.Site = bidderConfig.Config.ORTB2.Site
+ fpdBidderData.App = bidderConfig.Config.ORTB2.App
+ fpdBidderData.User = bidderConfig.Config.ORTB2.User
}
- fpd[openrtb_ext.BidderName(bidder)] = fpdBidderData
+ fpd[bidderName] = fpdBidderData
}
}
reqExtPrebid.BidderConfigs = nil
diff --git a/firstpartydata/first_party_data_test.go b/firstpartydata/first_party_data_test.go
index 4c9cd7ad5e8..ffa05a31d17 100644
--- a/firstpartydata/first_party_data_test.go
+++ b/firstpartydata/first_party_data_test.go
@@ -3,6 +3,7 @@ package firstpartydata
import (
"encoding/json"
"os"
+ "path/filepath"
"reflect"
"testing"
@@ -474,13 +475,13 @@ func TestExtractBidderConfigFPD(t *testing.T) {
for _, test := range tests {
t.Run(test.Name(), func(t *testing.T) {
- filePath := testPath + "/" + test.Name()
+ path := filepath.Join(testPath, test.Name())
- fpdFile, err := loadFpdFile(filePath)
- require.NoError(t, err, "Cannot Load Test")
+ testFile, err := loadTestFile[fpdFile](path)
+ require.NoError(t, err, "Load Test File")
givenRequestExtPrebid := &openrtb_ext.ExtRequestPrebid{}
- err = json.Unmarshal(fpdFile.InputRequestData, givenRequestExtPrebid)
+ err = json.Unmarshal(testFile.InputRequestData, givenRequestExtPrebid)
require.NoError(t, err, "Cannot Load Test Conditions")
testRequest := &openrtb_ext.RequestExt{}
@@ -490,15 +491,17 @@ func TestExtractBidderConfigFPD(t *testing.T) {
results, err := ExtractBidderConfigFPD(testRequest)
// assert errors
- if len(fpdFile.ValidationErrors) > 0 {
- require.EqualError(t, err, fpdFile.ValidationErrors[0].Message, "Expected Error Not Received")
+ if len(testFile.ValidationErrors) > 0 {
+ require.EqualError(t, err, testFile.ValidationErrors[0].Message, "Expected Error Not Received")
} else {
require.NoError(t, err, "Error Not Expected")
assert.Nil(t, testRequest.GetPrebid().BidderConfigs, "Bidder specific FPD config should be removed from request")
}
// assert fpd (with normalization for nicer looking tests)
- for bidderName, expectedFPD := range fpdFile.BidderConfigFPD {
+ for bidderName, expectedFPD := range testFile.BidderConfigFPD {
+ require.Contains(t, results, bidderName)
+
if expectedFPD.App != nil {
assert.JSONEq(t, string(expectedFPD.App), string(results[bidderName].App), "app is incorrect")
} else {
@@ -520,7 +523,6 @@ func TestExtractBidderConfigFPD(t *testing.T) {
})
}
}
-
func TestResolveFPD(t *testing.T) {
testPath := "tests/resolvefpd"
@@ -529,31 +531,27 @@ func TestResolveFPD(t *testing.T) {
for _, test := range tests {
t.Run(test.Name(), func(t *testing.T) {
- filePath := testPath + "/" + test.Name()
+ path := filepath.Join(testPath, test.Name())
- fpdFile, err := loadFpdFile(filePath)
- require.NoError(t, err, "Cannot Load Test")
+ testFile, err := loadTestFile[fpdFileForResolveFPD](path)
+ require.NoError(t, err, "Load Test File")
request := &openrtb2.BidRequest{}
- err = json.Unmarshal(fpdFile.InputRequestData, &request)
+ err = json.Unmarshal(testFile.InputRequestData, &request)
require.NoError(t, err, "Cannot Load Request")
originalRequest := &openrtb2.BidRequest{}
- err = json.Unmarshal(fpdFile.InputRequestData, &originalRequest)
+ err = json.Unmarshal(testFile.InputRequestData, &originalRequest)
require.NoError(t, err, "Cannot Load Request")
- outputReq := &openrtb2.BidRequest{}
- err = json.Unmarshal(fpdFile.OutputRequestData, &outputReq)
- require.NoError(t, err, "Cannot Load Output Request")
-
reqExtFPD := make(map[string][]byte)
- reqExtFPD["site"] = fpdFile.GlobalFPD["site"]
- reqExtFPD["app"] = fpdFile.GlobalFPD["app"]
- reqExtFPD["user"] = fpdFile.GlobalFPD["user"]
+ reqExtFPD["site"] = testFile.GlobalFPD["site"]
+ reqExtFPD["app"] = testFile.GlobalFPD["app"]
+ reqExtFPD["user"] = testFile.GlobalFPD["user"]
reqFPD := make(map[string][]openrtb2.Data, 3)
- reqFPDSiteContentData := fpdFile.GlobalFPD[siteContentDataKey]
+ reqFPDSiteContentData := testFile.GlobalFPD[siteContentDataKey]
if len(reqFPDSiteContentData) > 0 {
var siteConData []openrtb2.Data
err = json.Unmarshal(reqFPDSiteContentData, &siteConData)
@@ -563,7 +561,7 @@ func TestResolveFPD(t *testing.T) {
reqFPD[siteContentDataKey] = siteConData
}
- reqFPDAppContentData := fpdFile.GlobalFPD[appContentDataKey]
+ reqFPDAppContentData := testFile.GlobalFPD[appContentDataKey]
if len(reqFPDAppContentData) > 0 {
var appConData []openrtb2.Data
err = json.Unmarshal(reqFPDAppContentData, &appConData)
@@ -573,7 +571,7 @@ func TestResolveFPD(t *testing.T) {
reqFPD[appContentDataKey] = appConData
}
- reqFPDUserData := fpdFile.GlobalFPD[userDataKey]
+ reqFPDUserData := testFile.GlobalFPD[userDataKey]
if len(reqFPDUserData) > 0 {
var userData []openrtb2.Data
err = json.Unmarshal(reqFPDUserData, &userData)
@@ -582,88 +580,88 @@ func TestResolveFPD(t *testing.T) {
}
reqFPD[userDataKey] = userData
}
- if fpdFile.BidderConfigFPD == nil {
- fpdFile.BidderConfigFPD = make(map[openrtb_ext.BidderName]*openrtb_ext.ORTB2)
- fpdFile.BidderConfigFPD["appnexus"] = &openrtb_ext.ORTB2{}
- }
// run test
- resultFPD, errL := ResolveFPD(request, fpdFile.BidderConfigFPD, reqExtFPD, reqFPD, []string{"appnexus"})
+ resultFPD, errL := ResolveFPD(request, testFile.BidderConfigFPD, reqExtFPD, reqFPD, testFile.BiddersWithGlobalFPD)
if len(errL) == 0 {
assert.Equal(t, request, originalRequest, "Original request should not be modified")
- bidderFPD := resultFPD["appnexus"]
-
- if outputReq.Site != nil && len(outputReq.Site.Ext) > 0 {
- resSiteExt := bidderFPD.Site.Ext
- expectedSiteExt := outputReq.Site.Ext
- bidderFPD.Site.Ext = nil
- outputReq.Site.Ext = nil
- assert.JSONEq(t, string(expectedSiteExt), string(resSiteExt), "site.ext is incorrect")
-
- assert.Equal(t, outputReq.Site, bidderFPD.Site, "Site is incorrect")
+ expectedResultKeys := []string{}
+ for k := range testFile.OutputRequestData {
+ expectedResultKeys = append(expectedResultKeys, k.String())
}
- if outputReq.App != nil && len(outputReq.App.Ext) > 0 {
- resAppExt := bidderFPD.App.Ext
- expectedAppExt := outputReq.App.Ext
- bidderFPD.App.Ext = nil
- outputReq.App.Ext = nil
-
- assert.JSONEq(t, string(expectedAppExt), string(resAppExt), "app.ext is incorrect")
-
- assert.Equal(t, outputReq.App, bidderFPD.App, "App is incorrect")
+ actualResultKeys := []string{}
+ for k := range resultFPD {
+ actualResultKeys = append(actualResultKeys, k.String())
}
- if outputReq.User != nil && len(outputReq.User.Ext) > 0 {
- resUserExt := bidderFPD.User.Ext
- expectedUserExt := outputReq.User.Ext
- bidderFPD.User.Ext = nil
- outputReq.User.Ext = nil
- assert.JSONEq(t, string(expectedUserExt), string(resUserExt), "user.ext is incorrect")
-
- assert.Equal(t, outputReq.User, bidderFPD.User, "User is incorrect")
+ require.ElementsMatch(t, expectedResultKeys, actualResultKeys)
+
+ for k, outputReq := range testFile.OutputRequestData {
+ bidderFPD := resultFPD[k]
+
+ if outputReq.Site != nil && len(outputReq.Site.Ext) > 0 {
+ resSiteExt := bidderFPD.Site.Ext
+ expectedSiteExt := outputReq.Site.Ext
+ bidderFPD.Site.Ext = nil
+ outputReq.Site.Ext = nil
+ assert.JSONEq(t, string(expectedSiteExt), string(resSiteExt), "site.ext is incorrect")
+ assert.Equal(t, outputReq.Site, bidderFPD.Site, "Site is incorrect")
+ }
+ if outputReq.App != nil && len(outputReq.App.Ext) > 0 {
+ resAppExt := bidderFPD.App.Ext
+ expectedAppExt := outputReq.App.Ext
+ bidderFPD.App.Ext = nil
+ outputReq.App.Ext = nil
+ assert.JSONEq(t, string(expectedAppExt), string(resAppExt), "app.ext is incorrect")
+ assert.Equal(t, outputReq.App, bidderFPD.App, "App is incorrect")
+ }
+ if outputReq.User != nil && len(outputReq.User.Ext) > 0 {
+ resUserExt := bidderFPD.User.Ext
+ expectedUserExt := outputReq.User.Ext
+ bidderFPD.User.Ext = nil
+ outputReq.User.Ext = nil
+ assert.JSONEq(t, string(expectedUserExt), string(resUserExt), "user.ext is incorrect")
+ assert.Equal(t, outputReq.User, bidderFPD.User, "User is incorrect")
+ }
}
} else {
- assert.ElementsMatch(t, errL, fpdFile.ValidationErrors, "Incorrect first party data warning message")
+ assert.ElementsMatch(t, errL, testFile.ValidationErrors, "Incorrect first party data warning message")
}
})
}
}
-
func TestExtractFPDForBidders(t *testing.T) {
if specFiles, err := os.ReadDir("./tests/extractfpdforbidders"); err == nil {
for _, specFile := range specFiles {
- fileName := "./tests/extractfpdforbidders/" + specFile.Name()
-
- fpdFile, err := loadFpdFile(fileName)
+ path := filepath.Join("./tests/extractfpdforbidders/", specFile.Name())
- if err != nil {
- t.Errorf("Unable to load file: %s", fileName)
- }
+ testFile, err := loadTestFile[fpdFile](path)
+ require.NoError(t, err, "Load Test File")
var expectedRequest openrtb2.BidRequest
- err = json.Unmarshal(fpdFile.OutputRequestData, &expectedRequest)
+ err = json.Unmarshal(testFile.OutputRequestData, &expectedRequest)
if err != nil {
- t.Errorf("Unable to unmarshal input request: %s", fileName)
+ t.Errorf("Unable to unmarshal input request: %s", path)
}
resultRequest := &openrtb_ext.RequestWrapper{}
resultRequest.BidRequest = &openrtb2.BidRequest{}
- err = json.Unmarshal(fpdFile.InputRequestData, resultRequest.BidRequest)
+ err = json.Unmarshal(testFile.InputRequestData, resultRequest.BidRequest)
assert.NoError(t, err, "Error should be nil")
resultFPD, errL := ExtractFPDForBidders(resultRequest)
- if len(fpdFile.ValidationErrors) > 0 {
- assert.Equal(t, len(fpdFile.ValidationErrors), len(errL), "Incorrect number of errors was returned")
- assert.ElementsMatch(t, errL, fpdFile.ValidationErrors, "Incorrect errors were returned")
+ if len(testFile.ValidationErrors) > 0 {
+ assert.Equal(t, len(testFile.ValidationErrors), len(errL), "Incorrect number of errors was returned")
+ assert.ElementsMatch(t, errL, testFile.ValidationErrors, "Incorrect errors were returned")
//in case or error no further assertions needed
continue
}
assert.Empty(t, errL, "Error should be empty")
- assert.Equal(t, len(resultFPD), len(fpdFile.BiddersFPDResolved))
+ assert.Equal(t, len(resultFPD), len(testFile.BiddersFPDResolved))
- for bidderName, expectedValue := range fpdFile.BiddersFPDResolved {
+ for bidderName, expectedValue := range testFile.BiddersFPDResolved {
actualValue := resultFPD[bidderName]
if expectedValue.Site != nil {
if len(expectedValue.Site.Ext) > 0 {
@@ -715,34 +713,10 @@ func TestExtractFPDForBidders(t *testing.T) {
}
assert.Equal(t, expectedRequest.User, resultRequest.BidRequest.User, "Incorrect user in request")
}
-
}
}
}
-func loadFpdFile(filename string) (fpdFile, error) {
- var fileData fpdFile
- fileContents, err := os.ReadFile(filename)
- if err != nil {
- return fileData, err
- }
- err = json.Unmarshal(fileContents, &fileData)
- if err != nil {
- return fileData, err
- }
-
- return fileData, nil
-}
-
-type fpdFile struct {
- InputRequestData json.RawMessage `json:"inputRequestData,omitempty"`
- OutputRequestData json.RawMessage `json:"outputRequestData,omitempty"`
- BidderConfigFPD map[openrtb_ext.BidderName]*openrtb_ext.ORTB2 `json:"bidderConfigFPD,omitempty"`
- BiddersFPDResolved map[openrtb_ext.BidderName]*ResolvedFirstPartyData `json:"biddersFPDResolved,omitempty"`
- GlobalFPD map[string]json.RawMessage `json:"globalFPD,omitempty"`
- ValidationErrors []*errortypes.BadInput `json:"validationErrors,omitempty"`
-}
-
func TestResolveUser(t *testing.T) {
testCases := []struct {
description string
@@ -1927,3 +1901,37 @@ var (
}
`)
)
+
+func loadTestFile[T any](filename string) (T, error) {
+ var testFile T
+
+ b, err := os.ReadFile(filename)
+ if err != nil {
+ return testFile, err
+ }
+
+ err = json.Unmarshal(b, &testFile)
+ if err != nil {
+ return testFile, err
+ }
+
+ return testFile, nil
+}
+
+type fpdFile struct {
+ InputRequestData json.RawMessage `json:"inputRequestData,omitempty"`
+ OutputRequestData json.RawMessage `json:"outputRequestData,omitempty"`
+ BidderConfigFPD map[openrtb_ext.BidderName]*openrtb_ext.ORTB2 `json:"bidderConfigFPD,omitempty"`
+ BiddersFPDResolved map[openrtb_ext.BidderName]*ResolvedFirstPartyData `json:"biddersFPDResolved,omitempty"`
+ GlobalFPD map[string]json.RawMessage `json:"globalFPD,omitempty"`
+ ValidationErrors []*errortypes.BadInput `json:"validationErrors,omitempty"`
+}
+
+type fpdFileForResolveFPD struct {
+ InputRequestData json.RawMessage `json:"inputRequestData,omitempty"`
+ OutputRequestData map[openrtb_ext.BidderName]openrtb2.BidRequest `json:"outputRequestData,omitempty"`
+ BiddersWithGlobalFPD []string `json:"biddersWithGlobalFPD,omitempty"`
+ BidderConfigFPD map[openrtb_ext.BidderName]*openrtb_ext.ORTB2 `json:"bidderConfigFPD,omitempty"`
+ GlobalFPD map[string]json.RawMessage `json:"globalFPD,omitempty"`
+ ValidationErrors []*errortypes.BadInput `json:"validationErrors,omitempty"`
+}
diff --git a/firstpartydata/tests/extractbidderconfigfpd/bidder-config-case-normalize.json b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-case-normalize.json
new file mode 100644
index 00000000000..934afe47de0
--- /dev/null
+++ b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-case-normalize.json
@@ -0,0 +1,28 @@
+{
+ "description": "Extracts bidder configs for a bidder, normalizing the case for a known bidder",
+ "inputRequestData": {
+ "data": {},
+ "bidderconfig": [
+ {
+ "bidders": [
+ "APPNexus"
+ ],
+ "config": {
+ "ortb2": {
+ "site": {
+ "id": "apnSiteId"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "outputRequestData": {},
+ "bidderConfigFPD": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/extractbidderconfigfpd/bidder-config-duplicated-case-insensitive.json b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-duplicated-case-insensitive.json
new file mode 100644
index 00000000000..ed9904579d1
--- /dev/null
+++ b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-duplicated-case-insensitive.json
@@ -0,0 +1,63 @@
+{
+ "description": "Verifies error presence in case more than one bidder config specified for the same bidder, case insensitive",
+ "inputRequestData": {
+ "data": {},
+ "bidderconfig": [
+ {
+ "bidders": [
+ "appnexus"
+ ],
+ "config": {
+ "ortb2": {
+ "site": {
+ "id": "apnSiteId",
+ "ext": {
+ "data": {
+ "sitefpddata": "sitefpddata",
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "bidders": [
+ "APPNEXUS",
+ "telaria",
+ "testBidder2"
+ ],
+ "config": {
+ "ortb2": {
+ "user": {
+ "id": "telariaUserData",
+ "ext": {
+ "data": {
+ "userdata": "fpduserdata"
+ }
+ }
+ },
+ "app": {
+ "id": "telariaAppData",
+ "ext": {
+ "data": {
+ "appdata": "fpdappdata"
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "outputRequestData": {},
+ "bidderConfigFPD": {},
+ "validationErrors": [
+ {
+ "Message": "multiple First Party Data bidder configs provided for bidder: APPNEXUS"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/extractbidderconfigfpd/bidder-config-request-alias-case-sensitive.json b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-request-alias-case-sensitive.json
new file mode 100644
index 00000000000..1becf730ada
--- /dev/null
+++ b/firstpartydata/tests/extractbidderconfigfpd/bidder-config-request-alias-case-sensitive.json
@@ -0,0 +1,28 @@
+{
+ "description": "Extracts bidder configs for a bidder, normalizing the case",
+ "inputRequestData": {
+ "data": {},
+ "bidderconfig": [
+ {
+ "bidders": [
+ "requestAlias"
+ ],
+ "config": {
+ "ortb2": {
+ "site": {
+ "id": "aliasSiteId"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "outputRequestData": {},
+ "bidderConfigFPD": {
+ "requestAlias": {
+ "site": {
+ "id": "aliasSiteId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/extractfpdforbidders/global-fpd-defined-app-content-data.json b/firstpartydata/tests/extractfpdforbidders/global-fpd-defined-app-content-data.json
index 797846ee7a6..6e199f4eb0f 100644
--- a/firstpartydata/tests/extractfpdforbidders/global-fpd-defined-app-content-data.json
+++ b/firstpartydata/tests/extractfpdforbidders/global-fpd-defined-app-content-data.json
@@ -84,4 +84,4 @@
}
},
"validationErrors": []
-}
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/extractfpdforbidders/two-bidders-correct-case-insensitive-integration.json b/firstpartydata/tests/extractfpdforbidders/two-bidders-correct-case-insensitive-integration.json
new file mode 100644
index 00000000000..074c8ddef4e
--- /dev/null
+++ b/firstpartydata/tests/extractfpdforbidders/two-bidders-correct-case-insensitive-integration.json
@@ -0,0 +1,88 @@
+{
+ "description": "case insensitive known bidder, case sensitive request alias",
+ "inputRequestData": {
+ "id": "bid_id",
+ "site": {
+ "id": "reqSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "user": {
+ "id": "reqUserId"
+ },
+ "test": 1,
+ "ext": {
+ "prebid": {
+ "data": {
+ "bidders": [
+ "APPNEXUS",
+ "requestAlias"
+ ]
+ },
+ "bidderconfig": [
+ {
+ "bidders": [
+ "appnexus"
+ ],
+ "config": {
+ "ortb2": {
+ "site": {
+ "id": "apnSiteId"
+ },
+ "user": {
+ "id": "apnUserId"
+ }
+ }
+ }
+ },
+ {
+ "bidders": [
+ "requestAlias"
+ ],
+ "config": {
+ "ortb2": {
+ "user": {
+ "keywords": "aliasUserKeywords"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "outputRequestData": {
+ "id": "bid_id",
+ "site": {
+ "id": "reqSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "test": 1
+ },
+ "biddersFPDResolved": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ }
+ },
+ "user": {
+ "id": "apnUserId"
+ }
+ },
+ "requestAlias": {
+ "user": {
+ "id": "reqUserId",
+ "keywords": "aliasUserKeywords"
+ }
+ }
+ },
+ "validationErrors": []
+}
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-alias-matches.json b/firstpartydata/tests/resolvefpd/bidder-fpd-alias-matches.json
new file mode 100644
index 00000000000..a9062d7ac4b
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-alias-matches.json
@@ -0,0 +1,25 @@
+{
+ "description": "Bidder FPD defined with a case sensitive request alias, positive test",
+ "inputRequestData": {
+ "app": {
+ "id": "reqUserID"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "requestAlias"
+ ],
+ "bidderConfigFPD": {
+ "requestAlias": {
+ "app": {
+ "id": "apnAppId"
+ }
+ }
+ },
+ "outputRequestData": {
+ "requestAlias": {
+ "app": {
+ "id": "apnAppId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-alias-not-matches.json b/firstpartydata/tests/resolvefpd/bidder-fpd-alias-not-matches.json
new file mode 100644
index 00000000000..ffc549c3cef
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-alias-not-matches.json
@@ -0,0 +1,21 @@
+{
+ "description": "Bidder FPD defined with a case sensitive request alias, negative test",
+ "inputRequestData": {
+ "app": {
+ "id": "reqUserID"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "requestAlias"
+ ],
+ "bidderConfigFPD": {
+ "REQUESTALIAS": {
+ "app": {
+ "id": "apnAppId"
+ }
+ }
+ },
+ "outputRequestData": {
+ "requestAlias": {}
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-case-normalize.json b/firstpartydata/tests/resolvefpd/bidder-fpd-case-normalize.json
new file mode 100644
index 00000000000..1f3e93b153c
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-case-normalize.json
@@ -0,0 +1,25 @@
+{
+ "description": "Bidder FPD defined with a case insensitive bidder",
+ "inputRequestData": {
+ "app": {
+ "id": "reqUserID"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "APPNEXUS"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "app": {
+ "id": "apnAppId"
+ }
+ }
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "app": {
+ "id": "apnAppId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-only-app.json b/firstpartydata/tests/resolvefpd/bidder-fpd-only-app.json
index 812db7b10b5..7dc9adee182 100644
--- a/firstpartydata/tests/resolvefpd/bidder-fpd-only-app.json
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-only-app.json
@@ -1,30 +1,35 @@
{
- "description": "Bidder FPD defined only for app",
- "inputRequestData": {
- "app": {
- "id": "reqUserID"
- }
- },
- "bidderConfigFPD": {
- "appnexus": {
- "app": {
- "id": "apnAppId",
- "ext": {
- "data": {
- "other": "data"
- }
- }
- }
+ "description": "Bidder FPD defined only for app",
+ "inputRequestData": {
+ "app": {
+ "id": "reqUserID"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "app": {
+ "id": "apnAppId",
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
- },
- "outputRequestData": {
- "app": {
- "id": "apnAppId",
- "ext": {
- "data": {
- "other": "data"
- }
- }
+ }
+ }
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "app": {
+ "id": "apnAppId",
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
+ }
}
+ }
}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-only-site.json b/firstpartydata/tests/resolvefpd/bidder-fpd-only-site.json
index 5accfc3b3a0..8ee3b40175b 100644
--- a/firstpartydata/tests/resolvefpd/bidder-fpd-only-site.json
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-only-site.json
@@ -1,30 +1,35 @@
{
- "description": "Bidder FPD defined only for site",
- "inputRequestData": {
- "site": {
- "id": "reqUserID"
- }
- },
- "bidderConfigFPD": {
- "appnexus": {
- "site": {
- "id": "apnSiteId",
- "ext": {
- "data": {
- "other": "data"
- }
- }
- }
+ "description": "Bidder FPD defined only for site",
+ "inputRequestData": {
+ "site": {
+ "id": "reqUserID"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
- },
- "outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "ext": {
- "data": {
- "other": "data"
- }
- }
+ }
+ }
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
+ }
}
+ }
}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-only-user.json b/firstpartydata/tests/resolvefpd/bidder-fpd-only-user.json
index 606cee7dbe6..204cf3c8d3f 100644
--- a/firstpartydata/tests/resolvefpd/bidder-fpd-only-user.json
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-only-user.json
@@ -1,35 +1,40 @@
{
- "description": "Bidder FPD defined only for user",
- "inputRequestData": {
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M"
- }
- },
- "bidderConfigFPD": {
- "appnexus": {
- "user": {
- "id": "apnUserId",
- "yob": 1982,
- "ext": {
- "data": {
- "other": "data"
- }
- }
- }
+ "description": "Bidder FPD defined only for user",
+ "inputRequestData": {
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "user": {
+ "id": "apnUserId",
+ "yob": 1982,
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
- },
- "outputRequestData": {
- "user": {
- "id": "apnUserId",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "other": "data"
- }
- }
+ }
+ }
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "user": {
+ "id": "apnUserId",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "other": "data"
+ }
}
+ }
}
+ }
}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/bidder-fpd-site-content-data-only.json b/firstpartydata/tests/resolvefpd/bidder-fpd-site-content-data-only.json
index 541d51f42af..2008d46f265 100644
--- a/firstpartydata/tests/resolvefpd/bidder-fpd-site-content-data-only.json
+++ b/firstpartydata/tests/resolvefpd/bidder-fpd-site-content-data-only.json
@@ -28,6 +28,9 @@
"ifa": "123"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -60,44 +63,46 @@
}
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "name": "apnSiteName",
- "domain": "apnSiteDomain",
- "page": "http://www.foobar.com/1234.html",
- "cat": [
- "books",
- "novels"
- ],
- "search": "book search",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 7,
- "title": "apnEpisodeName",
- "series": "TvName",
- "season": "season3",
- "len": 600,
- "data": [
- {
- "id": "siteData3",
- "name": "siteName3"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "name": "apnSiteName",
+ "domain": "apnSiteDomain",
+ "page": "http://www.foobar.com/1234.html",
+ "cat": [
+ "books",
+ "novels"
+ ],
+ "search": "book search",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 7,
+ "title": "apnEpisodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 600,
+ "data": [
+ {
+ "id": "siteData3",
+ "name": "siteName3"
+ }
+ ]
+ },
+ "ext": {
+ "data": {
+ "other": "data",
+ "testSiteFpd": "testSite"
}
- ]
- },
- "ext": {
- "data": {
- "other": "data",
- "testSiteFpd": "testSite"
}
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
}
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
}
}
}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app-content-data-user-data.json b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app-content-data-user-data.json
index 16b5332e942..7be277eb5ff 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app-content-data-user-data.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app-content-data-user-data.json
@@ -14,6 +14,9 @@
"gender": "reqUserGender"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"app": {
@@ -55,48 +58,50 @@
]
},
"outputRequestData": {
- "app": {
- "id": "apnAppId",
- "page": "http://www.foobar.com/1234.html",
- "publisher": {
- "id": "1"
+ "appnexus": {
+ "app": {
+ "id": "apnAppId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "data": [
+ {
+ "id": "appData1",
+ "name": "appName1"
+ },
+ {
+ "id": "appData2",
+ "name": "appName2"
+ }
+ ]
+ },
+ "ext": {
+ "data": {
+ "morefpdData": "morefpddata",
+ "appFpd": 123
+ }
+ }
},
- "content": {
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "reqUserGender",
"data": [
{
- "id": "appData1",
- "name": "appName1"
+ "id": "userData1",
+ "name": "userName1"
},
{
- "id": "appData2",
- "name": "appName2"
+ "id": "userData2",
+ "name": "userName2"
+ }
+ ],
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
}
- ]
- },
- "ext": {
- "data": {
- "morefpdData": "morefpddata",
- "appFpd": 123
- }
- }
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "reqUserGender",
- "data": [
- {
- "id": "userData1",
- "name": "userName1"
- },
- {
- "id": "userData2",
- "name": "userName2"
- }
- ],
- "ext": {
- "data": {
- "testUserFpd": "testuser"
}
}
}
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app.json b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app.json
index 609ede597cf..fb27d1631c1 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-app.json
@@ -22,6 +22,9 @@
"ifa": "123"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"app": {
@@ -44,36 +47,37 @@
}
},
"outputRequestData": {
- "app": {
- "id": "apnAppId",
- "page": "http://www.foobar.com/1234.html",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 6,
- "title": "episodeName",
- "series": "TvName",
- "season": "season3",
- "len": 900
- },
- "ext": {
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "appFpd": 123,
- "appFpddata": "appFpddata"
+ "appnexus": {
+ "app": {
+ "id": "apnAppId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "appFpd": 123,
+ "appFpddata": "appFpddata"
+ }
}
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
}
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site-user.json b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site-user.json
index f66a8722308..9563fffebcc 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site-user.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site-user.json
@@ -19,6 +19,9 @@
"id": "apnUserId"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -51,40 +54,41 @@
}
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 6,
- "title": "episodeName",
- "series": "TvName",
- "season": "season3",
- "len": 900
- },
- "ext": {
- "data": {
- "morefpdData": "morefpddata",
- "siteFpddata": "siteFpddata",
- "moreFpd": {
- "fpd": 123
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "data": {
+ "morefpdData": "morefpddata",
+ "siteFpddata": "siteFpddata",
+ "moreFpd": {
+ "fpd": 123
+ }
}
}
- }
- },
- "user": {
- "id": "apnUserId",
- "ext": {
- "data": {
- "moreFpd": {
- "fpd": 567
- },
- "testUserFpd": "testuser"
+ },
+ "user": {
+ "id": "apnUserId",
+ "ext": {
+ "data": {
+ "moreFpd": {
+ "fpd": 567
+ },
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site.json b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site.json
index be03f0cb9b0..4362362718a 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-site.json
@@ -16,6 +16,9 @@
}
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -40,31 +43,32 @@
}
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 6,
- "title": "episodeName",
- "series": "TvName",
- "season": "season3",
- "len": 900
- },
- "ext": {
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-user.json b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-user.json
index ef381d613e6..4d233e6c473 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-user.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-fpd-user.json
@@ -7,6 +7,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"user": {
@@ -30,21 +33,22 @@
}
},
"outputRequestData": {
- "user": {
- "id": "apnUserId",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser",
- "morefpdData": "morefpddata",
- "userFpddata": "siteFpddata",
- "moreFpd": {
- "fpd": 123
+ "appnexus": {
+ "user": {
+ "id": "apnUserId",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser",
+ "morefpdData": "morefpddata",
+ "userFpddata": "siteFpddata",
+ "moreFpd": {
+ "fpd": 123
+ }
}
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-bidder-site-content-data.json b/firstpartydata/tests/resolvefpd/global-and-bidder-site-content-data.json
index c0f4723d62a..a0a1c461292 100644
--- a/firstpartydata/tests/resolvefpd/global-and-bidder-site-content-data.json
+++ b/firstpartydata/tests/resolvefpd/global-and-bidder-site-content-data.json
@@ -20,6 +20,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -62,52 +65,53 @@
]
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "data": [
- {
- "id": "siteData1",
- "name": "siteName1"
- },
- {
- "id": "siteData2",
- "name": "siteName2"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
}
- ]
- },
- "ext": {
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-app-user.json b/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-app-user.json
index a705e8b2405..e8dace465e7 100644
--- a/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-app-user.json
+++ b/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-app-user.json
@@ -23,6 +23,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -72,58 +75,59 @@
]
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "title": "episodeName8",
- "series": "TvName",
- "season": "season4",
- "episode": 8,
- "len": 900,
- "data": [
- {
- "id": "siteData1",
- "name": "siteName1"
- },
- {
- "id": "siteData2",
- "name": "siteName2"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "title": "episodeName8",
+ "series": "TvName",
+ "season": "season4",
+ "episode": 8,
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
}
- ]
- },
- "ext": {
- "testSiteExt": 123,
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-content-app-user.json b/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-content-app-user.json
index ccfa030cd8d..10fa471744f 100644
--- a/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-content-app-user.json
+++ b/firstpartydata/tests/resolvefpd/global-and-no-bidder-fpd-site-content-app-user.json
@@ -23,6 +23,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -65,53 +68,54 @@
]
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "data": [
- {
- "id": "siteData1",
- "name": "siteName1"
- },
- {
- "id": "siteData2",
- "name": "siteName2"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
}
- ]
- },
- "ext": {
- "testSiteExt": 123,
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-fpd-only-app.json b/firstpartydata/tests/resolvefpd/global-fpd-only-app.json
index e4d5e169986..55839983a5b 100644
--- a/firstpartydata/tests/resolvefpd/global-fpd-only-app.json
+++ b/firstpartydata/tests/resolvefpd/global-fpd-only-app.json
@@ -29,6 +29,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"app": {
@@ -64,56 +67,57 @@
]
},
"outputRequestData": {
- "app": {
- "id": "apnAppId",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 6,
- "title": "episodeName",
- "series": "TvName",
- "season": "season3",
- "len": 900,
- "data": [
- {
- "id": "appData1",
- "name": "appName1"
- },
- {
- "id": "appData2",
- "name": "appName2"
+ "appnexus": {
+ "app": {
+ "id": "apnAppId",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900,
+ "data": [
+ {
+ "id": "appData1",
+ "name": "appName1"
+ },
+ {
+ "id": "appData2",
+ "name": "appName2"
+ }
+ ]
+ },
+ "ext": {
+ "testAppExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "appFpd": 123,
+ "appFpddata": "appFpddata"
}
- ]
- },
- "ext": {
- "testAppExt": 123,
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "appFpd": 123,
- "appFpddata": "appFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-fpd-only-excludes-some.json b/firstpartydata/tests/resolvefpd/global-fpd-only-excludes-some.json
new file mode 100644
index 00000000000..b23a347cf9b
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/global-fpd-only-excludes-some.json
@@ -0,0 +1,138 @@
+{
+ "description": "Global and bidder FPD defined for site and user. Global FPD has site.content.data. Excludes rubicon since not listed in biddersWithGlobalFPD",
+ "inputRequestData": {
+ "site": {
+ "id": "reqSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "testSiteExt": 123
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "ext": {
+ "data": {
+ "morefpdData": "morefpddata",
+ "siteFpddata": "siteFpddata",
+ "moreFpd": {
+ "fpd": 123
+ }
+ }
+ }
+ }
+ },
+ "rubicon": {
+ "site": {
+ "id": "rbcSiteId"
+ }
+ }
+ },
+ "globalFPD": {
+ "site": {
+ "siteFpd": 123
+ },
+ "app": {
+ "appFpd": {
+ "testValue": true
+ }
+ },
+ "user": {
+ "testUserFpd": "testuser"
+ },
+ "siteContentData": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
+ }
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-explicit.json b/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-explicit.json
new file mode 100644
index 00000000000..f959ebcde4f
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-explicit.json
@@ -0,0 +1,144 @@
+{
+ "description": "Global and bidder FPD defined for site and user. Global FPD has site.content.data. Bidders mentioned explicitly in biddersWithGlobalFPD",
+ "inputRequestData": {
+ "site": {
+ "id": "reqSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "testSiteExt": 123
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M"
+ }
+ },
+ "biddersWithGlobalFPD": [
+ "appnexus",
+ "rubicon"
+ ],
+ "bidderConfigFPD": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "ext": {
+ "data": {
+ "morefpdData": "morefpddata",
+ "siteFpddata": "siteFpddata",
+ "moreFpd": {
+ "fpd": 123
+ }
+ }
+ }
+ }
+ },
+ "rubicon": {
+ "site": {
+ "id": "rbcSiteId"
+ }
+ }
+ },
+ "globalFPD": {
+ "site": {
+ "siteFpd": 123
+ },
+ "app": {
+ "appFpd": {
+ "testValue": true
+ }
+ },
+ "user": {
+ "testUserFpd": "testuser"
+ },
+ "siteContentData": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
+ }
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
+ }
+ }
+ },
+ "rubicon": {
+ "site": {
+ "id": "rbcSiteId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-implicit.json b/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-implicit.json
new file mode 100644
index 00000000000..7c1f0f10aff
--- /dev/null
+++ b/firstpartydata/tests/resolvefpd/global-fpd-only-include-all-implicit.json
@@ -0,0 +1,141 @@
+{
+ "description": "Global and bidder FPD defined for site and user. Global FPD has site.content.data. Bidders included implicitly with biddersWithGlobalFPD nil",
+ "inputRequestData": {
+ "site": {
+ "id": "reqSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900
+ },
+ "ext": {
+ "testSiteExt": 123
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M"
+ }
+ },
+ "biddersWithGlobalFPD": null,
+ "bidderConfigFPD": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "ext": {
+ "data": {
+ "morefpdData": "morefpddata",
+ "siteFpddata": "siteFpddata",
+ "moreFpd": {
+ "fpd": 123
+ }
+ }
+ }
+ }
+ },
+ "rubicon": {
+ "site": {
+ "id": "rbcSiteId"
+ }
+ }
+ },
+ "globalFPD": {
+ "site": {
+ "siteFpd": 123
+ },
+ "app": {
+ "appFpd": {
+ "testValue": true
+ }
+ },
+ "user": {
+ "testUserFpd": "testuser"
+ },
+ "siteContentData": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "outputRequestData": {
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
+ }
+ }
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
+ }
+ }
+ },
+ "rubicon": {
+ "site": {
+ "id": "rbcSiteId"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/global-fpd-only-site.json b/firstpartydata/tests/resolvefpd/global-fpd-only-site.json
index 49b8f4dcefb..3f7e91adc63 100644
--- a/firstpartydata/tests/resolvefpd/global-fpd-only-site.json
+++ b/firstpartydata/tests/resolvefpd/global-fpd-only-site.json
@@ -30,6 +30,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -72,58 +75,59 @@
]
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 6,
- "title": "episodeName",
- "series": "TvName",
- "season": "season3",
- "len": 900,
- "data": [
- {
- "id": "siteData1",
- "name": "siteName1"
- },
- {
- "id": "siteData2",
- "name": "siteName2"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 6,
+ "title": "episodeName",
+ "series": "TvName",
+ "season": "season3",
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
}
- ]
- },
- "ext": {
- "testSiteExt": 123,
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/req-and-bidder-fpd-site-content.json b/firstpartydata/tests/resolvefpd/req-and-bidder-fpd-site-content.json
index 446e7151afa..da0d4357dd1 100644
--- a/firstpartydata/tests/resolvefpd/req-and-bidder-fpd-site-content.json
+++ b/firstpartydata/tests/resolvefpd/req-and-bidder-fpd-site-content.json
@@ -40,6 +40,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -89,58 +92,59 @@
}
},
"outputRequestData": {
- "site": {
- "id": "apnSiteId",
- "page": "http://www.foobar.com/1234.html",
- "ref": "fpdRef",
- "publisher": {
- "id": "1"
- },
- "content": {
- "episode": 8,
- "title": "episodeName8",
- "series": "TvName",
- "season": "season4",
- "len": 900,
- "data": [
- {
- "id": "siteData1",
- "name": "siteName1"
- },
- {
- "id": "siteData2",
- "name": "siteName2"
+ "appnexus": {
+ "site": {
+ "id": "apnSiteId",
+ "page": "http://www.foobar.com/1234.html",
+ "ref": "fpdRef",
+ "publisher": {
+ "id": "1"
+ },
+ "content": {
+ "episode": 8,
+ "title": "episodeName8",
+ "series": "TvName",
+ "season": "season4",
+ "len": 900,
+ "data": [
+ {
+ "id": "siteData1",
+ "name": "siteName1"
+ },
+ {
+ "id": "siteData2",
+ "name": "siteName2"
+ }
+ ]
+ },
+ "ext": {
+ "testSiteExt": 123,
+ "data": {
+ "moreFpd": {
+ "fpd": 123
+ },
+ "morefpdData": "morefpddata",
+ "siteFpd": 123,
+ "siteFpddata": "siteFpddata"
}
- ]
- },
- "ext": {
- "testSiteExt": 123,
- "data": {
- "moreFpd": {
- "fpd": 123
- },
- "morefpdData": "morefpddata",
- "siteFpd": 123,
- "siteFpddata": "siteFpddata"
}
- }
- },
- "device": {
- "ua": "testDevice",
- "ip": "123.145.167.10",
- "devicetype": 1,
- "ifa": "123"
- },
- "user": {
- "id": "reqUserID",
- "yob": 1982,
- "gender": "M",
- "ext": {
- "data": {
- "testUserFpd": "testuser"
+ },
+ "device": {
+ "ua": "testDevice",
+ "ip": "123.145.167.10",
+ "devicetype": 1,
+ "ifa": "123"
+ },
+ "user": {
+ "id": "reqUserID",
+ "yob": 1982,
+ "gender": "M",
+ "ext": {
+ "data": {
+ "testUserFpd": "testuser"
+ }
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/req-app-not-defined.json b/firstpartydata/tests/resolvefpd/req-app-not-defined.json
index f24a4d27db1..6ab9e076f43 100644
--- a/firstpartydata/tests/resolvefpd/req-app-not-defined.json
+++ b/firstpartydata/tests/resolvefpd/req-app-not-defined.json
@@ -20,6 +20,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"app": {
@@ -42,5 +45,4 @@
"Message": "incorrect First Party Data for bidder appnexus: App object is not defined in request, but defined in FPD config"
}
]
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/req-site-not-defined.json b/firstpartydata/tests/resolvefpd/req-site-not-defined.json
index d078ad7804f..8e20a6e0e1d 100644
--- a/firstpartydata/tests/resolvefpd/req-site-not-defined.json
+++ b/firstpartydata/tests/resolvefpd/req-site-not-defined.json
@@ -7,6 +7,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -29,5 +32,4 @@
"Message": "incorrect First Party Data for bidder appnexus: Site object is not defined in request, but defined in FPD config"
}
]
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/req-user-not-defined.json b/firstpartydata/tests/resolvefpd/req-user-not-defined.json
index 76ae3f827ca..85c41c23969 100644
--- a/firstpartydata/tests/resolvefpd/req-user-not-defined.json
+++ b/firstpartydata/tests/resolvefpd/req-user-not-defined.json
@@ -5,6 +5,9 @@
"at": 1,
"tmax": 5000
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"user": {
@@ -21,11 +24,12 @@
}
}
},
- "outputRequestData": {},
+ "outputRequestData": {
+ "appnexus": {}
+ },
"validationErrors": [
{
"Message": "incorrect First Party Data for bidder appnexus: User object is not defined in request, but defined in FPD config"
}
]
-}
-
+}
\ No newline at end of file
diff --git a/firstpartydata/tests/resolvefpd/site-page-empty-conflict.json b/firstpartydata/tests/resolvefpd/site-page-empty-conflict.json
index 8da3dc69329..260385c49be 100644
--- a/firstpartydata/tests/resolvefpd/site-page-empty-conflict.json
+++ b/firstpartydata/tests/resolvefpd/site-page-empty-conflict.json
@@ -19,6 +19,9 @@
"gender": "M"
}
},
+ "biddersWithGlobalFPD": [
+ "appnexus"
+ ],
"bidderConfigFPD": {
"appnexus": {
"site": {
@@ -41,5 +44,4 @@
"Message": "incorrect First Party Data for bidder appnexus: Site object cannot set empty page if req.site.id is empty"
}
]
-}
-
+}
\ No newline at end of file
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 1caa625c0d1..2258cad4214 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -563,6 +563,15 @@ func NormalizeBidderName(name string) (BidderName, bool) {
return bidderName, exists
}
+// NormalizeBidderNameOrUnchanged returns the normalized name of known bidders, otherwise returns
+// the name exactly as provided.
+func NormalizeBidderNameOrUnchanged(name string) BidderName {
+ if normalized, exists := NormalizeBidderName(name); exists {
+ return normalized
+ }
+ return BidderName(name)
+}
+
// The BidderParamValidator is used to enforce bidrequest.imp[i].ext.prebid.bidder.{anyBidder} values.
//
// This is treated differently from the other types because we rely on JSON-schemas to validate bidder params.
From bde7bcf096b388186c183d3282b0c3bb75aeddaf Mon Sep 17 00:00:00 2001
From: guscarreon
Date: Wed, 18 Oct 2023 02:19:04 -0400
Subject: [PATCH 18/34] Adapter Name Case Insensitive: ext.prebid.multibid
(#3217)
---
exchange/exchange.go | 8 +-
exchange/exchange_test.go | 197 ++++++++
.../exchangetest/multi-bids-mixed-case.json | 449 ++++++++++++++++++
exchange/utils.go | 4 +-
4 files changed, 654 insertions(+), 4 deletions(-)
create mode 100644 exchange/exchangetest/multi-bids-mixed-case.json
diff --git a/exchange/exchange.go b/exchange/exchange.go
index 0810ad814ab..a8c76a5ebb1 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -515,10 +515,14 @@ func buildMultiBidMap(prebid *openrtb_ext.ExtRequestPrebid) map[string]openrtb_e
multiBidMap := make(map[string]openrtb_ext.ExtMultiBid)
for _, multiBid := range prebid.MultiBid {
if multiBid.Bidder != "" {
- multiBidMap[multiBid.Bidder] = *multiBid
+ if bidderNormalized, bidderFound := openrtb_ext.NormalizeBidderName(multiBid.Bidder); bidderFound {
+ multiBidMap[string(bidderNormalized)] = *multiBid
+ }
} else {
for _, bidder := range multiBid.Bidders {
- multiBidMap[bidder] = *multiBid
+ if bidderNormalized, bidderFound := openrtb_ext.NormalizeBidderName(bidder); bidderFound {
+ multiBidMap[string(bidderNormalized)] = *multiBid
+ }
}
}
}
diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go
index 6e6e8afe76e..e57900cdfee 100644
--- a/exchange/exchange_test.go
+++ b/exchange/exchange_test.go
@@ -2259,8 +2259,13 @@ func TestTimeoutComputation(t *testing.T) {
func TestExchangeJSON(t *testing.T) {
if specFiles, err := os.ReadDir("./exchangetest"); err == nil {
for _, specFile := range specFiles {
+ if !strings.HasSuffix(specFile.Name(), ".json") {
+ continue
+ }
+
fileName := "./exchangetest/" + specFile.Name()
fileDisplayName := "exchange/exchangetest/" + specFile.Name()
+
t.Run(fileDisplayName, func(t *testing.T) {
specData, err := loadFile(fileName)
if assert.NoError(t, err, "Failed to load contents of file %s: %v", fileDisplayName, err) {
@@ -5750,3 +5755,195 @@ func TestSetSeatNonBid(t *testing.T) {
})
}
}
+
+func TestBuildMultiBidMap(t *testing.T) {
+ type testCase struct {
+ desc string
+ inPrebid *openrtb_ext.ExtRequestPrebid
+ expected map[string]openrtb_ext.ExtMultiBid
+ }
+ testGroups := []struct {
+ groupDesc string
+ tests []testCase
+ }{
+ {
+ groupDesc: "Nil or empty tests",
+ tests: []testCase{
+ {
+ desc: "prebid nil, expect nil map",
+ inPrebid: nil,
+ expected: nil,
+ },
+ {
+ desc: "prebid.MultiBid nil, expect nil map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{},
+ expected: nil,
+ },
+ {
+ desc: "not-nil prebid.MultiBid is empty, expect empty map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{},
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ },
+ },
+ {
+ groupDesc: "prebid.MultiBid.Bidder tests",
+ tests: []testCase{
+ {
+ desc: "Lowercase prebid.MultiBid.Bidder is found in the BidderName list, entry is mapped",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidder: "appnexus"},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "appnexus": {Bidder: "appnexus"},
+ },
+ },
+ {
+ desc: "Uppercase prebid.MultiBid.Bidder is found in the BidderName list, entry is mapped",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidder: "APPNEXUS"},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "appnexus": {Bidder: "APPNEXUS"},
+ },
+ },
+ {
+ desc: "Lowercase prebid.MultiBid.Bidder is not found in the BidderName list, expect empty map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidder: "unknown"},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ {
+ desc: "Mixed-case prebid.MultiBid.Bidder is not found in the BidderName list, expect empty map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidder: "UnknownBidder"},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ {
+ desc: "Different-cased prebid.MultiBid.Bidder entries that refer to the same adapter are found in the BidderName list are mapped once",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidder: "AppNexus"},
+ {Bidder: "appnexus"},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "appnexus": {Bidder: "appnexus"},
+ },
+ },
+ },
+ },
+ {
+ groupDesc: "prebid.MultiBid.Bidders tests",
+ tests: []testCase{
+ {
+ desc: "Lowercase prebid.MultiBid.Bidder is found in the BidderName list, entry is mapped",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidders: []string{"appnexus"}},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "appnexus": {
+ Bidders: []string{"appnexus"},
+ },
+ },
+ },
+ {
+ desc: "Lowercase prebid.MultiBid.Bidder is not found in the BidderName list, expect empty map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidders: []string{"unknown"}},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ {
+ desc: "Mixed-case prebid.MultiBid.Bidder is not found in the BidderName list, expect empty map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidders: []string{"UnknownBidder"}},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ {
+ desc: "Different-cased prebid.MultiBid.Bidder entries that refer to the same adapter are found in the BidderName list are mapped once",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {Bidders: []string{"AppNexus", "appnexus", "UnknownBidder"}},
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "appnexus": {
+ Bidders: []string{"AppNexus", "appnexus", "UnknownBidder"},
+ },
+ },
+ },
+ },
+ },
+ {
+ groupDesc: "prebid.MultiBid.Bidder and prebid.MultiBid.Bidders entries in tests",
+ tests: []testCase{
+ {
+ desc: "prebid.MultiBid.Bidder found, ignore entries in prebid.MultiBid.Bidders, even if its unknown",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {
+ Bidder: "UnknownBidder",
+ Bidders: []string{"appnexus", "rubicon", "pubmatic"},
+ },
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{},
+ },
+ {
+ desc: "prebid.MultiBid.Bidder found in one entry, prebid.MultiBid.Bidders in another. Add all to map",
+ inPrebid: &openrtb_ext.ExtRequestPrebid{
+ MultiBid: []*openrtb_ext.ExtMultiBid{
+ {
+ Bidder: "pubmatic",
+ Bidders: []string{"appnexus", "rubicon", "UnknownBidder"},
+ },
+ {
+ Bidders: []string{"UnknownBidder", "appnexus", "rubicon"},
+ },
+ },
+ },
+ expected: map[string]openrtb_ext.ExtMultiBid{
+ "pubmatic": {
+ Bidder: "pubmatic",
+ Bidders: []string{"appnexus", "rubicon", "UnknownBidder"},
+ },
+ "appnexus": {
+ Bidders: []string{"UnknownBidder", "appnexus", "rubicon"},
+ },
+ "rubicon": {
+ Bidders: []string{"UnknownBidder", "appnexus", "rubicon"},
+ },
+ },
+ },
+ },
+ },
+ }
+ for _, group := range testGroups {
+ for _, tc := range group.tests {
+ t.Run(group.groupDesc+tc.desc, func(t *testing.T) {
+ multiBidMap := buildMultiBidMap(tc.inPrebid)
+ assert.Equal(t, tc.expected, multiBidMap, tc.desc)
+ })
+ }
+ }
+}
diff --git a/exchange/exchangetest/multi-bids-mixed-case.json b/exchange/exchangetest/multi-bids-mixed-case.json
new file mode 100644
index 00000000000..44630b3068c
--- /dev/null
+++ b/exchange/exchangetest/multi-bids-mixed-case.json
@@ -0,0 +1,449 @@
+{
+ "description": "incoming req.ext.prebid.multibid comes with a mixed case bidder name. Expect the same bidder name casing in the outgoing ext.prebid.multibid field",
+ "incomingRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "pubmatic": {
+ "publisherId": "5890"
+ },
+ "appnexus": {
+ "placementId": 1
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": "imp-id-2",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "pubmatic": {
+ "publisherId": "5890"
+ },
+ "appnexus": {
+ "placementId": 1
+ }
+ }
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": true,
+ "pricegranularity": {
+ "precision": 2,
+ "ranges": [
+ {
+ "min": 0,
+ "max": 20,
+ "increment": 0.1
+ }
+ ]
+ }
+ },
+ "multibid": [
+ {
+ "bidder": "PUBmatic",
+ "maxbids": 2,
+ "targetbiddercodeprefix": "pubm"
+ },
+ {
+ "bidders": [
+ "appnexus",
+ "someBidder"
+ ],
+ "maxbids": 2
+ }
+ ]
+ }
+ }
+ }
+ },
+ "outgoingRequests": {
+ "pubmatic": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "5890"
+ }
+ }
+ },
+ {
+ "id": "imp-id-2",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "5890"
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "multibid": [
+ {
+ "bidder": "PUBmatic",
+ "maxbids": 2,
+ "targetbiddercodeprefix": "pubm"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "pbsSeatBids": [
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "winning-bid",
+ "impid": "my-imp-id",
+ "price": 0.71,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-1"
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ },
+ {
+ "ortbBid": {
+ "id": "losing-bid",
+ "impid": "my-imp-id",
+ "price": 0.21,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-2"
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ },
+ {
+ "ortbBid": {
+ "id": "other-bid",
+ "impid": "imp-id-2",
+ "price": 0.61,
+ "w": 300,
+ "h": 500,
+ "crid": "creative-3"
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ },
+ {
+ "ortbBid": {
+ "id": "contending-bid",
+ "impid": "my-imp-id",
+ "price": 0.51,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-4"
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ }
+ ],
+ "seat": "pubmatic"
+ }
+ ]
+ }
+ },
+ "appnexus": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "my-imp-id",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ },
+ {
+ "id": "imp-id-2",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "multibid": [
+ {
+ "bidders": [
+ "appnexus"
+ ],
+ "maxbids": 2
+ }
+ ]
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "pbsSeatBids": [
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "apn-bid",
+ "impid": "my-imp-id",
+ "price": 0.3,
+ "w": 200,
+ "h": 500,
+ "crid": "creative-a-1"
+ },
+ "bidType": "banner",
+ "bidMeta": {
+ "adaptercode": "appnexus"
+ }
+ },
+ {
+ "ortbBid": {
+ "id": "apn-bid-2",
+ "impid": "my-imp-id",
+ "price": 0.3,
+ "w": 200,
+ "h": 500,
+ "crid": "creative-a-2"
+ },
+ "bidType": "banner",
+ "bidMeta": {
+ "adaptercode": "appnexus"
+ }
+ }
+ ],
+ "seat": "appnexus"
+ }
+ ]
+ }
+ }
+ },
+ "response": {
+ "bids": {
+ "id": "some-request-id",
+ "seatbid": [
+ {
+ "seat": "pubmatic",
+ "bid": [
+ {
+ "id": "winning-bid",
+ "impid": "my-imp-id",
+ "price": 0.71,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-1",
+ "ext": {
+ "origbidcpm": 0.71,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video",
+ "targeting": {
+ "hb_bidder": "pubmatic",
+ "hb_bidder_pubmatic": "pubmatic",
+ "hb_cache_host": "www.pbcserver.com",
+ "hb_cache_host_pubmat": "www.pbcserver.com",
+ "hb_cache_path": "/pbcache/endpoint",
+ "hb_cache_path_pubmat": "/pbcache/endpoint",
+ "hb_pb": "0.70",
+ "hb_pb_pubmatic": "0.70",
+ "hb_size": "200x250",
+ "hb_size_pubmatic": "200x250"
+ },
+ "targetbiddercode": "pubmatic"
+ }
+ }
+ },
+ {
+ "id": "losing-bid",
+ "impid": "my-imp-id",
+ "price": 0.21,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-2",
+ "ext": {
+ "origbidcpm": 0.21,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video"
+ }
+ }
+ },
+ {
+ "id": "other-bid",
+ "impid": "imp-id-2",
+ "price": 0.61,
+ "w": 300,
+ "h": 500,
+ "crid": "creative-3",
+ "ext": {
+ "origbidcpm": 0.61,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video",
+ "targeting": {
+ "hb_bidder": "pubmatic",
+ "hb_bidder_pubmatic": "pubmatic",
+ "hb_cache_host": "www.pbcserver.com",
+ "hb_cache_host_pubmat": "www.pbcserver.com",
+ "hb_cache_path": "/pbcache/endpoint",
+ "hb_cache_path_pubmat": "/pbcache/endpoint",
+ "hb_pb": "0.60",
+ "hb_pb_pubmatic": "0.60",
+ "hb_size": "300x500",
+ "hb_size_pubmatic": "300x500"
+ },
+ "targetbiddercode": "pubmatic"
+ }
+ }
+ },
+ {
+ "id": "contending-bid",
+ "impid": "my-imp-id",
+ "price": 0.51,
+ "w": 200,
+ "h": 250,
+ "crid": "creative-4",
+ "ext": {
+ "origbidcpm": 0.51,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video",
+ "targeting": {
+ "hb_bidder_pubm2": "pubm2",
+ "hb_cache_host_pubm2": "www.pbcserver.com",
+ "hb_cache_path_pubm2": "/pbcache/endpoint",
+ "hb_pb_pubm2": "0.50",
+ "hb_size_pubm2": "200x250"
+ },
+ "targetbiddercode": "pubm2"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "seat": "appnexus",
+ "bid": [
+ {
+ "id": "apn-bid",
+ "impid": "my-imp-id",
+ "price": 0.3,
+ "w": 200,
+ "h": 500,
+ "crid": "creative-a-1",
+ "ext": {
+ "origbidcpm": 0.3,
+ "prebid": {
+ "meta": {
+ "adaptercode": "appnexus"
+ },
+ "targetbiddercode": "appnexus",
+ "type": "banner",
+ "targeting": {
+ "hb_bidder_appnexus": "appnexus",
+ "hb_cache_host_appnex": "www.pbcserver.com",
+ "hb_cache_path_appnex": "/pbcache/endpoint",
+ "hb_pb_appnexus": "0.20",
+ "hb_size_appnexus": "200x500"
+ }
+ }
+ }
+ },
+ {
+ "id": "apn-bid-2",
+ "impid": "my-imp-id",
+ "price": 0.3,
+ "w": 200,
+ "h": 500,
+ "crid": "creative-a-2",
+ "ext": {
+ "origbidcpm": 0.3,
+ "prebid": {
+ "meta": {
+ "adaptercode": "appnexus"
+ },
+ "type": "banner"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/exchange/utils.go b/exchange/utils.go
index a67a87b9c97..70988fbf7b9 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -472,12 +472,12 @@ func buildRequestExtMultiBid(adapter string, reqMultiBid []*openrtb_ext.ExtMulti
adapterMultiBid := make([]*openrtb_ext.ExtMultiBid, 0)
for _, multiBid := range reqMultiBid {
if multiBid.Bidder != "" {
- if multiBid.Bidder == adapter || isBidderInExtAlternateBidderCodes(adapter, multiBid.Bidder, adapterABC) {
+ if strings.ToLower(multiBid.Bidder) == adapter || isBidderInExtAlternateBidderCodes(adapter, strings.ToLower(multiBid.Bidder), adapterABC) {
adapterMultiBid = append(adapterMultiBid, multiBid)
}
} else {
for _, bidder := range multiBid.Bidders {
- if bidder == adapter || isBidderInExtAlternateBidderCodes(adapter, bidder, adapterABC) {
+ if strings.ToLower(bidder) == adapter || isBidderInExtAlternateBidderCodes(adapter, strings.ToLower(bidder), adapterABC) {
adapterMultiBid = append(adapterMultiBid, &openrtb_ext.ExtMultiBid{
Bidders: []string{bidder},
MaxBids: multiBid.MaxBids,
From f4425b6dbbf5e3f85adf9e377e5eec55afc9fc74 Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Wed, 18 Oct 2023 18:23:49 +0530
Subject: [PATCH 19/34] migrate janet alias to use new pattern (#3189)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/janet.yaml | 10 +---------
static/bidder-params/janet.json | 26 --------------------------
4 files changed, 1 insertion(+), 38 deletions(-)
delete mode 100644 static/bidder-params/janet.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index ea9e99cfb6c..573a0413520 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -296,7 +296,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderInvibes: invibes.Builder,
openrtb_ext.BidderIQZone: iqzone.Builder,
openrtb_ext.BidderIx: ix.Builder,
- openrtb_ext.BidderJANet: adtelligent.Builder,
openrtb_ext.BidderJixie: jixie.Builder,
openrtb_ext.BidderKargo: kargo.Builder,
openrtb_ext.BidderKayzen: kayzen.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 2258cad4214..bec6d3c1e1b 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -121,7 +121,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderInvibes,
BidderIQZone,
BidderIx,
- BidderJANet,
BidderJixie,
BidderKargo,
BidderKayzen,
@@ -412,7 +411,6 @@ const (
BidderInvibes BidderName = "invibes"
BidderIQZone BidderName = "iqzone"
BidderIx BidderName = "ix"
- BidderJANet BidderName = "janet"
BidderJixie BidderName = "jixie"
BidderKargo BidderName = "kargo"
BidderKayzen BidderName = "kayzen"
diff --git a/static/bidder-info/janet.yaml b/static/bidder-info/janet.yaml
index 0a3abb53af4..97f44a2bd56 100644
--- a/static/bidder-info/janet.yaml
+++ b/static/bidder-info/janet.yaml
@@ -1,15 +1,7 @@
+aliasOf: adtelligent
endpoint: "http://ghb.bidder.jmgads.com/pbs/ortb"
maintainer:
email: "info@thejmg.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
userSync:
# JANet supports user syncing, but requires configuration by the host. contact this
# bidder directly at the email address in this file to ask about enabling user sync.
diff --git a/static/bidder-params/janet.json b/static/bidder-params/janet.json
deleted file mode 100644
index 38c2c2eb044..00000000000
--- a/static/bidder-params/janet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "JANet Adapter Params",
- "description": "A schema which validates params accepted by the JANet adapter",
-
- "type": "object",
- "properties": {
- "placementId": {
- "type": "integer",
- "description": "An ID which identifies this placement of the impression"
- },
- "siteId": {
- "type": "integer",
- "description": "An ID which identifies the site selling the impression"
- },
- "aid": {
- "type": "integer",
- "description": "An ID which identifies the channel"
- },
- "bidFloor": {
- "type": "number",
- "description": "BidFloor, US Dollars"
- }
- },
- "required": ["aid"]
-}
From 83c7946ab769d9886b0967e1864c7d9535c1552a Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Wed, 18 Oct 2023 18:24:08 +0530
Subject: [PATCH 20/34] migrate janet alias to use new pattern (#3190)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/pgam.yaml | 10 +---------
static/bidder-params/pgam.json | 26 --------------------------
4 files changed, 1 insertion(+), 38 deletions(-)
delete mode 100644 static/bidder-params/pgam.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 573a0413520..8e97baf655f 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -330,7 +330,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderOutbrain: outbrain.Builder,
openrtb_ext.BidderOwnAdx: ownadx.Builder,
openrtb_ext.BidderPangle: pangle.Builder,
- openrtb_ext.BidderPGAM: adtelligent.Builder,
openrtb_ext.BidderPGAMSsp: pgamssp.Builder,
openrtb_ext.BidderPubmatic: pubmatic.Builder,
openrtb_ext.BidderPubnative: pubnative.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index bec6d3c1e1b..24f24c16278 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -155,7 +155,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderOutbrain,
BidderOwnAdx,
BidderPangle,
- BidderPGAM,
BidderPGAMSsp,
BidderPubmatic,
BidderPubnative,
@@ -445,7 +444,6 @@ const (
BidderOutbrain BidderName = "outbrain"
BidderOwnAdx BidderName = "ownadx"
BidderPangle BidderName = "pangle"
- BidderPGAM BidderName = "pgam"
BidderPGAMSsp BidderName = "pgamssp"
BidderPubmatic BidderName = "pubmatic"
BidderPubnative BidderName = "pubnative"
diff --git a/static/bidder-info/pgam.yaml b/static/bidder-info/pgam.yaml
index 0c9b2f008b6..e0bf4388d4b 100644
--- a/static/bidder-info/pgam.yaml
+++ b/static/bidder-info/pgam.yaml
@@ -1,15 +1,7 @@
+aliasOf: adtelligent
endpoint: "http://ghb.pgamssp.com/pbs/ortb"
maintainer:
email: "ppatel@pgammedia.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
userSync:
# PGAM ssp supports user syncing, but requires configuration by the host. contact this
# bidder directly at the email address in this file to ask about enabling user sync.
diff --git a/static/bidder-params/pgam.json b/static/bidder-params/pgam.json
deleted file mode 100644
index c0a016a7d24..00000000000
--- a/static/bidder-params/pgam.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "PGAM Adapter Params",
- "description": "A schema which validates params accepted by the PGAM ssp adapter",
-
- "type": "object",
- "properties": {
- "placementId": {
- "type": "integer",
- "description": "An ID which identifies this placement of the impression"
- },
- "siteId": {
- "type": "integer",
- "description": "An ID which identifies the site selling the impression"
- },
- "aid": {
- "type": "integer",
- "description": "An ID which identifies the channel"
- },
- "bidFloor": {
- "type": "number",
- "description": "BidFloor, US Dollars"
- }
- },
- "required": ["aid"]
-}
From 32ddacacbcceec660d274f84b395840327af1247 Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Wed, 18 Oct 2023 18:38:40 +0530
Subject: [PATCH 21/34] migrate streamkey alias to use new pattern (#3191)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/streamkey.yaml | 1 +
static/bidder-params/streamkey.json | 26 --------------------------
4 files changed, 1 insertion(+), 29 deletions(-)
delete mode 100644 static/bidder-params/streamkey.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 8e97baf655f..f28973ef8d9 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -357,7 +357,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderSonobi: sonobi.Builder,
openrtb_ext.BidderSovrn: sovrn.Builder,
openrtb_ext.BidderSspBC: sspBC.Builder,
- openrtb_ext.BidderStreamkey: adtelligent.Builder,
openrtb_ext.BidderSuntContent: suntContent.Builder,
openrtb_ext.BidderStroeerCore: stroeerCore.Builder,
openrtb_ext.BidderSynacormedia: imds.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 24f24c16278..bde67130350 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -182,7 +182,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderSonobi,
BidderSovrn,
BidderSspBC,
- BidderStreamkey,
BidderStroeerCore,
BidderSuntContent,
BidderSynacormedia,
@@ -471,7 +470,6 @@ const (
BidderSonobi BidderName = "sonobi"
BidderSovrn BidderName = "sovrn"
BidderSspBC BidderName = "sspBC"
- BidderStreamkey BidderName = "streamkey"
BidderStroeerCore BidderName = "stroeerCore"
BidderSuntContent BidderName = "suntContent"
BidderSynacormedia BidderName = "synacormedia"
diff --git a/static/bidder-info/streamkey.yaml b/static/bidder-info/streamkey.yaml
index 9e5d05abaec..20510ceac69 100644
--- a/static/bidder-info/streamkey.yaml
+++ b/static/bidder-info/streamkey.yaml
@@ -1,3 +1,4 @@
+aliasOf: adtelligent
endpoint: "http://ghb.hb.streamkey.net/pbs/ortb"
maintainer:
email: "contact@streamkey.tv"
diff --git a/static/bidder-params/streamkey.json b/static/bidder-params/streamkey.json
deleted file mode 100644
index ec8e5b1b643..00000000000
--- a/static/bidder-params/streamkey.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Streamkey Adapter Params",
- "description": "A schema which validates params accepted by the Streamkey adapter",
-
- "type": "object",
- "properties": {
- "placementId": {
- "type": "integer",
- "description": "An ID which identifies this placement of the impression"
- },
- "siteId": {
- "type": "integer",
- "description": "An ID which identifies the site selling the impression"
- },
- "aid": {
- "type": "integer",
- "description": "An ID which identifies the channel"
- },
- "bidFloor": {
- "type": "number",
- "description": "BidFloor, US Dollars"
- }
- },
- "required": ["aid"]
-}
From 9bfe196d3e868512dff813cd7a60721ac1b66f0e Mon Sep 17 00:00:00 2001
From: Ashish Garg
Date: Wed, 18 Oct 2023 18:39:08 +0530
Subject: [PATCH 22/34] migrate viewdeos alias to use new pattern (#3192)
---
exchange/adapter_builders.go | 1 -
openrtb_ext/bidders.go | 2 --
static/bidder-info/viewdeos.yaml | 10 +---------
static/bidder-params/viewdeos.json | 26 --------------------------
4 files changed, 1 insertion(+), 38 deletions(-)
delete mode 100644 static/bidder-params/viewdeos.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index f28973ef8d9..a8b1b0ba361 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -377,7 +377,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderVideoByte: videobyte.Builder,
openrtb_ext.BidderVideoHeroes: videoheroes.Builder,
openrtb_ext.BidderVidoomy: vidoomy.Builder,
- openrtb_ext.BidderViewdeos: adtelligent.Builder,
openrtb_ext.BidderVisibleMeasures: visiblemeasures.Builder,
openrtb_ext.BidderVisx: visx.Builder,
openrtb_ext.BidderVox: vox.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index bde67130350..02e01c5336e 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -202,7 +202,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderVideoByte,
BidderVideoHeroes,
BidderVidoomy,
- BidderViewdeos,
BidderVisibleMeasures,
BidderVisx,
BidderVox,
@@ -490,7 +489,6 @@ const (
BidderVideoByte BidderName = "videobyte"
BidderVideoHeroes BidderName = "videoheroes"
BidderVidoomy BidderName = "vidoomy"
- BidderViewdeos BidderName = "viewdeos"
BidderVisibleMeasures BidderName = "visiblemeasures"
BidderVisx BidderName = "visx"
BidderVox BidderName = "vox"
diff --git a/static/bidder-info/viewdeos.yaml b/static/bidder-info/viewdeos.yaml
index c5e1e8ef02c..8d14cb961d8 100644
--- a/static/bidder-info/viewdeos.yaml
+++ b/static/bidder-info/viewdeos.yaml
@@ -1,16 +1,8 @@
+aliasOf: adtelligent
endpoint: "http://ghb.sync.viewdeos.com/pbs/ortb"
maintainer:
email: "contact@viewdeos.com"
gvlVendorID: 924
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
userSync:
# viewdeos supports user syncing, but requires configuration by the host. contact this
# bidder directly at the email address in this file to ask about enabling user sync.
diff --git a/static/bidder-params/viewdeos.json b/static/bidder-params/viewdeos.json
deleted file mode 100644
index 3e309e4b77a..00000000000
--- a/static/bidder-params/viewdeos.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Viewdeos Adapter Params",
- "description": "A schema which validates params accepted by the Viewdeos adapter",
-
- "type": "object",
- "properties": {
- "placementId": {
- "type": "integer",
- "description": "An ID which identifies this placement of the impression"
- },
- "siteId": {
- "type": "integer",
- "description": "An ID which identifies the site selling the impression"
- },
- "aid": {
- "type": "integer",
- "description": "An ID which identifies the channel"
- },
- "bidFloor": {
- "type": "number",
- "description": "BidFloor, US Dollars"
- }
- },
- "required": ["aid"]
-}
From 91881fe01ccac2eb44e517164e368b2e55e38116 Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Wed, 18 Oct 2023 19:18:59 +0530
Subject: [PATCH 23/34] migrate limelight aliases to follow new pattern (#3183)
co-authored by @onkarvhanumante
---
exchange/adapter_builders.go | 6 ------
openrtb_ext/bidders.go | 12 ------------
static/bidder-info/adsyield.yaml | 16 +---------------
static/bidder-info/appstock.yaml | 16 +---------------
static/bidder-info/evtech.yaml | 16 +---------------
static/bidder-info/greedygame.yaml | 16 +---------------
static/bidder-info/iionads.yaml | 16 +---------------
static/bidder-info/xtrmqb.yaml | 16 +---------------
static/bidder-params/adsyield.json | 23 -----------------------
static/bidder-params/appstock.json | 23 -----------------------
static/bidder-params/evtech.json | 23 -----------------------
static/bidder-params/greedygame.json | 23 -----------------------
static/bidder-params/iionads.json | 23 -----------------------
static/bidder-params/xtrmqb.json | 23 -----------------------
14 files changed, 6 insertions(+), 246 deletions(-)
delete mode 100644 static/bidder-params/adsyield.json
delete mode 100644 static/bidder-params/appstock.json
delete mode 100644 static/bidder-params/evtech.json
delete mode 100644 static/bidder-params/greedygame.json
delete mode 100644 static/bidder-params/iionads.json
delete mode 100644 static/bidder-params/xtrmqb.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index a8b1b0ba361..a65e051ebf3 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -213,7 +213,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderAdquery: adquery.Builder,
openrtb_ext.BidderAdrino: adrino.Builder,
openrtb_ext.BidderAdsinteractive: adsinteractive.Builder,
- openrtb_ext.BidderAdsyield: limelightDigital.Builder,
openrtb_ext.BidderAdtarget: adtarget.Builder,
openrtb_ext.BidderAdtrgtme: adtrgtme.Builder,
openrtb_ext.BidderAdtelligent: adtelligent.Builder,
@@ -227,7 +226,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderAMX: amx.Builder,
openrtb_ext.BidderApacdex: apacdex.Builder,
openrtb_ext.BidderAppnexus: appnexus.Builder,
- openrtb_ext.BidderAppstock: limelightDigital.Builder,
openrtb_ext.BidderAppush: appush.Builder,
openrtb_ext.BidderAudienceNetwork: audienceNetwork.Builder,
openrtb_ext.BidderAutomatad: automatad.Builder,
@@ -273,7 +271,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderEpom: epom.Builder,
openrtb_ext.BidderEpsilon: conversant.Builder,
openrtb_ext.BidderEVolution: evolution.Builder,
- openrtb_ext.BidderEvtech: limelightDigital.Builder,
openrtb_ext.BidderFlipp: flipp.Builder,
openrtb_ext.BidderFreewheelSSP: freewheelssp.Builder,
openrtb_ext.BidderFreewheelSSPOld: freewheelssp.Builder,
@@ -282,11 +279,9 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderGamoshi: gamoshi.Builder,
openrtb_ext.BidderGlobalsun: globalsun.Builder,
openrtb_ext.BidderGothamads: gothamads.Builder,
- openrtb_ext.BidderGreedygame: limelightDigital.Builder,
openrtb_ext.BidderGrid: grid.Builder,
openrtb_ext.BidderGumGum: gumgum.Builder,
openrtb_ext.BidderHuaweiAds: huaweiads.Builder,
- openrtb_ext.BidderIionads: limelightDigital.Builder,
openrtb_ext.BidderImds: imds.Builder,
openrtb_ext.BidderImpactify: impactify.Builder,
openrtb_ext.BidderImprovedigital: improvedigital.Builder,
@@ -382,7 +377,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderVox: vox.Builder,
openrtb_ext.BidderVrtcal: vrtcal.Builder,
openrtb_ext.BidderXeworks: xeworks.Builder,
- openrtb_ext.BidderXtrmqb: limelightDigital.Builder,
openrtb_ext.BidderYahooAds: yahooAds.Builder,
openrtb_ext.BidderYahooAdvertising: yahooAds.Builder,
openrtb_ext.BidderYahooSSP: yahooAds.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 02e01c5336e..b14eeb49b35 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -38,7 +38,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderAdquery,
BidderAdrino,
BidderAdsinteractive,
- BidderAdsyield,
BidderAdtarget,
BidderAdtrgtme,
BidderAdtelligent,
@@ -52,7 +51,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderAMX,
BidderApacdex,
BidderAppnexus,
- BidderAppstock,
BidderAppush,
BidderAudienceNetwork,
BidderAutomatad,
@@ -98,7 +96,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderEpom,
BidderEpsilon,
BidderEVolution,
- BidderEvtech,
BidderFlipp,
BidderFreewheelSSP,
BidderFreewheelSSPOld,
@@ -107,11 +104,9 @@ var coreBidderNames []BidderName = []BidderName{
BidderGamoshi,
BidderGlobalsun,
BidderGothamads,
- BidderGreedygame,
BidderGrid,
BidderGumGum,
BidderHuaweiAds,
- BidderIionads,
BidderImds,
BidderImpactify,
BidderImprovedigital,
@@ -207,7 +202,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderVox,
BidderVrtcal,
BidderXeworks,
- BidderXtrmqb,
BidderYahooAds,
BidderYahooAdvertising,
BidderYahooSSP,
@@ -325,7 +319,6 @@ const (
BidderAdquery BidderName = "adquery"
BidderAdrino BidderName = "adrino"
BidderAdsinteractive BidderName = "adsinteractive"
- BidderAdsyield BidderName = "adsyield"
BidderAdtarget BidderName = "adtarget"
BidderAdtrgtme BidderName = "adtrgtme"
BidderAdtelligent BidderName = "adtelligent"
@@ -339,7 +332,6 @@ const (
BidderAMX BidderName = "amx"
BidderApacdex BidderName = "apacdex"
BidderAppnexus BidderName = "appnexus"
- BidderAppstock BidderName = "appstock"
BidderAppush BidderName = "appush"
BidderAudienceNetwork BidderName = "audienceNetwork"
BidderAutomatad BidderName = "automatad"
@@ -385,7 +377,6 @@ const (
BidderEpsilon BidderName = "epsilon"
BidderEpom BidderName = "epom"
BidderEVolution BidderName = "e_volution"
- BidderEvtech BidderName = "evtech"
BidderFlipp BidderName = "flipp"
BidderFreewheelSSP BidderName = "freewheelssp"
BidderFreewheelSSPOld BidderName = "freewheel-ssp"
@@ -394,11 +385,9 @@ const (
BidderGamoshi BidderName = "gamoshi"
BidderGlobalsun BidderName = "globalsun"
BidderGothamads BidderName = "gothamads"
- BidderGreedygame BidderName = "greedygame"
BidderGrid BidderName = "grid"
BidderGumGum BidderName = "gumgum"
BidderHuaweiAds BidderName = "huaweiads"
- BidderIionads BidderName = "iionads"
BidderImds BidderName = "imds"
BidderImpactify BidderName = "impactify"
BidderImprovedigital BidderName = "improvedigital"
@@ -494,7 +483,6 @@ const (
BidderVox BidderName = "vox"
BidderVrtcal BidderName = "vrtcal"
BidderXeworks BidderName = "xeworks"
- BidderXtrmqb BidderName = "xtrmqb"
BidderYahooAds BidderName = "yahooAds"
BidderYahooAdvertising BidderName = "yahooAdvertising"
BidderYahooSSP BidderName = "yahoossp"
diff --git a/static/bidder-info/adsyield.yaml b/static/bidder-info/adsyield.yaml
index dadd9cc3d13..2be1395b851 100644
--- a/static/bidder-info/adsyield.yaml
+++ b/static/bidder-info/adsyield.yaml
@@ -1,16 +1,2 @@
endpoint: "http://ads-pbs.open-adsyield.com/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
diff --git a/static/bidder-info/appstock.yaml b/static/bidder-info/appstock.yaml
index 28f420e9e88..73b54aa7144 100644
--- a/static/bidder-info/appstock.yaml
+++ b/static/bidder-info/appstock.yaml
@@ -1,16 +1,2 @@
endpoint: "http://ads-pbs.pre.vr-tb.com/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
diff --git a/static/bidder-info/evtech.yaml b/static/bidder-info/evtech.yaml
index 4277a5c46c8..59134e04523 100644
--- a/static/bidder-info/evtech.yaml
+++ b/static/bidder-info/evtech.yaml
@@ -1,19 +1,5 @@
endpoint: "http://ads-pbs.direct.e-volution.ai/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
userSync:
iframe:
url: https://tracker.direct.e-volution.ai/sync.html?gdpr={{.GDPR}}&consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect={{.RedirectURL}}
diff --git a/static/bidder-info/greedygame.yaml b/static/bidder-info/greedygame.yaml
index 5e73e1fe950..330a7debd9d 100644
--- a/static/bidder-info/greedygame.yaml
+++ b/static/bidder-info/greedygame.yaml
@@ -1,16 +1,2 @@
endpoint: "http://ads-pbs.rtb-greedygame.com/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
diff --git a/static/bidder-info/iionads.yaml b/static/bidder-info/iionads.yaml
index da2f494bb30..1dc154a358d 100644
--- a/static/bidder-info/iionads.yaml
+++ b/static/bidder-info/iionads.yaml
@@ -1,16 +1,2 @@
endpoint: "http://ads-pbs.iionads.com/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
\ No newline at end of file
diff --git a/static/bidder-info/xtrmqb.yaml b/static/bidder-info/xtrmqb.yaml
index c1f0da3fc1f..b7a068c3889 100644
--- a/static/bidder-info/xtrmqb.yaml
+++ b/static/bidder-info/xtrmqb.yaml
@@ -1,16 +1,2 @@
endpoint: "http://ads-pbs.ortb.tech/openrtb/{{.PublisherID}}?host={{.Host}}"
-maintainer:
- email: "engineering@project-limelight.com"
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- - audio
- - native
- site:
- mediaTypes:
- - banner
- - video
- - audio
- - native
+aliasOf: "limelightDigital"
diff --git a/static/bidder-params/adsyield.json b/static/bidder-params/adsyield.json
deleted file mode 100644
index c7c5308890f..00000000000
--- a/static/bidder-params/adsyield.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Adsyield Adapter Params",
- "description": "A schema which validates params accepted by the Adsyield adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
diff --git a/static/bidder-params/appstock.json b/static/bidder-params/appstock.json
deleted file mode 100644
index eb2251e4e47..00000000000
--- a/static/bidder-params/appstock.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Appstock Adapter Params",
- "description": "A schema which validates params accepted by the Appstock adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
diff --git a/static/bidder-params/evtech.json b/static/bidder-params/evtech.json
deleted file mode 100644
index 5e78b7de171..00000000000
--- a/static/bidder-params/evtech.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Evolution Technologies Adapter Params",
- "description": "A schema which validates params accepted by the Evolution Technologies adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
diff --git a/static/bidder-params/greedygame.json b/static/bidder-params/greedygame.json
deleted file mode 100644
index 2057c147d44..00000000000
--- a/static/bidder-params/greedygame.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "GreedyGame Adapter Params",
- "description": "A schema which validates params accepted by the GreedyGame adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
diff --git a/static/bidder-params/iionads.json b/static/bidder-params/iionads.json
deleted file mode 100644
index b9196445acc..00000000000
--- a/static/bidder-params/iionads.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Iion Adapter Params",
- "description": "A schema which validates params accepted by the Iion adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
diff --git a/static/bidder-params/xtrmqb.json b/static/bidder-params/xtrmqb.json
deleted file mode 100644
index 59e711e9ad3..00000000000
--- a/static/bidder-params/xtrmqb.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "XTRM QB Adapter Params",
- "description": "A schema which validates params accepted by the XTRM QB adapter",
- "type": "object",
-
- "properties": {
- "host": {
- "type": "string",
- "description": "Ad network's RTB host",
- "format": "hostname",
- "pattern": "^.+\\..+$"
- },
- "publisherId": {
- "type": ["integer", "string"],
- "description": "Publisher ID",
- "minimum": 1,
- "pattern": "^[1-9][0-9]*$"
- }
- },
-
- "required": ["host", "publisherId"]
-}
From ac7a0d40d11f12e950270857f2a2aca8178ae1fc Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Wed, 18 Oct 2023 19:19:58 +0530
Subject: [PATCH 24/34] migrate apacdex aliases to use new pattern (#3184)
co-authored: @onkarvhanumante
---
exchange/adapter_builders.go | 2 --
openrtb_ext/bidders.go | 4 ---
static/bidder-info/quantumdex.yaml | 21 +--------------
static/bidder-info/valueimpression.yaml | 21 +--------------
static/bidder-params/quantumdex.json | 32 -----------------------
static/bidder-params/valueimpression.json | 32 -----------------------
6 files changed, 2 insertions(+), 110 deletions(-)
delete mode 100644 static/bidder-params/quantumdex.json
delete mode 100644 static/bidder-params/valueimpression.json
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index a65e051ebf3..29e16bb2904 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -330,7 +330,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderPubnative: pubnative.Builder,
openrtb_ext.BidderPulsepoint: pulsepoint.Builder,
openrtb_ext.BidderPWBid: pwbid.Builder,
- openrtb_ext.BidderQuantumdex: apacdex.Builder,
openrtb_ext.BidderRevcontent: revcontent.Builder,
openrtb_ext.BidderRichaudience: richaudience.Builder,
openrtb_ext.BidderRise: rise.Builder,
@@ -368,7 +367,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderUndertone: undertone.Builder,
openrtb_ext.BidderUnicorn: unicorn.Builder,
openrtb_ext.BidderUnruly: unruly.Builder,
- openrtb_ext.BidderValueImpression: apacdex.Builder,
openrtb_ext.BidderVideoByte: videobyte.Builder,
openrtb_ext.BidderVideoHeroes: videoheroes.Builder,
openrtb_ext.BidderVidoomy: vidoomy.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index b14eeb49b35..709c3aa3cdd 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -155,7 +155,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderPubnative,
BidderPulsepoint,
BidderPWBid,
- BidderQuantumdex,
BidderRevcontent,
BidderRichaudience,
BidderRise,
@@ -193,7 +192,6 @@ var coreBidderNames []BidderName = []BidderName{
BidderUndertone,
BidderUnicorn,
BidderUnruly,
- BidderValueImpression,
BidderVideoByte,
BidderVideoHeroes,
BidderVidoomy,
@@ -436,7 +434,6 @@ const (
BidderPubnative BidderName = "pubnative"
BidderPulsepoint BidderName = "pulsepoint"
BidderPWBid BidderName = "pwbid"
- BidderQuantumdex BidderName = "quantumdex"
BidderRevcontent BidderName = "revcontent"
BidderRichaudience BidderName = "richaudience"
BidderRise BidderName = "rise"
@@ -474,7 +471,6 @@ const (
BidderUndertone BidderName = "undertone"
BidderUnicorn BidderName = "unicorn"
BidderUnruly BidderName = "unruly"
- BidderValueImpression BidderName = "valueimpression"
BidderVideoByte BidderName = "videobyte"
BidderVideoHeroes BidderName = "videoheroes"
BidderVidoomy BidderName = "vidoomy"
diff --git a/static/bidder-info/quantumdex.yaml b/static/bidder-info/quantumdex.yaml
index 590737ac28b..32043ad62fb 100644
--- a/static/bidder-info/quantumdex.yaml
+++ b/static/bidder-info/quantumdex.yaml
@@ -1,20 +1 @@
-endpoint: "http://useast.quantumdex.io/auction/pbs"
-maintainer:
- email: "support@apacdex.com"
-modifyingVastXmlAllowed: false
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
-userSync:
- iframe:
- url: https://sync.quantumdex.io/usersync/pbs?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}
- userMacro: "[UID]"
- redirect:
- url: "https://sync.quantumdex.io/getuid?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}"
- userMacro: "[UID]"
+aliasOf: "apacdex"
\ No newline at end of file
diff --git a/static/bidder-info/valueimpression.yaml b/static/bidder-info/valueimpression.yaml
index 9e6e583967c..32043ad62fb 100644
--- a/static/bidder-info/valueimpression.yaml
+++ b/static/bidder-info/valueimpression.yaml
@@ -1,20 +1 @@
-endpoint: "http://useast.quantumdex.io/auction/pbs"
-maintainer:
- email: "support@apacdex.com"
-modifyingVastXmlAllowed: false
-capabilities:
- app:
- mediaTypes:
- - banner
- - video
- site:
- mediaTypes:
- - banner
- - video
-userSync:
- iframe:
- url: https://sync.quantumdex.io/usersync/pbs?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}
- userMacro: "[UID]"
- redirect:
- url: "https://sync.quantumdex.io/getuid?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}"
- userMacro: "[UID]"
\ No newline at end of file
+aliasOf: "apacdex"
\ No newline at end of file
diff --git a/static/bidder-params/quantumdex.json b/static/bidder-params/quantumdex.json
deleted file mode 100644
index 3ef9abe34c6..00000000000
--- a/static/bidder-params/quantumdex.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Quantumdex Adapter Params",
- "description": "A schema which validates params accepted by the Quantumdex adapter",
- "type": "object",
- "properties": {
- "placementId": {
- "type": "string",
- "description": "Placement ID provided by Quantumdex"
- },
- "siteId": {
- "type": "string",
- "description": "Publisher site ID from Quantumdex"
- },
- "floorPrice": {
- "type": "number",
- "description": "CPM bidfloor in USD"
- }
- },
- "oneOf": [
- {
- "required": [
- "placementId"
- ]
- },
- {
- "required": [
- "siteId"
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/static/bidder-params/valueimpression.json b/static/bidder-params/valueimpression.json
deleted file mode 100644
index 793e940eb11..00000000000
--- a/static/bidder-params/valueimpression.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-04/schema#",
- "title": "Valueimpression Adapter Params",
- "description": "A schema which validates params accepted by the Valueimpression adapter",
- "type": "object",
- "properties": {
- "placementId": {
- "type": "string",
- "description": "Placement ID provided by Valueimpression"
- },
- "siteId": {
- "type": "string",
- "description": "Publisher site ID from Valueimpression"
- },
- "floorPrice": {
- "type": "number",
- "description": "CPM bidfloor in USD"
- }
- },
- "oneOf": [
- {
- "required": [
- "placementId"
- ]
- },
- {
- "required": [
- "siteId"
- ]
- }
- ]
-}
\ No newline at end of file
From bc77035476d38200946f3f1b0ae9a6a76207eac3 Mon Sep 17 00:00:00 2001
From: Onkar Hanumante
Date: Thu, 19 Oct 2023 04:55:44 +0530
Subject: [PATCH 25/34] Update release workflow to support major version
release (#3235)
---
.github/workflows/release.yml | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index fd790699a14..f1d2b10c41c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -6,11 +6,12 @@ on:
releaseType:
type: choice
options:
+ - major
- minor
- patch
default: minor
required: true
- description: 'minor: v0.X.0, patch: v0.0.X'
+ description: 'major: vX.0.0, minor: v0.X.0, patch: v0.0.X'
debug:
type: boolean
default: true
@@ -78,11 +79,18 @@ jobs:
nextTag=''
releaseType=${{ inputs.releaseType }}
- if [ $releaseType == "minor" ]; then
- # increment minor version and reset patch version
- nextTag=$(echo "${currentTag}" | awk -F. '{OFS="."; $2+=1; $3=0; print $0}')
+ if [ $releaseType == "major" ]; then
+ # PBS-GO skipped the v1.0.0 major release - https://github.com/prebid/prebid-server/issues/3068
+ # If the current tag is v0.x.x, the script sets the next release tag to v2.0.0
+ # Otherwise, the script increments the major version by 1 and sets the minor and patch versions to zero
+ # For example, v2.x.x will be incremented to v3.0.0
+ major=$(echo "${currentTag}" | awk -F. '{gsub(/^v/, "", $1); if($1 == 0) $1=2; else $1+=1; print $1}')
+ nextTag="v${major}.0.0"
+ elif [ $releaseType == "minor" ]; then
+ # Increment minor version and reset patch version
+ nextTag=$(echo "${currentTag}" | awk -F. '{OFS="."; $2+=1; $3=0; print $0}')
else
- # increment patch version
+ # Increment patch version
nextTag=$(echo "${currentTag}" | awk -F. '{OFS="."; $3+=1; print $0}')
fi
From 8131a14f69dbb585a3f0b699e794634589b823ee Mon Sep 17 00:00:00 2001
From: IQzoneIT
Date: Thu, 19 Oct 2023 02:08:33 -0400
Subject: [PATCH 26/34] New Adapter: IQX (#3164)
Co-authored-by: Dmytro Shyrokov
---
adapters/iqx/iqx.go | 164 ++++++++++
adapters/iqx/iqxtest_test.go | 27 ++
.../iqx/iqzonextest/exemplary/banner.json | 283 ++++++++++++++++++
.../iqx/iqzonextest/exemplary/native.json | 164 ++++++++++
adapters/iqx/iqzonextest/exemplary/video.json | 204 +++++++++++++
.../supplemental/bad-response.json | 106 +++++++
.../supplemental/empty-mediatype.json | 190 ++++++++++++
.../supplemental/empty-seatbid-0-bid.json | 111 +++++++
.../supplemental/empty-seatbid.json | 111 +++++++
.../invalid-ext-bidder-object.json | 49 +++
.../supplemental/invalid-ext-object.json | 47 +++
.../supplemental/invalid-mediatype.json | 187 ++++++++++++
.../iqzonextest/supplemental/status-204.json | 100 +++++++
.../iqzonextest/supplemental/status-400.json | 106 +++++++
.../iqzonextest/supplemental/status-503.json | 105 +++++++
.../supplemental/unexpected-status.json | 106 +++++++
adapters/iqx/params_test.go | 53 ++++
exchange/adapter_builders.go | 2 +
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_iqx.go | 6 +
static/bidder-info/iqx.yaml | 19 ++
static/bidder-params/iqx.json | 22 ++
22 files changed, 2164 insertions(+)
create mode 100644 adapters/iqx/iqx.go
create mode 100644 adapters/iqx/iqxtest_test.go
create mode 100644 adapters/iqx/iqzonextest/exemplary/banner.json
create mode 100644 adapters/iqx/iqzonextest/exemplary/native.json
create mode 100644 adapters/iqx/iqzonextest/exemplary/video.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/bad-response.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/empty-mediatype.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/empty-seatbid-0-bid.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/empty-seatbid.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/invalid-ext-bidder-object.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/invalid-ext-object.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/invalid-mediatype.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/status-204.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/status-400.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/status-503.json
create mode 100644 adapters/iqx/iqzonextest/supplemental/unexpected-status.json
create mode 100644 adapters/iqx/params_test.go
create mode 100644 openrtb_ext/imp_iqx.go
create mode 100644 static/bidder-info/iqx.yaml
create mode 100644 static/bidder-params/iqx.json
diff --git a/adapters/iqx/iqx.go b/adapters/iqx/iqx.go
new file mode 100644
index 00000000000..543d988bce5
--- /dev/null
+++ b/adapters/iqx/iqx.go
@@ -0,0 +1,164 @@
+package iqx
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+type bidType struct {
+ Type string `json:"type"`
+}
+
+type bidExt struct {
+ Prebid bidType `json:"prebid"`
+}
+
+type adapter struct {
+ endpoint *template.Template
+}
+
+func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
+ tmpl, err := template.New("endpointTemplate").Parse(config.Endpoint)
+ if err != nil {
+ return nil, fmt.Errorf("unable to parse endpoint URL template: %v", err)
+ }
+
+ bidder := &adapter{
+ endpoint: tmpl,
+ }
+
+ return bidder, nil
+}
+
+func (a *adapter) buildEndpointFromRequest(imp *openrtb2.Imp) (string, error) {
+ var impExt adapters.ExtImpBidder
+ if err := json.Unmarshal(imp.Ext, &impExt); err != nil {
+ return "", &errortypes.BadInput{
+ Message: fmt.Sprintf("Failed to deserialize bidder impression extension: %v", err),
+ }
+ }
+
+ var iqzonexExt openrtb_ext.ExtIQX
+ if err := json.Unmarshal(impExt.Bidder, &iqzonexExt); err != nil {
+ return "", &errortypes.BadInput{
+ Message: fmt.Sprintf("Failed to deserialize IQZonex extension: %v", err),
+ }
+ }
+
+ endpointParams := macros.EndpointTemplateParams{
+ Host: iqzonexExt.Env,
+ SourceId: iqzonexExt.Pid,
+ }
+
+ return macros.ResolveMacros(a.endpoint, endpointParams)
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ var requests []*adapters.RequestData
+ var errs []error
+
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+ headers.Add("Accept", "application/json")
+
+ requestCopy := *request
+ for _, imp := range request.Imp {
+ requestCopy.Imp = []openrtb2.Imp{imp}
+
+ endpoint, err := a.buildEndpointFromRequest(&imp)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+
+ requestJSON, err := json.Marshal(requestCopy)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+
+ request := &adapters.RequestData{
+ Method: http.MethodPost,
+ Body: requestJSON,
+ Uri: endpoint,
+ Headers: headers,
+ }
+
+ requests = append(requests, request)
+ }
+
+ return requests, errs
+}
+
+func (a *adapter) MakeBids(openRTBRequest *openrtb2.BidRequest, requestToBidder *adapters.RequestData, bidderRawResponse *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(bidderRawResponse) {
+ return nil, nil
+ }
+
+ if bidderRawResponse.StatusCode == http.StatusServiceUnavailable {
+ return nil, []error{&errortypes.BadInput{
+ Message: "Bidder IQZonex is unavailable. Please contact the bidder support.",
+ }}
+ }
+
+ if err := adapters.CheckResponseStatusCodeForErrors(bidderRawResponse); err != nil {
+ return nil, []error{err}
+ }
+
+ var bidResp openrtb2.BidResponse
+ if err := json.Unmarshal(bidderRawResponse.Body, &bidResp); err != nil {
+ return nil, []error{err}
+ }
+
+ if len(bidResp.SeatBid) == 0 {
+ return nil, []error{&errortypes.BadServerResponse{
+ Message: "Array SeatBid cannot be empty",
+ }}
+ }
+
+ return prepareBidResponse(bidResp.SeatBid)
+}
+
+func prepareBidResponse(seats []openrtb2.SeatBid) (*adapters.BidderResponse, []error) {
+ errs := []error{}
+ bidResponse := adapters.NewBidderResponseWithBidsCapacity(len(seats))
+
+ for _, seatBid := range seats {
+ for bidId, bid := range seatBid.Bid {
+ bidType, err := getMediaTypeForBid(bid)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+
+ bidResponse.Bids = append(bidResponse.Bids, &adapters.TypedBid{
+ Bid: &seatBid.Bid[bidId],
+ BidType: bidType,
+ })
+ }
+ }
+
+ return bidResponse, errs
+}
+
+func getMediaTypeForBid(bid openrtb2.Bid) (openrtb_ext.BidType, error) {
+ switch bid.MType {
+ case openrtb2.MarkupBanner:
+ return openrtb_ext.BidTypeBanner, nil
+ case openrtb2.MarkupVideo:
+ return openrtb_ext.BidTypeVideo, nil
+ case openrtb2.MarkupNative:
+ return openrtb_ext.BidTypeNative, nil
+ default:
+ return "", fmt.Errorf("failed to parse bid mtype for impression id \"%s\"", bid.ImpID)
+ }
+}
diff --git a/adapters/iqx/iqxtest_test.go b/adapters/iqx/iqxtest_test.go
new file mode 100644
index 00000000000..18eaf5fa5ba
--- /dev/null
+++ b/adapters/iqx/iqxtest_test.go
@@ -0,0 +1,27 @@
+package iqx
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(
+ openrtb_ext.BidderIQX,
+ config.Adapter{
+ Endpoint: "http://rtb.iqzone.com/?pid={{.SourceId}}&host={{.Host}}&pbs=1",
+ },
+ config.Server{
+ ExternalUrl: "http://hosturl.com",
+ GvlID: 1,
+ DataCenter: "2",
+ },
+ )
+
+ assert.NoError(t, buildErr)
+ adapterstest.RunJSONBidderTest(t, "iqzonextest", bidder)
+}
diff --git a/adapters/iqx/iqzonextest/exemplary/banner.json b/adapters/iqx/iqzonextest/exemplary/banner.json
new file mode 100644
index 00000000000..303de661a2d
--- /dev/null
+++ b/adapters/iqx/iqzonextest/exemplary/banner.json
@@ -0,0 +1,283 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "1",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "pos": 0
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ },
+ {
+ "id": "2",
+ "secure": 1,
+ "bidfloor": 0.2,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "pos": 4
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": ["IAB12"],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "1",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "pos": 0
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": ["IAB12"],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "1",
+ "price": 1.2,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test2",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid1",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ },
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "2",
+ "secure": 1,
+ "bidfloor": 0.2,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "pos": 4
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": ["IAB12"],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "2",
+ "price": 2.4,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test3",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "id",
+ "impid": "1",
+ "price": 1.2,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test2",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid1",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ },
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "id",
+ "impid": "2",
+ "price": 2.4,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test3",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/exemplary/native.json b/adapters/iqx/iqzonextest/exemplary/native.json
new file mode 100644
index 00000000000..f458d70e127
--- /dev/null
+++ b/adapters/iqx/iqzonextest/exemplary/native.json
@@ -0,0 +1,164 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "native": {
+ "request": "{\"ver\":\"1.1\",\"layout\":1,\"adunit\":2,\"plcmtcnt\":6,\"plcmttype\":4,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":75}},{\"id\":2,\"required\":1,\"img\":{\"wmin\":492,\"hmin\":328,\"type\":3,\"mimes\":[\"image/jpeg\",\"image/jpg\",\"image/png\"]}},{\"id\":4,\"required\":0,\"data\":{\"type\":6}},{\"id\":5,\"required\":0,\"data\":{\"type\":7}},{\"id\":6,\"required\":0,\"data\":{\"type\":1,\"len\":20}}]}",
+ "ver": "1.1"
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "native": {
+ "request": "{\"ver\":\"1.1\",\"layout\":1,\"adunit\":2,\"plcmtcnt\":6,\"plcmttype\":4,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":75}},{\"id\":2,\"required\":1,\"img\":{\"wmin\":492,\"hmin\":328,\"type\":3,\"mimes\":[\"image/jpeg\",\"image/jpg\",\"image/png\"]}},{\"id\":4,\"required\":0,\"data\":{\"type\":6}},{\"id\":5,\"required\":0,\"data\":{\"type\":7}},{\"id\":6,\"required\":0,\"data\":{\"type\":1,\"len\":20}}]}",
+ "ver": "1.1"
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "bidid": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "id",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "{}",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "mtype": 4,
+ "ext": {
+ "prebid": {
+ "type": "native"
+ }
+ }
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "id",
+ "impid": "id",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "{}",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "mtype": 4,
+ "ext": {
+ "prebid": {
+ "type": "native"
+ }
+ }
+ },
+ "type": "native"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/exemplary/video.json b/adapters/iqx/iqzonextest/exemplary/video.json
new file mode 100644
index 00000000000..21826ac0440
--- /dev/null
+++ b/adapters/iqx/iqzonextest/exemplary/video.json
@@ -0,0 +1,204 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "video": {
+ "mimes": [
+ "video/mp4",
+ "video/ogg",
+ "video/webm"
+ ],
+ "minduration": 3,
+ "maxduration": 3000,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 480,
+ "h": 320,
+ "linearity": 1,
+ "playbackmethod": [
+ 2
+ ],
+ "pos": 0
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "video": {
+ "mimes": [
+ "video/mp4",
+ "video/ogg",
+ "video/webm"
+ ],
+ "minduration": 3,
+ "maxduration": 3000,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 480,
+ "h": 320,
+ "linearity": 1,
+ "playbackmethod": [
+ 2
+ ],
+ "pos": 0
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "bidid": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "id",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "mtype": 2,
+ "ext": {
+ "prebid": {
+ "type": "video"
+ }
+ }
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "id",
+ "impid": "id",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "mtype": 2,
+ "ext": {
+ "prebid": {
+ "type": "video"
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/bad-response.json b/adapters/iqx/iqzonextest/supplemental/bad-response.json
new file mode 100644
index 00000000000..3d9ff9ffcd3
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/bad-response.json
@@ -0,0 +1,106 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": ""
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "json: cannot unmarshal string into Go value of type openrtb2.BidResponse",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/empty-mediatype.json b/adapters/iqx/iqzonextest/supplemental/empty-mediatype.json
new file mode 100644
index 00000000000..3f471c9c06e
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/empty-mediatype.json
@@ -0,0 +1,190 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "bidid": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "1",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test1",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "mtype": 1,
+ "w": 300,
+ "h": 250,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }, {
+ "id": "id",
+ "impid": "2",
+ "price": 1.2,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test2",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "ext": {
+ "some": "value"
+ }
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "failed to parse bid mtype for impression id \"2\"",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency":"USD",
+ "bids":[
+ {
+ "bid": {
+ "id": "id",
+ "impid": "1",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test1",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/empty-seatbid-0-bid.json b/adapters/iqx/iqzonextest/supplemental/empty-seatbid-0-bid.json
new file mode 100644
index 00000000000..66b78f4bfbd
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/empty-seatbid-0-bid.json
@@ -0,0 +1,111 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "bidid": "id",
+ "seatbid": [
+ {
+ "bid": [],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [],
+ "expectedBidResponses": [{"currency":"USD","bids":[]}]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/empty-seatbid.json b/adapters/iqx/iqzonextest/supplemental/empty-seatbid.json
new file mode 100644
index 00000000000..4df7e16f767
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/empty-seatbid.json
@@ -0,0 +1,111 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "a1580f2f-be6d-11eb-a150-d094662c1c35",
+ "bidid": "359da97d0384d8a14767029c18fd840d",
+ "seatbid": [],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Array SeatBid cannot be empty",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/invalid-ext-bidder-object.json b/adapters/iqx/iqzonextest/supplemental/invalid-ext-bidder-object.json
new file mode 100644
index 00000000000..2f124a8cf3b
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/invalid-ext-bidder-object.json
@@ -0,0 +1,49 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": []
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [],
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "Failed to deserialize IQZonex extension: json: cannot unmarshal array into Go value of type openrtb_ext.ExtIQX",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/invalid-ext-object.json b/adapters/iqx/iqzonextest/supplemental/invalid-ext-object.json
new file mode 100644
index 00000000000..aa215eb3e34
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/invalid-ext-object.json
@@ -0,0 +1,47 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": ""
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [],
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "Failed to deserialize bidder impression extension: json: cannot unmarshal string into Go value of type adapters.ExtImpBidder",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/invalid-mediatype.json b/adapters/iqx/iqzonextest/supplemental/invalid-mediatype.json
new file mode 100644
index 00000000000..f2ded0f0cb4
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/invalid-mediatype.json
@@ -0,0 +1,187 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "id",
+ "bidid": "id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "id",
+ "impid": "1",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test1",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }, {
+ "id": "id",
+ "impid": "2",
+ "price": 1.2,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test2",
+ "adomain": [
+ "test.com"
+ ],
+ "cat": [
+ "IAB1"
+ ],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "seat": "seat"
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "failed to parse bid mtype for impression id \"2\"",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency":"USD",
+ "bids":[
+ {
+ "bid": {
+ "id": "id",
+ "impid": "1",
+ "price": 0.1,
+ "nurl": "http://test.com/nurl",
+ "burl": "http://test.com/burl",
+ "adm": "Test1",
+ "adomain": ["test.com"],
+ "cat": ["IAB1"],
+ "cid": "cid",
+ "crid": "crid",
+ "w": 300,
+ "h": 250,
+ "mtype": 1,
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/status-204.json b/adapters/iqx/iqzonextest/supplemental/status-204.json
new file mode 100644
index 00000000000..c850d34b527
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/status-204.json
@@ -0,0 +1,100 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 204,
+ "body": {}
+ }
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/status-400.json b/adapters/iqx/iqzonextest/supplemental/status-400.json
new file mode 100644
index 00000000000..7e3d17d3baf
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/status-400.json
@@ -0,0 +1,106 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 400,
+ "body": "The Key has a different ad format"
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/status-503.json b/adapters/iqx/iqzonextest/supplemental/status-503.json
new file mode 100644
index 00000000000..1b6dd02af8c
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/status-503.json
@@ -0,0 +1,105 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 503
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Bidder IQZonex is unavailable. Please contact the bidder support.",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/iqzonextest/supplemental/unexpected-status.json b/adapters/iqx/iqzonextest/supplemental/unexpected-status.json
new file mode 100644
index 00000000000..edfdf5fdd80
--- /dev/null
+++ b/adapters/iqx/iqzonextest/supplemental/unexpected-status.json
@@ -0,0 +1,106 @@
+{
+ "mockBidRequest": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "http://rtb.iqzone.com/?pid=3163e2c9e034770c0daaa98c7613b573&host=iqzonex-stage&pbs=1",
+ "body": {
+ "id": "id",
+ "imp": [
+ {
+ "id": "id",
+ "secure": 1,
+ "bidfloor": 0.01,
+ "bidfloorcur": "USD",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "env": "iqzonex-stage",
+ "pid": "3163e2c9e034770c0daaa98c7613b573"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "UA",
+ "ip": "123.3.4.123"
+ },
+ "regs": {
+ "ext": {
+ "gdpr": 0
+ }
+ },
+ "user": {
+ "id": "userid"
+ },
+ "site": {
+ "id": "id",
+ "domain": "test,com",
+ "cat": [
+ "IAB12"
+ ],
+ "publisher": {
+ "id": "pubid"
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 403,
+ "body": "Access is denied"
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 403. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": []
+}
diff --git a/adapters/iqx/params_test.go b/adapters/iqx/params_test.go
new file mode 100644
index 00000000000..94bfb1d0926
--- /dev/null
+++ b/adapters/iqx/params_test.go
@@ -0,0 +1,53 @@
+package iqx
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+var validParams = []string{
+ `{"env":"iqzonex-stage", "pid":"123456"}`,
+}
+
+func TestValidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, validParam := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderIQX, json.RawMessage(validParam)); err != nil {
+ t.Errorf("Schema rejected iqzonex params: %s", validParam)
+ }
+ }
+}
+
+var invalidParams = []string{
+ ``,
+ `null`,
+ `true`,
+ `5`,
+ `[]`,
+ `{}`,
+ `{"some": "param"}`,
+ `{"env":"iqzonex-stage"}`,
+ `{"pid":"1234"}`,
+ `{"othervalue":"Lorem ipsum"}`,
+ `{"env":"iqzonex-stage", pid:""}`,
+ `{"env":"", pid:"1234"}`,
+}
+
+func TestInvalidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, invalidParam := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderIQX, 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 29e16bb2904..d6b4400cd05 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -95,6 +95,7 @@ import (
"github.com/prebid/prebid-server/adapters/inmobi"
"github.com/prebid/prebid-server/adapters/interactiveoffers"
"github.com/prebid/prebid-server/adapters/invibes"
+ "github.com/prebid/prebid-server/adapters/iqx"
"github.com/prebid/prebid-server/adapters/iqzone"
"github.com/prebid/prebid-server/adapters/ix"
"github.com/prebid/prebid-server/adapters/jixie"
@@ -289,6 +290,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderInMobi: inmobi.Builder,
openrtb_ext.BidderInteractiveoffers: interactiveoffers.Builder,
openrtb_ext.BidderInvibes: invibes.Builder,
+ openrtb_ext.BidderIQX: iqx.Builder,
openrtb_ext.BidderIQZone: iqzone.Builder,
openrtb_ext.BidderIx: ix.Builder,
openrtb_ext.BidderJixie: jixie.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 709c3aa3cdd..ae0f7b6c82a 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -114,6 +114,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderInMobi,
BidderInteractiveoffers,
BidderInvibes,
+ BidderIQX,
BidderIQZone,
BidderIx,
BidderJixie,
@@ -393,6 +394,7 @@ const (
BidderInMobi BidderName = "inmobi"
BidderInteractiveoffers BidderName = "interactiveoffers"
BidderInvibes BidderName = "invibes"
+ BidderIQX BidderName = "iqx"
BidderIQZone BidderName = "iqzone"
BidderIx BidderName = "ix"
BidderJixie BidderName = "jixie"
diff --git a/openrtb_ext/imp_iqx.go b/openrtb_ext/imp_iqx.go
new file mode 100644
index 00000000000..0b0358b67e1
--- /dev/null
+++ b/openrtb_ext/imp_iqx.go
@@ -0,0 +1,6 @@
+package openrtb_ext
+
+type ExtIQX struct {
+ Env string `json:"env"`
+ Pid string `json:"pid"`
+}
diff --git a/static/bidder-info/iqx.yaml b/static/bidder-info/iqx.yaml
new file mode 100644
index 00000000000..ab10ad96289
--- /dev/null
+++ b/static/bidder-info/iqx.yaml
@@ -0,0 +1,19 @@
+endpoint: "http://rtb.iqzone.com?pid={{.SourceId}}&host={{.Host}}&pbs=1"
+maintainer:
+ email: "it@iqzone.com"
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
+ - native
+ site:
+ mediaTypes:
+ - banner
+ - video
+ - native
+userSync:
+ # IQX supports user syncing, but requires configuration by the host. contact this
+ # bidder directly at the email address in this file to ask about enabling user sync.
+ supports:
+ - redirect
\ No newline at end of file
diff --git a/static/bidder-params/iqx.json b/static/bidder-params/iqx.json
new file mode 100644
index 00000000000..447c92beeb8
--- /dev/null
+++ b/static/bidder-params/iqx.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "IQX Adapter Params",
+ "description": "A schema which validates params accepted by the iqzonex adapter",
+ "type": "object",
+ "properties": {
+ "env": {
+ "type": "string",
+ "description": "IQX environment",
+ "minLength": 1
+ },
+ "pid": {
+ "type": "string",
+ "description": "Unique placement ID",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "env",
+ "pid"
+ ]
+}
From e8d93ccbc4a6c391176bbd6b1696d920b1aca840 Mon Sep 17 00:00:00 2001
From: Ahmet Faruk Karakus <65093478+ahmetfaruk59@users.noreply.github.com>
Date: Thu, 19 Oct 2023 15:23:38 +0300
Subject: [PATCH 27/34] HuaweiAds: Fixing the fill rate issue (#3219)
---
adapters/huaweiads/huaweiads.go | 12 +++++++++++-
.../huaweiadstest/exemplary/nativeIncludeVideo.json | 2 ++
.../huaweiadstest/exemplary/nativeSingleImage.json | 2 ++
.../huaweiadstest/exemplary/nativeThreeImage.json | 2 ++
.../exemplary/nativeThreeImageIncludeIcon.json | 2 ++
.../supplemental/bad_response_not_native.json | 4 +++-
6 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/adapters/huaweiads/huaweiads.go b/adapters/huaweiads/huaweiads.go
index 2b7c3c2548d..d156c2f750f 100644
--- a/adapters/huaweiads/huaweiads.go
+++ b/adapters/huaweiads/huaweiads.go
@@ -536,7 +536,8 @@ func getNativeFormat(adslot30 *adslot30, openRTBImp *openrtb2.Imp) error {
// only compute the main image number, type = native1.ImageAssetTypeMain
var numMainImage = 0
var numVideo = 0
-
+ var width int64
+ var height int64
for _, asset := range nativePayload.Assets {
// Only one of the {title,img,video,data} objects should be present in each object.
if asset.Video != nil {
@@ -547,10 +548,19 @@ func getNativeFormat(adslot30 *adslot30, openRTBImp *openrtb2.Imp) error {
if asset.Img != nil {
if asset.Img.Type == native1.ImageAssetTypeMain {
numMainImage++
+ if asset.Img.H != 0 && asset.Img.W != 0 {
+ width = asset.Img.W
+ height = asset.Img.H
+ } else if asset.Img.WMin != 0 && asset.Img.HMin != 0 {
+ width = asset.Img.WMin
+ height = asset.Img.HMin
+ }
}
continue
}
}
+ adslot30.W = width
+ adslot30.H = height
var detailedCreativeTypeList = make([]string, 0, 2)
if numVideo >= 1 {
diff --git a/adapters/huaweiads/huaweiadstest/exemplary/nativeIncludeVideo.json b/adapters/huaweiads/huaweiadstest/exemplary/nativeIncludeVideo.json
index 24aad066b3d..673d6a39a99 100644
--- a/adapters/huaweiads/huaweiadstest/exemplary/nativeIncludeVideo.json
+++ b/adapters/huaweiads/huaweiadstest/exemplary/nativeIncludeVideo.json
@@ -95,6 +95,8 @@
"detailedCreativeTypeList": [
"903"
],
+ "h": 200,
+ "w": 200,
"test": 1
}
],
diff --git a/adapters/huaweiads/huaweiadstest/exemplary/nativeSingleImage.json b/adapters/huaweiads/huaweiadstest/exemplary/nativeSingleImage.json
index 8e86675b4a6..d296010cc77 100644
--- a/adapters/huaweiads/huaweiadstest/exemplary/nativeSingleImage.json
+++ b/adapters/huaweiads/huaweiadstest/exemplary/nativeSingleImage.json
@@ -93,6 +93,8 @@
"detailedCreativeTypeList": [
"901"
],
+ "h": 200,
+ "w": 200,
"test": 1
}
],
diff --git a/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImage.json b/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImage.json
index c29b2352d59..16313a5588a 100644
--- a/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImage.json
+++ b/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImage.json
@@ -92,6 +92,8 @@
"detailedCreativeTypeList": [
"904"
],
+ "h": 200,
+ "w": 200,
"test": 1
}
],
diff --git a/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImageIncludeIcon.json b/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImageIncludeIcon.json
index 5d3af50621a..6122af732c2 100644
--- a/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImageIncludeIcon.json
+++ b/adapters/huaweiads/huaweiadstest/exemplary/nativeThreeImageIncludeIcon.json
@@ -93,6 +93,8 @@
"detailedCreativeTypeList": [
"904"
],
+ "h": 200,
+ "w": 200,
"test": 1
}
],
diff --git a/adapters/huaweiads/huaweiadstest/supplemental/bad_response_not_native.json b/adapters/huaweiads/huaweiadstest/supplemental/bad_response_not_native.json
index 1466737008f..c38bc9f69b9 100644
--- a/adapters/huaweiads/huaweiadstest/supplemental/bad_response_not_native.json
+++ b/adapters/huaweiads/huaweiadstest/supplemental/bad_response_not_native.json
@@ -93,7 +93,9 @@
"test": 1,
"detailedCreativeTypeList": [
"903"
- ]
+ ],
+ "h": 200,
+ "w": 200
}
],
"device": {
From 34ddf1a1adc46d88023d15a4b7b684921fdcc3c4 Mon Sep 17 00:00:00 2001
From: kmdevops <126434358+kmdevops@users.noreply.github.com>
Date: Thu, 19 Oct 2023 14:29:49 +0200
Subject: [PATCH 28/34] DXKulture adapter (#3176)
co-authored: @kmdevops
---
adapters/dxkulture/dxkulture.go | 170 ++++++++++++++++++
adapters/dxkulture/dxkulture_test.go | 17 ++
.../dxkulturetest/exemplary/banner.json | 144 +++++++++++++++
.../exemplary/empty-site-domain-ref.json | 142 +++++++++++++++
.../dxkulturetest/exemplary/ipv6.json | 142 +++++++++++++++
.../exemplary/video-test-request.json | 154 ++++++++++++++++
.../dxkulturetest/exemplary/video.json | 152 ++++++++++++++++
.../supplemental/invalid-imp-ext-bidder.json | 40 +++++
.../supplemental/invalid-imp-ext.json | 38 ++++
.../supplemental/invalid-response.json | 113 ++++++++++++
.../dxkulturetest/supplemental/no-mtype.json | 142 +++++++++++++++
.../supplemental/status-code-bad-request.json | 112 ++++++++++++
.../supplemental/status-code-no-content.json | 108 +++++++++++
.../supplemental/status-code-other-error.json | 112 ++++++++++++
adapters/dxkulture/params_test.go | 53 ++++++
exchange/adapter_builders.go | 2 +
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_dxkulture.go | 7 +
static/bidder-info/dxkulture.yaml | 16 ++
static/bidder-params/dxkulture.json | 20 +++
20 files changed, 1686 insertions(+)
create mode 100644 adapters/dxkulture/dxkulture.go
create mode 100644 adapters/dxkulture/dxkulture_test.go
create mode 100644 adapters/dxkulture/dxkulturetest/exemplary/banner.json
create mode 100644 adapters/dxkulture/dxkulturetest/exemplary/empty-site-domain-ref.json
create mode 100644 adapters/dxkulture/dxkulturetest/exemplary/ipv6.json
create mode 100644 adapters/dxkulture/dxkulturetest/exemplary/video-test-request.json
create mode 100644 adapters/dxkulture/dxkulturetest/exemplary/video.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext-bidder.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/invalid-response.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/no-mtype.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/status-code-bad-request.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/status-code-no-content.json
create mode 100644 adapters/dxkulture/dxkulturetest/supplemental/status-code-other-error.json
create mode 100644 adapters/dxkulture/params_test.go
create mode 100644 openrtb_ext/imp_dxkulture.go
create mode 100644 static/bidder-info/dxkulture.yaml
create mode 100644 static/bidder-params/dxkulture.json
diff --git a/adapters/dxkulture/dxkulture.go b/adapters/dxkulture/dxkulture.go
new file mode 100644
index 00000000000..5347c71a303
--- /dev/null
+++ b/adapters/dxkulture/dxkulture.go
@@ -0,0 +1,170 @@
+package dxkulture
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/openrtb_ext"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+)
+
+var markupTypeToBidType = map[openrtb2.MarkupType]openrtb_ext.BidType{
+ openrtb2.MarkupBanner: openrtb_ext.BidTypeBanner,
+ openrtb2.MarkupVideo: openrtb_ext.BidTypeVideo,
+}
+
+type adapter struct {
+ endpoint string
+}
+
+// Builder builds a new instance of the DXKulture adapter for the given bidder with the given config.
+func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
+ bidder := &adapter{
+ endpoint: config.Endpoint,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ impressions := request.Imp
+
+ adapterRequests := make([]*adapters.RequestData, 0, len(impressions))
+ var errs []error
+
+ for _, impression := range impressions {
+ impExt, err := parseExt(&impression)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+
+ request.Imp = []openrtb2.Imp{impression}
+ body, err := json.Marshal(request)
+ if err != nil {
+ errs = append(errs, err)
+ continue
+ }
+
+ if request.Test == 1 {
+ impExt.PublisherId = "test"
+ }
+
+ params := url.Values{}
+ params.Add("publisher_id", impExt.PublisherId)
+ params.Add("placement_id", impExt.PlacementId)
+
+ adapterRequests = append(adapterRequests, &adapters.RequestData{
+ Method: http.MethodPost,
+ Uri: a.endpoint + "?" + params.Encode(),
+ Body: body,
+ Headers: getHeaders(request),
+ })
+ }
+
+ request.Imp = impressions
+ return adapterRequests, errs
+}
+
+func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(response) {
+ return nil, nil
+ }
+ if err := adapters.CheckResponseStatusCodeForErrors(response); err != nil {
+ return nil, []error{err}
+ }
+
+ var ortbResponse openrtb2.BidResponse
+ err := json.Unmarshal(response.Body, &ortbResponse)
+ if err != nil {
+ return nil, []error{&errortypes.BadServerResponse{
+ Message: "Bad Server Response",
+ }}
+ }
+
+ var bidErrors []error
+
+ bidderResponse := adapters.NewBidderResponseWithBidsCapacity(1)
+ for _, seatBid := range ortbResponse.SeatBid {
+ for i := range seatBid.Bid {
+ bid := seatBid.Bid[i]
+ bidType, err := getBidType(&bid)
+ if err != nil {
+ bidErrors = append(bidErrors, err)
+ continue
+ }
+
+ bidderResponse.Bids = append(bidderResponse.Bids, &adapters.TypedBid{
+ Bid: &bid,
+ BidType: bidType,
+ })
+ }
+ }
+
+ return bidderResponse, bidErrors
+}
+
+func getBidType(bid *openrtb2.Bid) (openrtb_ext.BidType, error) {
+ if bidType, ok := markupTypeToBidType[bid.MType]; ok {
+ return bidType, nil
+ }
+ return "", &errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Unsupported MType %d", bid.MType),
+ }
+}
+
+func parseExt(imp *openrtb2.Imp) (*openrtb_ext.ExtImpDXKulture, error) {
+ var bidderExt adapters.ExtImpBidder
+
+ if err := json.Unmarshal(imp.Ext, &bidderExt); err != nil {
+ return nil, &errortypes.BadInput{
+ Message: fmt.Sprintf("Ignoring imp id=%s, error while decoding extImpBidder, err: %s", imp.ID, err),
+ }
+ }
+
+ impExt := openrtb_ext.ExtImpDXKulture{}
+ err := json.Unmarshal(bidderExt.Bidder, &impExt)
+ if err != nil {
+ return nil, &errortypes.BadInput{
+ Message: fmt.Sprintf("Ignoring imp id=%s, error while decoding impExt, err: %s", imp.ID, err),
+ }
+ }
+
+ return &impExt, nil
+}
+
+func getHeaders(request *openrtb2.BidRequest) http.Header {
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+ headers.Add("Accept", "application/json")
+ headers.Add("X-Openrtb-Version", "2.5")
+
+ if request.Site != nil {
+ if request.Site.Ref != "" {
+ headers.Set("Referer", request.Site.Ref)
+ }
+ if request.Site.Domain != "" {
+ headers.Add("Origin", request.Site.Domain)
+ }
+ }
+
+ if request.Device != nil {
+ if len(request.Device.UA) > 0 {
+ headers.Add("User-Agent", request.Device.UA)
+ }
+
+ if len(request.Device.IPv6) > 0 {
+ headers.Add("X-Forwarded-For", request.Device.IPv6)
+ }
+
+ if len(request.Device.IP) > 0 {
+ headers.Add("X-Forwarded-For", request.Device.IP)
+ }
+ }
+ return headers
+}
diff --git a/adapters/dxkulture/dxkulture_test.go b/adapters/dxkulture/dxkulture_test.go
new file mode 100644
index 00000000000..9b2da4f27ab
--- /dev/null
+++ b/adapters/dxkulture/dxkulture_test.go
@@ -0,0 +1,17 @@
+package dxkulture
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/config"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder("dxkulture", config.Adapter{Endpoint: "https://ads.kulture.media/pbs"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+ adapterstest.RunJSONBidderTest(t, "dxkulturetest", bidder)
+}
diff --git a/adapters/dxkulture/dxkulturetest/exemplary/banner.json b/adapters/dxkulture/dxkulturetest/exemplary/banner.json
new file mode 100644
index 00000000000..3b84881fc67
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/exemplary/banner.json
@@ -0,0 +1,144 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 1
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 1
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/exemplary/empty-site-domain-ref.json b/adapters/dxkulture/dxkulturetest/exemplary/empty-site-domain-ref.json
new file mode 100644
index 00000000000..630467ce96b
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/exemplary/empty-site-domain-ref.json
@@ -0,0 +1,142 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "page": "http://site.com/page"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "page": "http://site.com/page"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/exemplary/ipv6.json b/adapters/dxkulture/dxkulturetest/exemplary/ipv6.json
new file mode 100644
index 00000000000..58f7e7fdf2c
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/exemplary/ipv6.json
@@ -0,0 +1,142 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ipv6": "2001:0000:130F:0000:0000:09C0:876A:130B"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "page": "http://site.com/page"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "2001:0000:130F:0000:0000:09C0:876A:130B"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ipv6": "2001:0000:130F:0000:0000:09C0:876A:130B"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "page": "http://site.com/page"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/exemplary/video-test-request.json b/adapters/dxkulture/dxkulturetest/exemplary/video-test-request.json
new file mode 100644
index 00000000000..6a0746ad258
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/exemplary/video-test-request.json
@@ -0,0 +1,154 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "test": 1,
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=test",
+ "body": {
+ "id": "test-request-id",
+ "test": 1,
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/exemplary/video.json b/adapters/dxkulture/dxkulturetest/exemplary/video.json
new file mode 100644
index 00000000000..017dd5ea2bc
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/exemplary/video.json
@@ -0,0 +1,152 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": "",
+ "mtype": 2
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext-bidder.json b/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext-bidder.json
new file mode 100644
index 00000000000..ae30b327030
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext-bidder.json
@@ -0,0 +1,40 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": "not_json"
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "Ignoring imp id=test-imp-id, error while decoding impExt, err: json: cannot unmarshal string into Go value of type openrtb_ext.ExtImpDXKulture",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext.json b/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext.json
new file mode 100644
index 00000000000..2587dc216d2
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/invalid-imp-ext.json
@@ -0,0 +1,38 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": "not_json"
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "Ignoring imp id=test-imp-id, error while decoding extImpBidder, err: json: cannot unmarshal string into Go value of type adapters.ExtImpBidder",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/invalid-response.json b/adapters/dxkulture/dxkulturetest/supplemental/invalid-response.json
new file mode 100644
index 00000000000..8fff1bb0375
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/invalid-response.json
@@ -0,0 +1,113 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": "body"
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Bad Server Response",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/no-mtype.json b/adapters/dxkulture/dxkulturetest/supplemental/no-mtype.json
new file mode 100644
index 00000000000..a56200fad50
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/no-mtype.json
@@ -0,0 +1,142 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "cur": "USD",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "43271b2d-41c0-4093-8ba1-2105d9658e80",
+ "crid": "16329",
+ "adomain": [
+ "adomain.com"
+ ],
+ "price": 3,
+ "impid": "test-imp-id",
+ "adid": "2422",
+ "adm": ""
+ }
+ ],
+ "seat": "dxkulture"
+ }
+ ],
+ "bidid": "test-request-id",
+ "id": "test-request-id"
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unsupported MType 0",
+ "comparison": "literal"
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": []
+ }
+ ]
+
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/status-code-bad-request.json b/adapters/dxkulture/dxkulturetest/supplemental/status-code-bad-request.json
new file mode 100644
index 00000000000..f0f2ce2c47b
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/status-code-bad-request.json
@@ -0,0 +1,112 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 400
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/status-code-no-content.json b/adapters/dxkulture/dxkulturetest/supplemental/status-code-no-content.json
new file mode 100644
index 00000000000..43c53f3d64c
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/status-code-no-content.json
@@ -0,0 +1,108 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 204
+ }
+ }
+ ],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": []
+}
diff --git a/adapters/dxkulture/dxkulturetest/supplemental/status-code-other-error.json b/adapters/dxkulture/dxkulturetest/supplemental/status-code-other-error.json
new file mode 100644
index 00000000000..3e1b0b33c1e
--- /dev/null
+++ b/adapters/dxkulture/dxkulturetest/supplemental/status-code-other-error.json
@@ -0,0 +1,112 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "method": "GET",
+ "headers": {
+ "Referer": [
+ "http://site.com/ref"
+ ],
+ "Origin": [
+ "site.com"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Content-Type": [
+ "application/json;charset=utf-8"
+ ],
+ "User-Agent": [
+ "user-agent"
+ ],
+ "X-Forwarded-For": [
+ "1.2.3.4"
+ ],
+ "X-Openrtb-Version": [
+ "2.5"
+ ]
+ },
+ "uri": "https://ads.kulture.media/pbs?placement_id=placement123&publisher_id=pub123",
+ "body": {
+ "id": "test-request-id",
+ "user": {
+ "buyeruid": "userId",
+ "yob": 1990
+ },
+ "device": {
+ "ua": "user-agent",
+ "ip": "1.2.3.4"
+ },
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "video": {
+ "w": 1920,
+ "h": 1080,
+ "mimes": [
+ "video/x-flv",
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": "pub123",
+ "placementId": "placement123"
+ }
+ }
+ }
+ ],
+ "site": {
+ "domain": "site.com",
+ "page": "http://site.com/page",
+ "ref": "http://site.com/ref"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 505
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 505. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/dxkulture/params_test.go b/adapters/dxkulture/params_test.go
new file mode 100644
index 00000000000..838d092df8f
--- /dev/null
+++ b/adapters/dxkulture/params_test.go
@@ -0,0 +1,53 @@
+package dxkulture
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+// This file actually intends to test static/bidder-params/dxkulture.json
+//
+// These also validate the format of the external API: request.imp[i].ext.prebid.bidder.dxkulture
+
+// TestValidParams makes sure that the dxkulture 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 {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, validParam := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderDXKulture, json.RawMessage(validParam)); err != nil {
+ t.Errorf("Schema rejected dxkulture params: %s", validParam)
+ }
+ }
+}
+
+// TestInvalidParams makes sure that the dxkulture 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 {
+ t.Fatalf("Failed to fetch the json-schemas. %v", err)
+ }
+
+ for _, invalidParam := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderDXKulture, json.RawMessage(invalidParam)); err == nil {
+ t.Errorf("Schema allowed unexpected params: %s", invalidParam)
+ }
+ }
+}
+
+var validParams = []string{
+ `{"publisherId": "pub", "placementId": "plac"}`,
+ `{"publisherId": "pub", "placementId": "plac", "a":1}`,
+}
+
+var invalidParams = []string{
+ `{"publisherId": "pub"}`,
+ `{"placementId": "plac"}`,
+ //malformed
+ `{"ub", "placementId": "plac"}`,
+ `{}`,
+}
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index d6b4400cd05..6ab0dccfc7c 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -73,6 +73,7 @@ import (
"github.com/prebid/prebid-server/adapters/deepintent"
"github.com/prebid/prebid-server/adapters/dianomi"
"github.com/prebid/prebid-server/adapters/dmx"
+ "github.com/prebid/prebid-server/adapters/dxkulture"
evolution "github.com/prebid/prebid-server/adapters/e_volution"
"github.com/prebid/prebid-server/adapters/edge226"
"github.com/prebid/prebid-server/adapters/emtv"
@@ -266,6 +267,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderDianomi: dianomi.Builder,
openrtb_ext.BidderEdge226: edge226.Builder,
openrtb_ext.BidderDmx: dmx.Builder,
+ openrtb_ext.BidderDXKulture: dxkulture.Builder,
openrtb_ext.BidderEmtv: emtv.Builder,
openrtb_ext.BidderEmxDigital: cadentaperturemx.Builder,
openrtb_ext.BidderEPlanning: eplanning.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index ae0f7b6c82a..22a915b769f 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -90,6 +90,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderDianomi,
BidderEdge226,
BidderDmx,
+ BidderDXKulture,
BidderEmtv,
BidderEmxDigital,
BidderEPlanning,
@@ -370,6 +371,7 @@ const (
BidderDianomi BidderName = "dianomi"
BidderEdge226 BidderName = "edge226"
BidderDmx BidderName = "dmx"
+ BidderDXKulture BidderName = "dxkulture"
BidderEmtv BidderName = "emtv"
BidderEmxDigital BidderName = "emx_digital"
BidderEPlanning BidderName = "eplanning"
diff --git a/openrtb_ext/imp_dxkulture.go b/openrtb_ext/imp_dxkulture.go
new file mode 100644
index 00000000000..4b507c55248
--- /dev/null
+++ b/openrtb_ext/imp_dxkulture.go
@@ -0,0 +1,7 @@
+package openrtb_ext
+
+// ExtImpDXKulture defines the contract for bidrequest.imp[i].ext.prebid.bidder.dxkulture
+type ExtImpDXKulture struct {
+ PublisherId string `json:"publisherId"`
+ PlacementId string `json:"placementId"`
+}
diff --git a/static/bidder-info/dxkulture.yaml b/static/bidder-info/dxkulture.yaml
new file mode 100644
index 00000000000..1af72e9fc33
--- /dev/null
+++ b/static/bidder-info/dxkulture.yaml
@@ -0,0 +1,16 @@
+endpoint: "https://ads.kulture.media/pbs"
+maintainer:
+ email: "devops@kulture.media"
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
+ site:
+ mediaTypes:
+ - banner
+ - video
+userSync:
+ redirect:
+ url: "https://ads.kulture.media/usync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&cb={{.RedirectURL}}"
+ userMacro: "$UID"
diff --git a/static/bidder-params/dxkulture.json b/static/bidder-params/dxkulture.json
new file mode 100644
index 00000000000..858eefd22e4
--- /dev/null
+++ b/static/bidder-params/dxkulture.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "DXKulture Adapter Params",
+ "description": "A schema which validates params accepted by the DXKulture adapter",
+ "type": "object",
+ "properties": {
+ "publisherId": {
+ "type": "string",
+ "description": "The publisher id"
+ },
+ "placementId": {
+ "type": "string",
+ "description": "The placement id"
+ }
+ },
+ "required": [
+ "publisherId",
+ "placementId"
+ ]
+}
From 6f630fd80915492fba577be7868f1eaa8b0cf51a Mon Sep 17 00:00:00 2001
From: Brian Sardo <1168933+bsardo@users.noreply.github.com>
Date: Thu, 19 Oct 2023 13:43:00 -0400
Subject: [PATCH 29/34] JSON Serialization: Change Libraries (#3225)
---
account/account.go | 9 +-
adservertargeting/adservertargeting_test.go | 7 +-
adservertargeting/reqcache.go | 5 +-
adservertargeting/respdataprocessor.go | 3 +-
analytics/filesystem/file_module.go | 14 +-
analytics/pubstack/helpers/json.go | 12 +-
config/config.go | 3 +-
currency/rate_converter.go | 4 +-
currency/rates_test.go | 27 ++--
endpoints/cookie_sync.go | 3 +-
endpoints/cookie_sync_test.go | 6 +-
endpoints/currency_rates.go | 4 +-
endpoints/events/vtrack.go | 7 +-
endpoints/events/vtrack_test.go | 5 +-
endpoints/info/bidders.go | 11 +-
endpoints/info/bidders_detail.go | 5 +-
endpoints/openrtb2/amp_auction.go | 11 +-
endpoints/openrtb2/amp_auction_test.go | 61 ++++----
endpoints/openrtb2/auction.go | 33 ++--
endpoints/openrtb2/auction_test.go | 43 +++---
.../invalid-stored/bad_incoming_1.json | 2 +-
.../invalid-stored/bad_incoming_imp.json | 2 +-
.../invalid-stored/bad_stored_imp.json | 2 +-
.../invalid-stored/bad_stored_req.json | 2 +-
.../invalid-whole/interstital-bad-perc.json | 2 +-
.../invalid-whole/invalid-source.json | 2 +-
.../invalid-whole/malformed-bid-request.json | 2 +-
.../invalid-whole/regs-ext-malformed.json | 2 +-
.../invalid-whole/user-ext-consent-int.json | 2 +-
.../user-gdpr-consent-invalid.json | 2 +-
endpoints/openrtb2/test_utils.go | 15 +-
endpoints/openrtb2/video_auction.go | 18 +--
endpoints/openrtb2/video_auction_test.go | 21 +--
endpoints/setuid_test.go | 4 +-
endpoints/version.go | 3 +-
errortypes/code.go | 2 +
errortypes/errortypes.go | 34 +++++
exchange/auction.go | 10 +-
exchange/auction_test.go | 10 +-
exchange/bidder.go | 9 +-
exchange/bidder_test.go | 7 +-
exchange/events.go | 4 +-
exchange/exchange.go | 17 ++-
exchange/exchange_test.go | 69 ++++-----
exchange/targeting_test.go | 5 +-
exchange/utils.go | 39 ++---
exchange/utils_test.go | 53 +++----
firstpartydata/first_party_data.go | 7 +-
firstpartydata/first_party_data_test.go | 133 +++++++++--------
floors/floors_test.go | 3 +-
floors/rule_test.go | 2 +-
gdpr/full_enforcement_test.go | 4 +-
gdpr/vendorlist-fetching_test.go | 4 +-
go.mod | 3 +
go.sum | 3 +
hooks/hookanalytics/analytics_test.go | 4 +-
hooks/hookexecution/enricher.go | 5 +-
hooks/hookexecution/enricher_test.go | 5 +-
hooks/hookexecution/test_utils.go | 5 +-
hooks/plan_test.go | 18 +--
modules/modules.go | 3 +-
modules/modules_test.go | 2 +-
modules/prebid/ortb2blocking/config.go | 5 +-
modules/prebid/ortb2blocking/module_test.go | 2 +-
openrtb_ext/convert_down_test.go | 99 ++++++------
openrtb_ext/convert_up_test.go | 12 +-
openrtb_ext/deal_tier.go | 5 +-
openrtb_ext/deal_tier_test.go | 21 +--
openrtb_ext/device_test.go | 25 ++--
openrtb_ext/imp_appnexus.go | 6 +-
openrtb_ext/imp_appnexus_test.go | 6 +-
openrtb_ext/request.go | 5 +-
openrtb_ext/request_test.go | 3 +-
openrtb_ext/request_wrapper.go | 141 ++++++++++--------
openrtb_ext/request_wrapper_test.go | 25 ++--
openrtb_ext/site_test.go | 18 +--
ortb/default_test.go | 9 +-
prebid_cache_client/client_test.go | 3 +-
privacy/scrubber.go | 9 +-
router/router.go | 5 +-
router/router_test.go | 3 +-
schain/schainwriter.go | 5 +-
schain/schainwriter_test.go | 3 +-
.../backends/file_fetcher/fetcher.go | 3 +-
.../backends/file_fetcher/fetcher_test.go | 7 +-
.../backends/http_fetcher/fetcher.go | 10 +-
.../backends/http_fetcher/fetcher_test.go | 7 +-
stored_requests/events/api/api.go | 6 +-
stored_requests/events/http/http.go | 3 +-
stored_requests/events/http/http_test.go | 6 +-
stored_responses/stored_responses.go | 3 +-
usersync/cookie.go | 6 +-
usersync/decoder.go | 8 +-
usersync/encoder.go | 5 +-
util/jsonutil/jsonutil.go | 113 +++++++++++++-
util/jsonutil/jsonutil_test.go | 61 +++++++-
util/jsonutil/stringInt_test.go | 11 +-
version/xprebidheader_test.go | 6 +-
98 files changed, 862 insertions(+), 617 deletions(-)
diff --git a/account/account.go b/account/account.go
index b4d0c334d6b..1f5a3feee14 100644
--- a/account/account.go
+++ b/account/account.go
@@ -2,7 +2,6 @@ package account
import (
"context"
- "encoding/json"
"fmt"
"github.com/prebid/go-gdpr/consentconstants"
@@ -13,6 +12,7 @@ import (
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/stored_requests"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// GetAccount looks up the config.Account object referenced by the given accountID, with access rules applied
@@ -44,17 +44,12 @@ func GetAccount(ctx context.Context, cfg *config.Configuration, fetcher stored_r
} else {
// accountID resolved to a valid account, merge with AccountDefaults for a complete config
account = &config.Account{}
- err := json.Unmarshal(accountJSON, account)
- if _, ok := err.(*json.UnmarshalTypeError); ok {
+ if err := jsonutil.UnmarshalValid(accountJSON, account); err != nil {
return nil, []error{&errortypes.MalformedAcct{
Message: fmt.Sprintf("The prebid-server account config for account id \"%s\" is malformed. Please reach out to the prebid server host.", accountID),
}}
}
- if err != nil {
- errs = append(errs, err)
- return nil, errs
- }
// Fill in ID if needed, so it can be left out of account definition
if len(account.ID) == 0 {
account.ID = accountID
diff --git a/adservertargeting/adservertargeting_test.go b/adservertargeting/adservertargeting_test.go
index 4a651fdd2be..0da3635d9b7 100644
--- a/adservertargeting/adservertargeting_test.go
+++ b/adservertargeting/adservertargeting_test.go
@@ -8,6 +8,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -42,7 +43,7 @@ func TestExtractAdServerTargeting(t *testing.T) {
p := "https://www.test-url.com?ampkey=testAmpKey&data-override-height=400"
u, _ := url.Parse(p)
params := u.Query()
- reqBytes, err := json.Marshal(r)
+ reqBytes, err := jsonutil.Marshal(r)
assert.NoError(t, err, "unexpected req marshal error")
res, warnings := collect(rw, reqBytes, params)
@@ -248,7 +249,7 @@ func TestProcessAdServerTargetingFull(t *testing.T) {
bidResponseExt := &openrtb_ext.ExtBidResponse{Warnings: make(map[openrtb_ext.BidderName][]openrtb_ext.ExtBidderMessage)}
- reqBytes, err := json.Marshal(r)
+ reqBytes, err := jsonutil.Marshal(r)
assert.NoError(t, err, "unexpected req marshal error")
targetingKeyLen := 0
resResp := Apply(rw, reqBytes, resp, params, bidResponseExt, &targetingKeyLen)
@@ -331,7 +332,7 @@ func TestProcessAdServerTargetingWarnings(t *testing.T) {
bidResponseExt := &openrtb_ext.ExtBidResponse{Warnings: make(map[openrtb_ext.BidderName][]openrtb_ext.ExtBidderMessage)}
- reqBytes, err := json.Marshal(r)
+ reqBytes, err := jsonutil.Marshal(r)
assert.NoError(t, err, "unexpected req marshal error")
resResp := Apply(rw, reqBytes, resp, params, bidResponseExt, nil)
assert.Len(t, resResp.SeatBid, 2, "Incorrect response: seat bid number")
diff --git a/adservertargeting/reqcache.go b/adservertargeting/reqcache.go
index cb2edac9e4a..b8b147af84e 100644
--- a/adservertargeting/reqcache.go
+++ b/adservertargeting/reqcache.go
@@ -5,6 +5,7 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type requestCache struct {
@@ -24,7 +25,7 @@ func (reqImpCache *requestCache) GetImpsData() ([]json.RawMessage, error) {
}
var impsData []json.RawMessage
- err = json.Unmarshal(imps, &impsData)
+ err = jsonutil.Unmarshal(imps, &impsData)
if err != nil {
return nil, err
}
@@ -48,7 +49,7 @@ func (bidsCache *bidsCache) GetBid(bidderName, bidId string, bid openrtb2.Bid) (
}
_, bidExists := bidsCache.bids[bidderName][bidId]
if !bidExists {
- bidBytes, err := json.Marshal(bid)
+ bidBytes, err := jsonutil.Marshal(bid)
if err != nil {
return nil, err
}
diff --git a/adservertargeting/respdataprocessor.go b/adservertargeting/respdataprocessor.go
index 94a391d08bb..649f802f6e2 100644
--- a/adservertargeting/respdataprocessor.go
+++ b/adservertargeting/respdataprocessor.go
@@ -8,6 +8,7 @@ import (
"github.com/pkg/errors"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
@@ -79,7 +80,7 @@ func buildBidExt(targetingData map[string]string,
Targeting: targetingDataTruncated,
},
}
- bidExtTargeting, err := json.Marshal(bidExtTargetingData)
+ bidExtTargeting, err := jsonutil.Marshal(bidExtTargetingData)
if err != nil {
warnings = append(warnings, createWarning(err.Error()))
return nil
diff --git a/analytics/filesystem/file_module.go b/analytics/filesystem/file_module.go
index f055e4470b1..24b7be6b599 100644
--- a/analytics/filesystem/file_module.go
+++ b/analytics/filesystem/file_module.go
@@ -2,12 +2,12 @@ package filesystem
import (
"bytes"
- "encoding/json"
"fmt"
"github.com/chasex/glog"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/analytics"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type RequestType string
@@ -120,7 +120,7 @@ func jsonifyAuctionObject(ao *analytics.AuctionObject) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logAuction
}{
@@ -153,7 +153,7 @@ func jsonifyVideoObject(vo *analytics.VideoObject) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logVideo
}{
@@ -178,7 +178,7 @@ func jsonifyCookieSync(cso *analytics.CookieSyncObject) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logUserSync
}{
@@ -205,7 +205,7 @@ func jsonifySetUIDObject(so *analytics.SetUIDObject) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logSetUID
}{
@@ -239,7 +239,7 @@ func jsonifyAmpObject(ao *analytics.AmpObject) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logAMP
}{
@@ -263,7 +263,7 @@ func jsonifyNotificationEventObject(ne *analytics.NotificationEvent) string {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Type RequestType `json:"type"`
*logNotificationEvent
}{
diff --git a/analytics/pubstack/helpers/json.go b/analytics/pubstack/helpers/json.go
index 368c79e3f6a..f56a4c6194b 100644
--- a/analytics/pubstack/helpers/json.go
+++ b/analytics/pubstack/helpers/json.go
@@ -1,11 +1,11 @@
package helpers
import (
- "encoding/json"
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/analytics"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
func JsonifyAuctionObject(ao *analytics.AuctionObject, scope string) ([]byte, error) {
@@ -26,7 +26,7 @@ func JsonifyAuctionObject(ao *analytics.AuctionObject, scope string) ([]byte, er
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Scope string `json:"scope"`
*logAuction
}{
@@ -59,7 +59,7 @@ func JsonifyVideoObject(vo *analytics.VideoObject, scope string) ([]byte, error)
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Scope string `json:"scope"`
*logVideo
}{
@@ -84,7 +84,7 @@ func JsonifyCookieSync(cso *analytics.CookieSyncObject, scope string) ([]byte, e
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Scope string `json:"scope"`
*logUserSync
}{
@@ -111,7 +111,7 @@ func JsonifySetUIDObject(so *analytics.SetUIDObject, scope string) ([]byte, erro
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Scope string `json:"scope"`
*logSetUID
}{
@@ -145,7 +145,7 @@ func JsonifyAmpObject(ao *analytics.AmpObject, scope string) ([]byte, error) {
}
}
- b, err := json.Marshal(&struct {
+ b, err := jsonutil.Marshal(&struct {
Scope string `json:"scope"`
*logAMP
}{
diff --git a/config/config.go b/config/config.go
index cf3591dd564..4bd7f807002 100644
--- a/config/config.go
+++ b/config/config.go
@@ -14,6 +14,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/spf13/viper"
)
@@ -775,7 +776,7 @@ func New(v *viper.Viper, bidderInfos BidderInfos, normalizeBidderName func(strin
// MarshalAccountDefaults compiles AccountDefaults into the JSON format used for merge patch
func (cfg *Configuration) MarshalAccountDefaults() error {
var err error
- if cfg.accountDefaultsJSON, err = json.Marshal(cfg.AccountDefaults); err != nil {
+ if cfg.accountDefaultsJSON, err = jsonutil.Marshal(cfg.AccountDefaults); err != nil {
glog.Warningf("converting %+v to json: %v", cfg.AccountDefaults, err)
}
return err
diff --git a/currency/rate_converter.go b/currency/rate_converter.go
index f28807701ae..cda8d763048 100644
--- a/currency/rate_converter.go
+++ b/currency/rate_converter.go
@@ -1,7 +1,6 @@
package currency
import (
- "encoding/json"
"fmt"
"io"
"net/http"
@@ -10,6 +9,7 @@ import (
"github.com/golang/glog"
"github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/timeutil"
)
@@ -66,7 +66,7 @@ func (rc *RateConverter) fetch() (*Rates, error) {
}
updatedRates := &Rates{}
- err = json.Unmarshal(bytesJSON, updatedRates)
+ err = jsonutil.UnmarshalValid(bytesJSON, updatedRates)
if err != nil {
return nil, err
}
diff --git a/currency/rates_test.go b/currency/rates_test.go
index 23226dce8fb..86c25d14ac0 100644
--- a/currency/rates_test.go
+++ b/currency/rates_test.go
@@ -1,11 +1,12 @@
package currency
import (
- "encoding/json"
"errors"
"testing"
"github.com/stretchr/testify/assert"
+
+ "github.com/prebid/prebid-server/util/jsonutil"
)
func TestUnMarshallRates(t *testing.T) {
@@ -22,7 +23,7 @@ func TestUnMarshallRates(t *testing.T) {
ratesJSON: `malformed`,
expectedRates: Rates{},
expectsError: true,
- expectedError: errors.New("invalid character 'm' looking for beginning of value"),
+ expectedError: errors.New("expect { or n, but found m"),
},
{
desc: "Valid JSON field defining valid conversion object. Expect no error",
@@ -50,7 +51,7 @@ func TestUnMarshallRates(t *testing.T) {
expectedError: nil,
},
{
- desc: "Valid JSON field defines a conversions map with repeated entries, expect error",
+ desc: "Valid JSON field defines a conversions map with repeated entries, last one wins",
ratesJSON: `{
"conversions":{
"USD":{
@@ -58,25 +59,31 @@ func TestUnMarshallRates(t *testing.T) {
"MXN":20.00
},
"USD":{
- "GBP":0.7662523901
- },
+ "GBP":0.4815162342
+ }
}
}`,
- expectedRates: Rates{},
- expectsError: true,
- expectedError: errors.New("invalid character '}' looking for beginning of object key string"),
+ expectedRates: Rates{
+ Conversions: map[string]map[string]float64{
+ "USD": {
+ "GBP": 0.4815162342,
+ },
+ },
+ },
+ expectsError: false,
+ expectedError: nil,
},
}
for _, tc := range testCases {
// Execute:
updatedRates := Rates{}
- err := json.Unmarshal([]byte(tc.ratesJSON), &updatedRates)
+ err := jsonutil.UnmarshalValid([]byte(tc.ratesJSON), &updatedRates)
// Verify:
assert.Equal(t, err != nil, tc.expectsError, tc.desc)
if tc.expectsError {
- assert.Equal(t, err.Error(), tc.expectedError.Error(), tc.desc)
+ assert.Equal(t, tc.expectedError.Error(), err.Error(), tc.desc)
}
assert.Equal(t, tc.expectedRates, updatedRates, tc.desc)
}
diff --git a/endpoints/cookie_sync.go b/endpoints/cookie_sync.go
index 24530efa56a..ff801de988f 100644
--- a/endpoints/cookie_sync.go
+++ b/endpoints/cookie_sync.go
@@ -27,6 +27,7 @@ import (
gppPrivacy "github.com/prebid/prebid-server/privacy/gpp"
"github.com/prebid/prebid-server/stored_requests"
"github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/util/jsonutil"
stringutil "github.com/prebid/prebid-server/util/stringutil"
)
@@ -119,7 +120,7 @@ func (c *cookieSyncEndpoint) parseRequest(r *http.Request) (usersync.Request, ma
}
request := cookieSyncRequest{}
- if err := json.Unmarshal(body, &request); err != nil {
+ if err := jsonutil.UnmarshalValid(body, &request); err != nil {
return usersync.Request{}, macros.UserSyncPrivacy{}, fmt.Errorf("JSON parsing failed: %s", err.Error())
}
diff --git a/endpoints/cookie_sync_test.go b/endpoints/cookie_sync_test.go
index af7819b94b9..1b02357dc5d 100644
--- a/endpoints/cookie_sync_test.go
+++ b/endpoints/cookie_sync_test.go
@@ -190,14 +190,14 @@ func TestCookieSyncHandle(t *testing.T) {
SyncersChosen: []usersync.SyncerChoice{{Bidder: "a", Syncer: &syncer}},
},
expectedStatusCode: 400,
- expectedBody: `JSON parsing failed: invalid character 'm' looking for beginning of value` + "\n",
+ expectedBody: `JSON parsing failed: expect { or n, but found m` + "\n",
setMetricsExpectations: func(m *metrics.MetricsEngineMock) {
m.On("RecordCookieSync", metrics.CookieSyncBadRequest).Once()
},
setAnalyticsExpectations: func(a *MockAnalyticsRunner) {
expected := analytics.CookieSyncObject{
Status: 400,
- Errors: []error{errors.New("JSON parsing failed: invalid character 'm' looking for beginning of value")},
+ Errors: []error{errors.New("JSON parsing failed: expect { or n, but found m")},
BidderStatus: []*analytics.CookieSyncBidder{},
}
a.On("LogCookieSyncObject", &expected).Once()
@@ -805,7 +805,7 @@ func TestCookieSyncParseRequest(t *testing.T) {
givenBody: strings.NewReader(`malformed`),
givenGDPRConfig: config.GDPR{Enabled: true, DefaultValue: "0"},
givenCCPAEnabled: true,
- expectedError: "JSON parsing failed: invalid character 'm' looking for beginning of value",
+ expectedError: "JSON parsing failed: expect { or n, but found m",
},
{
description: "Invalid Type Filter",
diff --git a/endpoints/currency_rates.go b/endpoints/currency_rates.go
index d35cb74cea4..49ae9963cd9 100644
--- a/endpoints/currency_rates.go
+++ b/endpoints/currency_rates.go
@@ -1,12 +1,12 @@
package endpoints
import (
- "encoding/json"
"net/http"
"time"
"github.com/golang/glog"
"github.com/prebid/prebid-server/currency"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// currencyRatesInfo holds currency rates information.
@@ -60,7 +60,7 @@ func NewCurrencyRatesEndpoint(rateConverter rateConverter, fetchingInterval time
currencyRateInfo := newCurrencyRatesInfo(rateConverter, fetchingInterval)
return func(w http.ResponseWriter, _ *http.Request) {
- jsonOutput, err := json.Marshal(currencyRateInfo)
+ jsonOutput, err := jsonutil.Marshal(currencyRateInfo)
if err != nil {
glog.Errorf("/currency/rates Critical error when trying to marshal currencyRateInfo: %v", err)
w.WriteHeader(http.StatusInternalServerError)
diff --git a/endpoints/events/vtrack.go b/endpoints/events/vtrack.go
index e0bf3fd4be8..eeb409e24ae 100644
--- a/endpoints/events/vtrack.go
+++ b/endpoints/events/vtrack.go
@@ -19,6 +19,7 @@ import (
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
const (
@@ -123,7 +124,7 @@ func (v *vtrackEndpoint) Handle(w http.ResponseWriter, r *http.Request, _ httpro
}
}
- d, err := json.Marshal(*cachingResponse)
+ d, err := jsonutil.Marshal(*cachingResponse)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
@@ -187,7 +188,7 @@ func ParseVTrackRequest(httpRequest *http.Request, maxRequestSize int64) (req *B
return req, err
}
- if err := json.Unmarshal(requestJson, req); err != nil {
+ if err := jsonutil.UnmarshalValid(requestJson, req); err != nil {
return req, err
}
@@ -319,7 +320,7 @@ func ModifyVastXmlString(externalUrl, vast, bidid, bidder, accountID string, tim
// ModifyVastXmlJSON modifies BidCacheRequest element Vast XML data
func ModifyVastXmlJSON(externalUrl string, data json.RawMessage, bidid, bidder, accountId string, timestamp int64, integrationType string) json.RawMessage {
var vast string
- if err := json.Unmarshal(data, &vast); err != nil {
+ if err := jsonutil.Unmarshal(data, &vast); err != nil {
// failed to decode json, fall back to string
vast = string(data)
}
diff --git a/endpoints/events/vtrack_test.go b/endpoints/events/vtrack_test.go
index 1e36a9e627f..d950a443afe 100644
--- a/endpoints/events/vtrack_test.go
+++ b/endpoints/events/vtrack_test.go
@@ -16,6 +16,7 @@ import (
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -186,7 +187,7 @@ func TestShouldRespondWithBadRequestWhenBidIdIsMissing(t *testing.T) {
},
}
- reqData, err := json.Marshal(data)
+ reqData, err := jsonutil.Marshal(data)
if err != nil {
t.Fatal(err)
}
@@ -239,7 +240,7 @@ func TestShouldRespondWithBadRequestWhenBidderIsMissing(t *testing.T) {
},
}
- reqData, err := json.Marshal(data)
+ reqData, err := jsonutil.Marshal(data)
if err != nil {
t.Fatal(err)
}
diff --git a/endpoints/info/bidders.go b/endpoints/info/bidders.go
index 9984abe216d..bd6d078b3ba 100644
--- a/endpoints/info/bidders.go
+++ b/endpoints/info/bidders.go
@@ -1,7 +1,6 @@
package info
import (
- "encoding/json"
"net/http"
"sort"
"strings"
@@ -9,6 +8,7 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
"github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
var invalidEnabledOnlyMsg = []byte(`Invalid value for 'enabledonly' query param, must be of boolean type`)
@@ -103,7 +103,7 @@ func prepareBiddersResponseAll(bidders config.BidderInfos, aliases map[string]st
}
sort.Strings(bidderNames)
- return json.Marshal(bidderNames)
+ return jsonutil.Marshal(bidderNames)
}
func prepareBiddersResponseAllBaseOnly(bidders config.BidderInfos) ([]byte, error) {
@@ -116,7 +116,7 @@ func prepareBiddersResponseAllBaseOnly(bidders config.BidderInfos) ([]byte, erro
}
sort.Strings(bidderNames)
- return json.Marshal(bidderNames)
+ return jsonutil.Marshal(bidderNames)
}
func prepareBiddersResponseEnabledOnly(bidders config.BidderInfos, aliases map[string]string) ([]byte, error) {
@@ -135,8 +135,7 @@ func prepareBiddersResponseEnabledOnly(bidders config.BidderInfos, aliases map[s
}
sort.Strings(bidderNames)
-
- return json.Marshal(bidderNames)
+ return jsonutil.Marshal(bidderNames)
}
func prepareBiddersResponseEnabledOnlyBaseOnly(bidders config.BidderInfos) ([]byte, error) {
@@ -149,7 +148,7 @@ func prepareBiddersResponseEnabledOnlyBaseOnly(bidders config.BidderInfos) ([]by
}
sort.Strings(bidderNames)
- return json.Marshal(bidderNames)
+ return jsonutil.Marshal(bidderNames)
}
func writeBadRequest(w http.ResponseWriter, data []byte) {
diff --git a/endpoints/info/bidders_detail.go b/endpoints/info/bidders_detail.go
index d9dc776f50d..34d14efde1b 100644
--- a/endpoints/info/bidders_detail.go
+++ b/endpoints/info/bidders_detail.go
@@ -10,6 +10,7 @@ import (
"github.com/julienschmidt/httprouter"
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
const (
@@ -101,7 +102,7 @@ func marshalDetailsResponse(details map[string]bidderDetail) (map[string][]byte,
responses := map[string][]byte{}
for bidder, detail := range details {
- json, err := json.Marshal(detail)
+ json, err := jsonutil.Marshal(detail)
if err != nil {
return nil, fmt.Errorf("unable to marshal info for bidder %s: %v", bidder, err)
}
@@ -118,7 +119,7 @@ func marshalAllResponse(responses map[string][]byte) ([]byte, error) {
responsesJSON[k] = json.RawMessage(v)
}
- json, err := json.Marshal(responsesJSON)
+ json, err := jsonutil.Marshal(responsesJSON)
if err != nil {
return nil, fmt.Errorf("unable to marshal info for bidder all: %v", err)
}
diff --git a/endpoints/openrtb2/amp_auction.go b/endpoints/openrtb2/amp_auction.go
index 2fde59c25e4..76b0e83cf3d 100644
--- a/endpoints/openrtb2/amp_auction.go
+++ b/endpoints/openrtb2/amp_auction.go
@@ -37,6 +37,7 @@ import (
"github.com/prebid/prebid-server/stored_responses"
"github.com/prebid/prebid-server/usersync"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/version"
)
@@ -341,7 +342,7 @@ func sendAmpResponse(
// but this is a very unlikely corner case. Doing this so we can catch "hb_cache_id"
// and "hb_cache_id_{deal}", which allows for deal support in AMP.
bidExt := &openrtb_ext.ExtBid{}
- err := json.Unmarshal(bid.Ext, bidExt)
+ err := jsonutil.Unmarshal(bid.Ext, bidExt)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Critical error while unpacking AMP targets: %v", err)
@@ -360,7 +361,7 @@ func sendAmpResponse(
// Extract global targeting
var extResponse openrtb_ext.ExtBidResponse
- eRErr := json.Unmarshal(response.Ext, &extResponse)
+ eRErr := jsonutil.Unmarshal(response.Ext, &extResponse)
if eRErr != nil {
ao.Errors = append(ao.Errors, fmt.Errorf("AMP response: failed to unpack OpenRTB response.ext, debug info cannot be forwarded: %v", eRErr))
}
@@ -409,7 +410,7 @@ func getExtBidResponse(
}
// Extract any errors
var extResponse openrtb_ext.ExtBidResponse
- eRErr := json.Unmarshal(response.Ext, &extResponse)
+ eRErr := jsonutil.Unmarshal(response.Ext, &extResponse)
if eRErr != nil {
ao.Errors = append(ao.Errors, fmt.Errorf("AMP response: failed to unpack OpenRTB response.ext, debug info cannot be forwarded: %v", eRErr))
}
@@ -524,7 +525,7 @@ func (deps *endpointDeps) loadRequestJSONForAmp(httpRequest *http.Request) (req
// The fetched config becomes the entire OpenRTB request
requestJSON := storedRequests[ampParams.StoredRequestID]
- if err := json.Unmarshal(requestJSON, req); err != nil {
+ if err := jsonutil.UnmarshalValid(requestJSON, req); err != nil {
errs = []error{err}
return
}
@@ -824,7 +825,7 @@ func setTrace(req *openrtb2.BidRequest, value string) error {
return nil
}
- ext, err := json.Marshal(map[string]map[string]string{"prebid": {"trace": value}})
+ ext, err := jsonutil.Marshal(map[string]map[string]string{"prebid": {"trace": value}})
if err != nil {
return err
}
diff --git a/endpoints/openrtb2/amp_auction_test.go b/endpoints/openrtb2/amp_auction_test.go
index 4315ec7926f..7de8995754a 100644
--- a/endpoints/openrtb2/amp_auction_test.go
+++ b/endpoints/openrtb2/amp_auction_test.go
@@ -32,6 +32,7 @@ import (
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/privacy"
"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// TestGoodRequests makes sure that the auction runs properly-formatted stored bids correctly.
@@ -77,7 +78,7 @@ func TestGoodAmpRequests(t *testing.T) {
}
test := testCase{}
- if !assert.NoError(t, json.Unmarshal(fileJsonData, &test), "Failed to unmarshal data from file: %s. Error: %v", filename, err) {
+ if !assert.NoError(t, jsonutil.UnmarshalValid(fileJsonData, &test), "Failed to unmarshal data from file: %s. Error: %v", filename, err) {
continue
}
@@ -130,7 +131,7 @@ func TestGoodAmpRequests(t *testing.T) {
}
if test.ExpectedValidatedBidReq != nil {
// compare as json to ignore whitespace and ext field ordering
- actualJson, err := json.Marshal(ex.actualValidatedBidReq)
+ actualJson, err := jsonutil.Marshal(ex.actualValidatedBidReq)
if assert.NoError(t, err, "Error converting actual bid request to json. Test file: %s", filename) {
assert.JSONEq(t, string(test.ExpectedValidatedBidReq), string(actualJson), "Not the expected validated request. Test file: %s", filename)
}
@@ -159,7 +160,7 @@ func TestAccountErrors(t *testing.T) {
}
test := testCase{}
- if !assert.NoError(t, json.Unmarshal(fileJsonData, &test), "Failed to unmarshal data from file: %s. Error: %v", tt.filename, err) {
+ if !assert.NoError(t, jsonutil.UnmarshalValid(fileJsonData, &test), "Failed to unmarshal data from file: %s. Error: %v", tt.filename, err) {
continue
}
test.StoredRequest = map[string]json.RawMessage{tt.storedReqID: test.BidRequest}
@@ -325,7 +326,7 @@ func TestGDPRConsent(t *testing.T) {
// Parse Response
var response AmpResponse
- if err := json.Unmarshal(responseRecorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(responseRecorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -341,7 +342,7 @@ func TestGDPRConsent(t *testing.T) {
return
}
var ue openrtb_ext.ExtUser
- err = json.Unmarshal(result.User.Ext, &ue)
+ err = jsonutil.UnmarshalValid(result.User.Ext, &ue)
if !assert.NoError(t, err, test.description+":deserialize") {
return
}
@@ -356,7 +357,7 @@ func TestGDPRConsent(t *testing.T) {
// Parse Resonse
var responseLegacy AmpResponse
- if err := json.Unmarshal(responseRecorderLegacy.Body.Bytes(), &responseLegacy); err != nil {
+ if err := jsonutil.UnmarshalValid(responseRecorderLegacy.Body.Bytes(), &responseLegacy); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -372,7 +373,7 @@ func TestGDPRConsent(t *testing.T) {
return
}
var ueLegacy openrtb_ext.ExtUser
- err = json.Unmarshal(resultLegacy.User.Ext, &ueLegacy)
+ err = jsonutil.UnmarshalValid(resultLegacy.User.Ext, &ueLegacy)
if !assert.NoError(t, err, test.description+":legacy:deserialize") {
return
}
@@ -519,7 +520,7 @@ func TestOverrideWithParams(t *testing.T) {
Site: &openrtb2.Site{Ext: json.RawMessage(`{"amp":1}`)},
User: &openrtb2.User{Ext: json.RawMessage(`malformed`)},
},
- errorMsgs: []string{"invalid character 'm' looking for beginning of value"},
+ errorMsgs: []string{"expect { or n, but found m"},
expectFatalErrors: true,
},
},
@@ -567,7 +568,7 @@ func TestOverrideWithParams(t *testing.T) {
User: &openrtb2.User{Ext: json.RawMessage(`{"prebid":{malformed}}`)},
Site: &openrtb2.Site{Ext: json.RawMessage(`{"amp":1}`)},
},
- errorMsgs: []string{"invalid character 'm' looking for beginning of object key string"},
+ errorMsgs: []string{"expect \" after {, but found m"},
expectFatalErrors: true,
},
},
@@ -749,7 +750,7 @@ func TestCCPAConsent(t *testing.T) {
// Parse Response
var response AmpResponse
- if err := json.Unmarshal(responseRecorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(responseRecorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -765,7 +766,7 @@ func TestCCPAConsent(t *testing.T) {
return
}
var re openrtb_ext.ExtRegs
- err = json.Unmarshal(result.Regs.Ext, &re)
+ err = jsonutil.UnmarshalValid(result.Regs.Ext, &re)
if !assert.NoError(t, err, test.description+":deserialize") {
return
}
@@ -871,7 +872,7 @@ func TestConsentWarnings(t *testing.T) {
// Parse Response
var response AmpResponse
- if err := json.Unmarshal(responseRecorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(responseRecorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -962,7 +963,7 @@ func TestNewAndLegacyConsentBothProvided(t *testing.T) {
// Parse Response
var response AmpResponse
- if err := json.Unmarshal(responseRecorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(responseRecorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -978,7 +979,7 @@ func TestNewAndLegacyConsentBothProvided(t *testing.T) {
return
}
var ue openrtb_ext.ExtUser
- err = json.Unmarshal(result.User.Ext, &ue)
+ err = jsonutil.UnmarshalValid(result.User.Ext, &ue)
if !assert.NoError(t, err, test.description+":deserialize") {
return
}
@@ -1099,7 +1100,7 @@ func TestAmpDebug(t *testing.T) {
}
var response AmpResponse
- if err := json.Unmarshal(recorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(recorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
@@ -1134,7 +1135,7 @@ func TestInitAmpTargetingAndCache(t *testing.T) {
{
name: "malformed",
request: &openrtb2.BidRequest{Ext: json.RawMessage("malformed")},
- expectedErrs: []string{"invalid character 'm' looking for beginning of value"},
+ expectedErrs: []string{"expect { or n, but found m"},
},
{
name: "nil",
@@ -1240,12 +1241,12 @@ func TestQueryParamOverrides(t *testing.T) {
}
var response AmpResponse
- if err := json.Unmarshal(recorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(recorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
var resolvedRequest openrtb2.BidRequest
- err := json.Unmarshal(response.ORTB2.Ext.Debug.ResolvedRequest, &resolvedRequest)
+ err := jsonutil.UnmarshalValid(response.ORTB2.Ext.Debug.ResolvedRequest, &resolvedRequest)
assert.NoError(t, err, "resolved request should have a correct format")
if resolvedRequest.TMax != timeout {
t.Errorf("Expected TMax to equal timeout (%d), got: %d", timeout, resolvedRequest.TMax)
@@ -1391,11 +1392,11 @@ func (s formatOverrideSpec) execute(t *testing.T) {
t.Errorf("Request was: %s", string(requests["1"]))
}
var response AmpResponse
- if err := json.Unmarshal(recorder.Body.Bytes(), &response); err != nil {
+ if err := jsonutil.UnmarshalValid(recorder.Body.Bytes(), &response); err != nil {
t.Fatalf("Error unmarshalling response: %s", err.Error())
}
var resolvedRequest openrtb2.BidRequest
- err := json.Unmarshal(response.ORTB2.Ext.Debug.ResolvedRequest, &resolvedRequest)
+ err := jsonutil.UnmarshalValid(response.ORTB2.Ext.Debug.ResolvedRequest, &resolvedRequest)
assert.NoError(t, err, "resolved request should have the correct format")
formats := resolvedRequest.Imp[0].Banner.Format
if len(formats) != len(s.expect) {
@@ -1445,14 +1446,14 @@ func (m *mockAmpExchange) HoldAuction(ctx context.Context, auctionRequest *excha
if len(auctionRequest.StoredAuctionResponses) > 0 {
var seatBids []openrtb2.SeatBid
- if err := json.Unmarshal(auctionRequest.StoredAuctionResponses[r.BidRequest.Imp[0].ID], &seatBids); err != nil {
+ if err := jsonutil.UnmarshalValid(auctionRequest.StoredAuctionResponses[r.BidRequest.Imp[0].ID], &seatBids); err != nil {
return nil, err
}
response.SeatBid = seatBids
}
if r.BidRequest.Test == 1 {
- resolvedRequest, err := json.Marshal(r.BidRequest)
+ resolvedRequest, err := jsonutil.Marshal(r.BidRequest)
if err != nil {
resolvedRequest = json.RawMessage("{}")
}
@@ -1511,7 +1512,7 @@ func getTestBidRequest(nilUser bool, userExt *openrtb_ext.ExtUser, nilRegs bool,
var userExtData []byte
if userExt != nil {
var err error
- userExtData, err = json.Marshal(userExt)
+ userExtData, err = jsonutil.Marshal(userExt)
if err != nil {
return nil, err
}
@@ -1528,7 +1529,7 @@ func getTestBidRequest(nilUser bool, userExt *openrtb_ext.ExtUser, nilRegs bool,
var regsExtData []byte
if regsExt != nil {
var err error
- regsExtData, err = json.Marshal(regsExt)
+ regsExtData, err = jsonutil.Marshal(regsExt)
if err != nil {
return nil, err
}
@@ -1540,7 +1541,7 @@ func getTestBidRequest(nilUser bool, userExt *openrtb_ext.ExtUser, nilRegs bool,
Ext: regsExtData,
}
}
- return json.Marshal(bidRequest)
+ return jsonutil.Marshal(bidRequest)
}
func TestSetEffectiveAmpPubID(t *testing.T) {
@@ -2191,7 +2192,7 @@ func TestValidAmpResponseWhenRequestRejected(t *testing.T) {
assert.NoError(t, err, "Failed to read test file.")
test := testCase{}
- assert.NoError(t, json.Unmarshal(fileData, &test), "Failed to parse test file.")
+ assert.NoError(t, jsonutil.UnmarshalValid(fileData, &test), "Failed to parse test file.")
request := httptest.NewRequest("GET", fmt.Sprintf("/openrtb2/auction/amp?%s", test.Query), nil)
recorder := httptest.NewRecorder()
@@ -2211,8 +2212,8 @@ func TestValidAmpResponseWhenRequestRejected(t *testing.T) {
var actualAmpResp AmpResponse
var expectedAmpResp AmpResponse
- assert.NoError(t, json.Unmarshal(recorder.Body.Bytes(), &actualAmpResp), "Unable to unmarshal actual AmpResponse.")
- assert.NoError(t, json.Unmarshal(test.ExpectedAmpResponse, &expectedAmpResp), "Unable to unmarshal expected AmpResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(recorder.Body.Bytes(), &actualAmpResp), "Unable to unmarshal actual AmpResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(test.ExpectedAmpResponse, &expectedAmpResp), "Unable to unmarshal expected AmpResponse.")
// validate modules data separately, because it has dynamic data
if expectedAmpResp.ORTB2.Ext.Prebid == nil {
@@ -2248,7 +2249,7 @@ func TestSendAmpResponse_LogsErrors(t *testing.T) {
{
description: "Error logged when bid.ext unmarshal fails",
expectedErrors: []error{
- errors.New("Critical error while unpacking AMP targets: unexpected end of JSON input"),
+ errors.New("Critical error while unpacking AMP targets: expect { or n, but found \""),
},
expectedStatus: http.StatusInternalServerError,
writer: httptest.NewRecorder(),
@@ -2325,7 +2326,7 @@ func TestSendAmpResponse_LogsErrors(t *testing.T) {
_, ao = sendAmpResponse(test.writer, test.hookExecutor, &exchange.AuctionResponse{BidResponse: test.response}, &reqWrapper, account, labels, ao, nil)
- assert.Equal(t, ao.Errors, test.expectedErrors, "Invalid errors.")
+ assert.Equal(t, test.expectedErrors, ao.Errors, "Invalid errors.")
assert.Equal(t, test.expectedStatus, ao.Status, "Invalid HTTP response status.")
})
}
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index 0e1a23583a1..2cad7a2463a 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -52,6 +52,7 @@ import (
"github.com/prebid/prebid-server/usersync"
"github.com/prebid/prebid-server/util/httputil"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/uuidutil"
"github.com/prebid/prebid-server/version"
)
@@ -308,11 +309,11 @@ func setSeatNonBidRaw(request *openrtb_ext.RequestWrapper, auctionResponse *exch
// by HoldAuction
response := auctionResponse.BidResponse
respExt := &openrtb_ext.ExtBidResponse{}
- if err := json.Unmarshal(response.Ext, &respExt); err != nil {
+ if err := jsonutil.Unmarshal(response.Ext, &respExt); err != nil {
return err
}
if setSeatNonBid(respExt, request, auctionResponse) {
- if respExtJson, err := json.Marshal(respExt); err == nil {
+ if respExtJson, err := jsonutil.Marshal(respExt); err == nil {
response.Ext = respExtJson
return nil
} else {
@@ -445,7 +446,7 @@ func (deps *endpointDeps) parseRequest(httpRequest *http.Request, labels *metric
requestJson, rejectErr := hookExecutor.ExecuteEntrypointStage(httpRequest, requestJson)
if rejectErr != nil {
errs = []error{rejectErr}
- if err = json.Unmarshal(requestJson, req.BidRequest); err != nil {
+ if err = jsonutil.UnmarshalValid(requestJson, req.BidRequest); err != nil {
glog.Errorf("Failed to unmarshal BidRequest during entrypoint rejection: %s", err)
}
return
@@ -493,7 +494,7 @@ func (deps *endpointDeps) parseRequest(httpRequest *http.Request, labels *metric
requestJson, rejectErr = hookExecutor.ExecuteRawAuctionStage(requestJson)
if rejectErr != nil {
errs = []error{rejectErr}
- if err = json.Unmarshal(requestJson, req.BidRequest); err != nil {
+ if err = jsonutil.UnmarshalValid(requestJson, req.BidRequest); err != nil {
glog.Errorf("Failed to unmarshal BidRequest during raw auction stage rejection: %s", err)
}
return
@@ -522,7 +523,7 @@ func (deps *endpointDeps) parseRequest(httpRequest *http.Request, labels *metric
return nil, nil, nil, nil, nil, nil, errs
}
- if err := json.Unmarshal(requestJson, req.BidRequest); err != nil {
+ if err := jsonutil.UnmarshalValid(requestJson, req.BidRequest); err != nil {
errs = []error{err}
return
}
@@ -621,7 +622,7 @@ func mergeBidderParams(req *openrtb_ext.RequestWrapper) error {
}
bidderParams := map[string]map[string]json.RawMessage{}
- if err := json.Unmarshal(bidderParamsJson, &bidderParams); err != nil {
+ if err := jsonutil.Unmarshal(bidderParamsJson, &bidderParams); err != nil {
return nil
}
@@ -664,7 +665,7 @@ func mergeBidderParamsImpExt(impExt *openrtb_ext.ImpExt, reqExtParams map[string
impExtBidderMap := map[string]json.RawMessage{}
if len(impExtBidder) > 0 {
- if err := json.Unmarshal(impExtBidder, &impExtBidderMap); err != nil {
+ if err := jsonutil.Unmarshal(impExtBidder, &impExtBidderMap); err != nil {
continue
}
}
@@ -678,7 +679,7 @@ func mergeBidderParamsImpExt(impExt *openrtb_ext.ImpExt, reqExtParams map[string
}
if modified {
- impExtBidderJson, err := json.Marshal(impExtBidderMap)
+ impExtBidderJson, err := jsonutil.Marshal(impExtBidderMap)
if err != nil {
return fmt.Errorf("error marshalling ext.BIDDER: %s", err.Error())
}
@@ -712,7 +713,7 @@ func mergeBidderParamsImpExtPrebid(impExt *openrtb_ext.ImpExt, reqExtParams map[
impExtPrebidBidderMap := map[string]json.RawMessage{}
if len(impExtPrebidBidder) > 0 {
- if err := json.Unmarshal(impExtPrebidBidder, &impExtPrebidBidderMap); err != nil {
+ if err := jsonutil.Unmarshal(impExtPrebidBidder, &impExtPrebidBidderMap); err != nil {
continue
}
}
@@ -726,7 +727,7 @@ func mergeBidderParamsImpExtPrebid(impExt *openrtb_ext.ImpExt, reqExtParams map[
}
if modified {
- impExtPrebidBidderJson, err := json.Marshal(impExtPrebidBidderMap)
+ impExtPrebidBidderJson, err := jsonutil.Marshal(impExtPrebidBidderMap)
if err != nil {
return fmt.Errorf("error marshalling ext.prebid.bidder.BIDDER: %s", err.Error())
}
@@ -1195,7 +1196,7 @@ func fillAndValidateNative(n *openrtb2.Native, impIndex int) error {
return fmt.Errorf("request.imp[%d].native missing required property \"request\"", impIndex)
}
var nativePayload nativeRequests.Request
- if err := json.Unmarshal(json.RawMessage(n.Request), &nativePayload); err != nil {
+ if err := jsonutil.UnmarshalValid(json.RawMessage(n.Request), &nativePayload); err != nil {
return err
}
@@ -1212,7 +1213,7 @@ func fillAndValidateNative(n *openrtb2.Native, impIndex int) error {
return err
}
- serialized, err := json.Marshal(nativePayload)
+ serialized, err := jsonutil.Marshal(nativePayload)
if err != nil {
return err
}
@@ -2086,7 +2087,7 @@ func getJsonSyntaxError(testJSON []byte) (bool, string) {
}
type jNode map[string]*JsonNode
docErrdoc := &jNode{}
- docErr := json.Unmarshal(testJSON, docErrdoc)
+ docErr := jsonutil.UnmarshalValid(testJSON, docErrdoc)
if uerror, ok := docErr.(*json.SyntaxError); ok {
err := fmt.Sprintf("%s at offset %v", uerror.Error(), uerror.Offset)
return true, err
@@ -2235,7 +2236,7 @@ func (deps *endpointDeps) processStoredRequests(requestJson []byte, impInfo []Im
}
}
if len(resolvedImps) > 0 {
- newImpJson, err := json.Marshal(resolvedImps)
+ newImpJson, err := jsonutil.Marshal(resolvedImps)
if err != nil {
return nil, nil, []error{err}
}
@@ -2255,7 +2256,7 @@ func parseImpInfo(requestJson []byte) (impData []ImpExtPrebidData, errs []error)
impExtData, _, _, err := jsonparser.Get(imp, "ext", "prebid")
var impExtPrebid openrtb_ext.ExtImpPrebid
if impExtData != nil {
- if err := json.Unmarshal(impExtData, &impExtPrebid); err != nil {
+ if err := jsonutil.Unmarshal(impExtData, &impExtPrebid); err != nil {
errs = append(errs, err)
}
}
@@ -2384,7 +2385,7 @@ func getAccountID(pub *openrtb2.Publisher) string {
if pub != nil {
if pub.Ext != nil {
var pubExt openrtb_ext.ExtPublisher
- err := json.Unmarshal(pub.Ext, &pubExt)
+ err := jsonutil.Unmarshal(pub.Ext, &pubExt)
if err == nil && pubExt.Prebid != nil && pubExt.Prebid.ParentAccount != nil && *pubExt.Prebid.ParentAccount != "" {
return *pubExt.Prebid.ParentAccount
}
diff --git a/endpoints/openrtb2/auction_test.go b/endpoints/openrtb2/auction_test.go
index 8204a80e3db..530d197e2ae 100644
--- a/endpoints/openrtb2/auction_test.go
+++ b/endpoints/openrtb2/auction_test.go
@@ -36,6 +36,7 @@ import (
"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
"github.com/prebid/prebid-server/stored_responses"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
)
@@ -192,7 +193,7 @@ func runEndToEndTest(t *testing.T, auctionEndpointHandler httprouter.Handle, tes
// Either assert bid response or expected error
if len(test.ExpectedErrorMessage) > 0 {
- assert.True(t, strings.HasPrefix(actualJsonBidResponse, test.ExpectedErrorMessage), "Actual: %s \nExpected: %s. Filename: %s \n", actualJsonBidResponse, test.ExpectedErrorMessage, testFile)
+ assert.Contains(t, actualJsonBidResponse, test.ExpectedErrorMessage, "Actual: %s \nExpected: %s. Filename: %s \n", actualJsonBidResponse, test.ExpectedErrorMessage, testFile)
}
if len(test.ExpectedBidResponse) > 0 {
@@ -200,9 +201,9 @@ func runEndToEndTest(t *testing.T, auctionEndpointHandler httprouter.Handle, tes
var actualBidResponse openrtb2.BidResponse
var err error
- err = json.Unmarshal(test.ExpectedBidResponse, &expectedBidResponse)
+ err = jsonutil.Unmarshal(test.ExpectedBidResponse, &expectedBidResponse)
if assert.NoError(t, err, "Could not unmarshal expected bidResponse taken from test file.\n Test file: %s\n Error:%s\n", testFile, err) {
- err = json.Unmarshal([]byte(actualJsonBidResponse), &actualBidResponse)
+ err = jsonutil.UnmarshalValid([]byte(actualJsonBidResponse), &actualBidResponse)
if assert.NoError(t, err, "Could not unmarshal actual bidResponse from auction.\n Test file: %s\n Error:%s\n actualJsonBidResponse: %s", testFile, err, actualJsonBidResponse) {
assertBidResponseEqual(t, testFile, expectedBidResponse, actualBidResponse)
}
@@ -222,13 +223,13 @@ func compareWarnings(t *testing.T, expectedBidResponseExt, actualBidResponseExt
}
var expectedWarn []openrtb_ext.ExtBidderMessage
- err = json.Unmarshal(expectedWarnings, &expectedWarn)
+ err = jsonutil.UnmarshalValid(expectedWarnings, &expectedWarn)
if err != nil {
assert.Fail(t, "error unmarshalling expected warnings data from response extension")
}
var actualWarn []openrtb_ext.ExtBidderMessage
- err = json.Unmarshal(actualWarnings, &actualWarn)
+ err = jsonutil.UnmarshalValid(actualWarnings, &actualWarn)
if err != nil {
assert.Fail(t, "error unmarshalling actual warnings data from response extension")
}
@@ -476,8 +477,8 @@ func TestExplicitUserId(t *testing.T) {
// processes aliases before it processes stored imps. Changing that order
// would probably cause this test to fail.
func TestBadAliasRequests(t *testing.T) {
- doBadAliasRequest(t, "sample-requests/invalid-stored/bad_stored_imp.json", "Invalid request: Invalid JSON in Default Request Settings: invalid character '\"' after object key:value pair at offset 51\n")
- doBadAliasRequest(t, "sample-requests/invalid-stored/bad_incoming_imp.json", "Invalid request: Invalid JSON in Incoming Request: invalid character '\"' after object key:value pair at offset 230\n")
+ doBadAliasRequest(t, "sample-requests/invalid-stored/bad_stored_imp.json", "Invalid request: Invalid JSON Document\n")
+ doBadAliasRequest(t, "sample-requests/invalid-stored/bad_incoming_imp.json", "Invalid request: Invalid JSON Document\n")
}
// doBadAliasRequest() is a customized variation of doRequest(), above
@@ -1907,7 +1908,7 @@ func TestValidateRequestExt(t *testing.T) {
{
description: "prebid cache - bids - wrong type",
givenRequestExt: json.RawMessage(`{"prebid":{"cache":{"bids":true}}}`),
- expectedErrors: []string{`json: cannot unmarshal bool into Go struct field ExtRequestPrebidCache.cache.bids of type openrtb_ext.ExtRequestPrebidCacheBids`},
+ expectedErrors: []string{"cannot unmarshal openrtb_ext.ExtRequestPrebidCache.Bids: expect { or n, but found t"},
},
{
description: "prebid cache - bids - provided",
@@ -1921,7 +1922,7 @@ func TestValidateRequestExt(t *testing.T) {
{
description: "prebid cache - vastxml - wrong type",
givenRequestExt: json.RawMessage(`{"prebid":{"cache":{"vastxml":true}}}`),
- expectedErrors: []string{`json: cannot unmarshal bool into Go struct field ExtRequestPrebidCache.cache.vastxml of type openrtb_ext.ExtRequestPrebidCacheVAST`},
+ expectedErrors: []string{"cannot unmarshal openrtb_ext.ExtRequestPrebidCache.VastXML: expect { or n, but found t"},
},
{
description: "prebid cache - vastxml - provided",
@@ -2555,7 +2556,7 @@ func TestStoredRequestGenerateUuid(t *testing.T) {
newRequest, _, errList := deps.processStoredRequests(json.RawMessage(test.givenRawData), impInfo, storedRequests, storedImps, storedBidRequestId, hasStoredBidRequest)
assert.Empty(t, errList, test.description)
- if err := json.Unmarshal(newRequest, req); err != nil {
+ if err := jsonutil.UnmarshalValid(newRequest, req); err != nil {
t.Errorf("processStoredRequests Error: %s", err.Error())
}
if test.expectedCur != "" {
@@ -3464,7 +3465,7 @@ func TestGetAccountID(t *testing.T) {
ParentAccount: &testParentAccount,
},
}
- testPubExtJSON, err := json.Marshal(testPubExt)
+ testPubExtJSON, err := jsonutil.Marshal(testPubExt)
assert.NoError(t, err)
testCases := []struct {
@@ -4196,7 +4197,7 @@ func TestParseRequestParseImpInfoError(t *testing.T) {
assert.Nil(t, resReq, "Result request should be nil due to incorrect imp")
assert.Nil(t, impExtInfoMap, "Impression info map should be nil due to incorrect imp")
assert.Len(t, errL, 1, "One error should be returned")
- assert.Contains(t, errL[0].Error(), "echovideoattrs of type bool", "Incorrect error message")
+ assert.Contains(t, errL[0].Error(), "cannot unmarshal openrtb_ext.Options.EchoVideoAttrs", "Incorrect error message")
}
func TestParseGzipedRequest(t *testing.T) {
@@ -4878,20 +4879,20 @@ func TestParseRequestMergeBidderParams(t *testing.T) {
assert.NoError(t, resReq.RebuildRequest())
var expIExt, iExt map[string]interface{}
- err := json.Unmarshal(test.expectedImpExt, &expIExt)
+ err := jsonutil.UnmarshalValid(test.expectedImpExt, &expIExt)
assert.Nil(t, err, "unmarshal() should return nil error")
assert.NotNil(t, resReq.BidRequest.Imp[0].Ext, "imp[0].Ext should not be nil")
- err = json.Unmarshal(resReq.BidRequest.Imp[0].Ext, &iExt)
+ err = jsonutil.UnmarshalValid(resReq.BidRequest.Imp[0].Ext, &iExt)
assert.Nil(t, err, "unmarshal() should return nil error")
assert.Equal(t, expIExt, iExt, "bidderparams in imp[].Ext should match")
var eReqE, reqE map[string]interface{}
- err = json.Unmarshal(test.expectedReqExt, &eReqE)
+ err = jsonutil.UnmarshalValid(test.expectedReqExt, &eReqE)
assert.Nil(t, err, "unmarshal() should return nil error")
- err = json.Unmarshal(resReq.BidRequest.Ext, &reqE)
+ err = jsonutil.UnmarshalValid(resReq.BidRequest.Ext, &reqE)
assert.Nil(t, err, "unmarshal() should return nil error")
assert.Equal(t, eReqE, reqE, "req.Ext should match")
@@ -5753,11 +5754,11 @@ func TestValidResponseAfterExecutingStages(t *testing.T) {
var actualExt openrtb_ext.ExtBidResponse
var expectedExt openrtb_ext.ExtBidResponse
- assert.NoError(t, json.Unmarshal(test.ExpectedBidResponse, &expectedResp), "Unable to unmarshal expected BidResponse.")
- assert.NoError(t, json.Unmarshal(recorder.Body.Bytes(), &actualResp), "Unable to unmarshal actual BidResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(test.ExpectedBidResponse, &expectedResp), "Unable to unmarshal expected BidResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(recorder.Body.Bytes(), &actualResp), "Unable to unmarshal actual BidResponse.")
if expectedResp.Ext != nil {
- assert.NoError(t, json.Unmarshal(expectedResp.Ext, &expectedExt), "Unable to unmarshal expected ExtBidResponse.")
- assert.NoError(t, json.Unmarshal(actualResp.Ext, &actualExt), "Unable to unmarshal actual ExtBidResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(expectedResp.Ext, &expectedExt), "Unable to unmarshal expected ExtBidResponse.")
+ assert.NoError(t, jsonutil.UnmarshalValid(actualResp.Ext, &actualExt), "Unable to unmarshal actual ExtBidResponse.")
}
assertBidResponseEqual(t, tc.file, expectedResp, actualResp)
@@ -5959,7 +5960,7 @@ func getObject(t *testing.T, filename, key string) json.RawMessage {
assert.NoError(t, err, "Error jsonparsing root.mockBidRequest from file %s. Desc: %v.", filename, err)
var obj json.RawMessage
- err = json.Unmarshal(testBidRequest, &obj)
+ err = jsonutil.UnmarshalValid(testBidRequest, &obj)
if err != nil {
t.Fatalf("Failed to fetch object with key '%s' ... got error: %v", key, err)
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_1.json b/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_1.json
index 812f0664fbb..cf699fea0c9 100644
--- a/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_1.json
+++ b/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_1.json
@@ -11,5 +11,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: Invalid JSON in Incoming Request: invalid character ']' looking for beginning of value at offset"
+ "expectedErrorMessage": "Invalid request: expect { or n, but found"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_imp.json b/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_imp.json
index e3960b17399..fb0dc866d10 100644
--- a/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_imp.json
+++ b/endpoints/openrtb2/sample-requests/invalid-stored/bad_incoming_imp.json
@@ -37,5 +37,5 @@
"tmax": 500
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: Invalid JSON in Imp[0] of Incoming Request: invalid character '\"' after object key:value pair at offset 132\n"
+ "expectedErrorMessage": "Invalid request: Invalid JSON Document"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_imp.json b/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_imp.json
index 0fed6c32adf..ea19855e75a 100644
--- a/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_imp.json
+++ b/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_imp.json
@@ -33,5 +33,5 @@
"tmax": 500
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: imp.ext.prebid.storedrequest.id 7: Stored Imp has Invalid JSON"
+ "expectedErrorMessage": "Invalid request: Invalid JSON Document"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_req.json b/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_req.json
index 4e9d7f03352..235eb26179b 100644
--- a/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_req.json
+++ b/endpoints/openrtb2/sample-requests/invalid-stored/bad_stored_req.json
@@ -23,5 +23,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: ext.prebid.storedrequest.id refers to Stored Request 3 which contains Invalid JSON"
+ "expectedErrorMessage": "Invalid request: expect { or n, but found"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/interstital-bad-perc.json b/endpoints/openrtb2/sample-requests/invalid-whole/interstital-bad-perc.json
index 302372b5e5d..e5031d4597d 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/interstital-bad-perc.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/interstital-bad-perc.json
@@ -49,5 +49,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100\n"
+ "expectedErrorMessage": "Invalid request: request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/invalid-source.json b/endpoints/openrtb2/sample-requests/invalid-whole/invalid-source.json
index 5aa7fd4dea1..8db15b82a75 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/invalid-source.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/invalid-source.json
@@ -39,5 +39,5 @@
]
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: json: cannot unmarshal object into Go struct field ExtAppPrebid.source of type string"
+ "expectedErrorMessage": "Invalid request: cannot unmarshal openrtb_ext.ExtAppPrebid.Source: expects \" or n, but found {"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/malformed-bid-request.json b/endpoints/openrtb2/sample-requests/invalid-whole/malformed-bid-request.json
index c6fd52304a7..482af257d62 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/malformed-bid-request.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/malformed-bid-request.json
@@ -2,5 +2,5 @@
"description": "Malformed bid request throws an error",
"mockBidRequest": "malformed",
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: invalid character 'm' looking for beginning of value\n"
+ "expectedErrorMessage": "Invalid request: expect { or n, but found m"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/regs-ext-malformed.json b/endpoints/openrtb2/sample-requests/invalid-whole/regs-ext-malformed.json
index ab44e3e2428..7ab2631b701 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/regs-ext-malformed.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/regs-ext-malformed.json
@@ -42,5 +42,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: request.regs.ext is invalid: json: cannot unmarshal string into Go value of type map[string]json.RawMessage\n"
+ "expectedErrorMessage": "Invalid request: request.regs.ext is invalid: expect { or n, but found "
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-consent-int.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-consent-int.json
index a26db8a5695..af04627c3a9 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-consent-int.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-consent-int.json
@@ -46,5 +46,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: request.user.ext object is not valid: json: cannot unmarshal number into Go value of type string\n"
+ "expectedErrorMessage": "Invalid request: request.user.ext object is not valid: expects \" or n, but found 1"
}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-gdpr-consent-invalid.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-gdpr-consent-invalid.json
index c4646550dd2..b710d589ea5 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-gdpr-consent-invalid.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-gdpr-consent-invalid.json
@@ -41,5 +41,5 @@
}
},
"expectedReturnCode": 400,
- "expectedErrorMessage": "Invalid request: request.user.ext object is not valid: json: cannot unmarshal number into Go value of type string"
+ "expectedErrorMessage": "Invalid request: request.user.ext object is not valid: expects \" or n, but found 2"
}
diff --git a/endpoints/openrtb2/test_utils.go b/endpoints/openrtb2/test_utils.go
index 365f480eb4c..e8506813eef 100644
--- a/endpoints/openrtb2/test_utils.go
+++ b/endpoints/openrtb2/test_utils.go
@@ -38,6 +38,7 @@ import (
"github.com/prebid/prebid-server/stored_requests"
"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/uuidutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
@@ -925,7 +926,7 @@ func (s mockCurrencyRatesClient) handle(w http.ResponseWriter, req *http.Request
s.data.DataAsOfRaw = "2018-09-12"
// Marshal the response and http write it
- currencyServerJsonResponse, err := json.Marshal(&s.data)
+ currencyServerJsonResponse, err := jsonutil.Marshal(&s.data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
@@ -949,13 +950,13 @@ func (b mockBidderHandler) bid(w http.ResponseWriter, req *http.Request) {
// Unmarshal exit if error
var openrtb2Request openrtb2.BidRequest
- if err := json.Unmarshal(buf.Bytes(), &openrtb2Request); err != nil {
+ if err := jsonutil.UnmarshalValid(buf.Bytes(), &openrtb2Request); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
var openrtb2ImpExt map[string]json.RawMessage
- if err := json.Unmarshal(openrtb2Request.Imp[0].Ext, &openrtb2ImpExt); err != nil {
+ if err := jsonutil.UnmarshalValid(openrtb2Request.Imp[0].Ext, &openrtb2ImpExt); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
@@ -986,7 +987,7 @@ func (b mockBidderHandler) bid(w http.ResponseWriter, req *http.Request) {
}
// Marshal the response and http write it
- serverJsonResponse, err := json.Marshal(&serverResponseObject)
+ serverJsonResponse, err := jsonutil.Marshal(&serverResponseObject)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
@@ -1016,7 +1017,7 @@ func (a mockAdapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *ada
for _, imp := range request.Imp {
requestCopy.Imp = []openrtb2.Imp{imp}
- requestJSON, err := json.Marshal(request)
+ requestJSON, err := jsonutil.Marshal(request)
if err != nil {
errors = append(errors, err)
continue
@@ -1049,7 +1050,7 @@ func (a mockAdapter) MakeBids(request *openrtb2.BidRequest, requestData *adapter
}
var publisherResponse openrtb2.BidResponse
- if err := json.Unmarshal(responseData.Body, &publisherResponse); err != nil {
+ if err := jsonutil.UnmarshalValid(responseData.Body, &publisherResponse); err != nil {
return nil, []error{err}
}
@@ -1113,7 +1114,7 @@ func parseTestData(fileData []byte, testFile string) (testCase, error) {
jsonTestConfig, _, _, err = jsonparser.Get(fileData, "config")
if err == nil {
- if err = json.Unmarshal(jsonTestConfig, parsedTestData.Config); err != nil {
+ if err = jsonutil.UnmarshalValid(jsonTestConfig, parsedTestData.Config); err != nil {
return parsedTestData, fmt.Errorf("Error unmarshaling root.config from file %s. Desc: %v.", testFile, err)
}
}
diff --git a/endpoints/openrtb2/video_auction.go b/endpoints/openrtb2/video_auction.go
index 8faf15543d3..94455e0cb52 100644
--- a/endpoints/openrtb2/video_auction.go
+++ b/endpoints/openrtb2/video_auction.go
@@ -2,7 +2,6 @@ package openrtb2
import (
"context"
- "encoding/json"
"errors"
"fmt"
"io"
@@ -36,6 +35,7 @@ import (
"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
"github.com/prebid/prebid-server/usersync"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/prebid-server/util/uuidutil"
"github.com/prebid/prebid-server/version"
@@ -179,7 +179,7 @@ func (deps *endpointDeps) VideoAuctionEndpoint(w http.ResponseWriter, r *http.Re
resolvedRequest := requestJson
if debugLog.DebugEnabledOrOverridden {
debugLog.Data.Request = string(requestJson)
- if headerBytes, err := json.Marshal(r.Header); err == nil {
+ if headerBytes, err := jsonutil.Marshal(r.Header); err == nil {
debugLog.Data.Headers = string(headerBytes)
} else {
debugLog.Data.Headers = fmt.Sprintf("Unable to marshal headers data: %s", err.Error())
@@ -219,7 +219,7 @@ func (deps *endpointDeps) VideoAuctionEndpoint(w http.ResponseWriter, r *http.Re
var bidReq = &openrtb2.BidRequest{}
if deps.defaultRequest {
- if err := json.Unmarshal(deps.defReqJSON, bidReq); err != nil {
+ if err := jsonutil.UnmarshalValid(deps.defReqJSON, bidReq); err != nil {
err = fmt.Errorf("Invalid JSON in Default Request Settings: %s", err)
handleError(&labels, w, []error{err}, &vo, &debugLog)
return
@@ -374,8 +374,7 @@ func (deps *endpointDeps) VideoAuctionEndpoint(w http.ResponseWriter, r *http.Re
vo.VideoResponse = bidResp
- resp, err := json.Marshal(bidResp)
- //resp, err := json.Marshal(response)
+ resp, err := jsonutil.Marshal(bidResp)
if err != nil {
errL := []error{err}
handleError(&labels, w, errL, &vo, &debugLog)
@@ -384,7 +383,6 @@ func (deps *endpointDeps) VideoAuctionEndpoint(w http.ResponseWriter, r *http.Re
w.Header().Set("Content-Type", "application/json")
w.Write(resp)
-
}
func cleanupVideoBidRequest(videoReq *openrtb_ext.BidRequestVideo, podErrors []PodError) *openrtb_ext.BidRequestVideo {
@@ -507,7 +505,7 @@ func (deps *endpointDeps) loadStoredImp(storedImpId string) (openrtb2.Imp, []err
return impr, err
}
- if err := json.Unmarshal(imp[storedImpId], &impr); err != nil {
+ if err := jsonutil.UnmarshalValid(imp[storedImpId], &impr); err != nil {
return impr, []error{err}
}
return impr, nil
@@ -536,7 +534,7 @@ func buildVideoResponse(bidresponse *openrtb2.BidResponse, podErrors []PodError)
anyBidsReturned = true
var tempRespBidExt openrtb_ext.ExtBid
- if err := json.Unmarshal(bid.Ext, &tempRespBidExt); err != nil {
+ if err := jsonutil.UnmarshalValid(bid.Ext, &tempRespBidExt); err != nil {
return nil, err
}
if tempRespBidExt.Prebid.Targeting[formatTargetingKey(openrtb_ext.HbVastCacheKey, seatBid.Seat)] == "" {
@@ -705,13 +703,13 @@ func createBidExtension(videoRequest *openrtb_ext.BidRequestVideo) ([]byte, erro
}
extReq := openrtb_ext.ExtRequest{Prebid: prebid}
- return json.Marshal(extReq)
+ return jsonutil.Marshal(extReq)
}
func (deps *endpointDeps) parseVideoRequest(request []byte, headers http.Header) (req *openrtb_ext.BidRequestVideo, errs []error, podErrors []PodError) {
req = &openrtb_ext.BidRequestVideo{}
- if err := json.Unmarshal(request, &req); err != nil {
+ if err := jsonutil.UnmarshalValid(request, &req); err != nil {
errs = []error{err}
return
}
diff --git a/endpoints/openrtb2/video_auction_test.go b/endpoints/openrtb2/video_auction_test.go
index 19af821f205..281c80b204d 100644
--- a/endpoints/openrtb2/video_auction_test.go
+++ b/endpoints/openrtb2/video_auction_test.go
@@ -23,6 +23,7 @@ import (
"github.com/prebid/prebid-server/prebid_cache_client"
"github.com/prebid/prebid-server/privacy"
"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/openrtb/v19/adcom1"
@@ -47,7 +48,7 @@ func TestVideoEndpointImpressionsNumber(t *testing.T) {
respBytes := recorder.Body.Bytes()
resp := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(respBytes, resp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, resp); err != nil {
t.Fatalf("Unable to unmarshal response.")
}
@@ -80,7 +81,7 @@ func TestVideoEndpointImpressionsDuration(t *testing.T) {
}
var extData openrtb_ext.ExtRequest
- json.Unmarshal(ex.lastRequest.Ext, &extData)
+ jsonutil.UnmarshalValid(ex.lastRequest.Ext, &extData)
assert.NotNil(t, extData.Prebid.Targeting.IncludeBidderKeys, "Request ext incorrect: IncludeBidderKeys should be true ")
assert.True(t, *extData.Prebid.Targeting.IncludeBidderKeys, "Request ext incorrect: IncludeBidderKeys should be true ")
@@ -135,7 +136,7 @@ func TestCreateBidExtension(t *testing.T) {
resExt := &openrtb_ext.ExtRequest{}
- if err := json.Unmarshal(res, &resExt); err != nil {
+ if err := jsonutil.UnmarshalValid(res, &resExt); err != nil {
assert.Fail(t, "Unable to unmarshal bid extension")
}
assert.Equal(t, resExt.Prebid.Targeting.DurationRangeSec, durationRange, "Duration range seconds is incorrect")
@@ -178,7 +179,7 @@ func TestVideoEndpointDebugQueryTrue(t *testing.T) {
respBytes := recorder.Body.Bytes()
resp := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(respBytes, resp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, resp); err != nil {
t.Fatalf("Unable to unmarshal response.")
}
@@ -216,7 +217,7 @@ func TestVideoEndpointDebugQueryFalse(t *testing.T) {
respBytes := recorder.Body.Bytes()
resp := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(respBytes, resp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, resp); err != nil {
t.Fatalf("Unable to unmarshal response.")
}
@@ -272,7 +273,7 @@ func TestVideoEndpointDebugNoAdPods(t *testing.T) {
respBytes := recorder.Body.Bytes()
resp := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(respBytes, resp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, resp); err != nil {
t.Fatalf("Unable to unmarshal response.")
}
@@ -1091,7 +1092,7 @@ func TestCCPA(t *testing.T) {
t.Fatalf("%s: The request never made it into the exchange.", test.description)
}
extRegs := &openrtb_ext.ExtRegs{}
- if err := json.Unmarshal(ex.lastRequest.Regs.Ext, extRegs); err != nil {
+ if err := jsonutil.UnmarshalValid(ex.lastRequest.Regs.Ext, extRegs); err != nil {
t.Fatalf("%s: Failed to unmarshal reg.ext in request to the exchange: %v", test.description, err)
}
if test.expectConsentString {
@@ -1103,7 +1104,7 @@ func TestCCPA(t *testing.T) {
// Validate HTTP Response
responseBytes := httpResponseRecorder.Body.Bytes()
response := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(responseBytes, response); err != nil {
+ if err := jsonutil.UnmarshalValid(responseBytes, response); err != nil {
t.Fatalf("%s: Unable to unmarshal response.", test.description)
}
assert.Len(t, ex.lastRequest.Imp, 11, test.description+":imps")
@@ -1125,12 +1126,12 @@ func TestVideoEndpointAppendBidderNames(t *testing.T) {
}
var extData openrtb_ext.ExtRequest
- json.Unmarshal(ex.lastRequest.Ext, &extData)
+ jsonutil.UnmarshalValid(ex.lastRequest.Ext, &extData)
assert.True(t, extData.Prebid.Targeting.AppendBidderNames, "Request ext incorrect: AppendBidderNames should be true ")
respBytes := recorder.Body.Bytes()
resp := &openrtb_ext.BidResponseVideo{}
- if err := json.Unmarshal(respBytes, resp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, resp); err != nil {
t.Fatalf("Unable to unmarshal response.")
}
diff --git a/endpoints/setuid_test.go b/endpoints/setuid_test.go
index 387de6bd05f..8b919c3d596 100644
--- a/endpoints/setuid_test.go
+++ b/endpoints/setuid_test.go
@@ -1307,14 +1307,14 @@ func TestSetUIDEndpointMetrics(t *testing.T) {
cfgAccountRequired: true,
expectedResponseCode: 400,
expectedMetrics: func(m *metrics.MetricsEngineMock) {
- m.On("RecordSetUid", metrics.SetUidBadRequest).Once()
+ m.On("RecordSetUid", metrics.SetUidAccountConfigMalformed).Once()
},
expectedAnalytics: func(a *MockAnalyticsRunner) {
expected := analytics.SetUIDObject{
Status: 400,
Bidder: "pubmatic",
UID: "",
- Errors: []error{errors.New("unexpected end of JSON input")},
+ Errors: []error{errCookieSyncAccountConfigMalformed},
Success: false,
}
a.On("LogSetUIDObject", &expected).Once()
diff --git a/endpoints/version.go b/endpoints/version.go
index 00d894963e6..0a837fd8bc3 100644
--- a/endpoints/version.go
+++ b/endpoints/version.go
@@ -5,6 +5,7 @@ import (
"net/http"
"github.com/golang/glog"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
const versionEndpointValueNotSet = "not-set"
@@ -29,7 +30,7 @@ func prepareVersionEndpointResponse(version, revision string) (json.RawMessage,
revision = versionEndpointValueNotSet
}
- return json.Marshal(struct {
+ return jsonutil.Marshal(struct {
Revision string `json:"revision"`
Version string `json:"version"`
}{
diff --git a/errortypes/code.go b/errortypes/code.go
index 5cbf3f860b4..1de5e648cef 100644
--- a/errortypes/code.go
+++ b/errortypes/code.go
@@ -15,6 +15,8 @@ const (
MalformedAcctErrorCode
ModuleRejectionErrorCode
TmaxTimeoutErrorCode
+ FailedToMarshalErrorCode
+ FailedToUnmarshalErrorCode
)
// Defines numeric codes for well-known warnings.
diff --git a/errortypes/errortypes.go b/errortypes/errortypes.go
index 18b70634c48..d31c4166b06 100644
--- a/errortypes/errortypes.go
+++ b/errortypes/errortypes.go
@@ -217,3 +217,37 @@ func (err *Warning) Code() int {
func (err *Warning) Severity() Severity {
return SeverityWarning
}
+
+// FailedToUnmarshal should be used to represent errors that occur when unmarshaling raw json.
+type FailedToUnmarshal struct {
+ Message string
+}
+
+func (err *FailedToUnmarshal) Error() string {
+ return err.Message
+}
+
+func (err *FailedToUnmarshal) Code() int {
+ return FailedToUnmarshalErrorCode
+}
+
+func (err *FailedToUnmarshal) Severity() Severity {
+ return SeverityFatal
+}
+
+// FailedToMarshal should be used to represent errors that occur when marshaling to a byte slice.
+type FailedToMarshal struct {
+ Message string
+}
+
+func (err *FailedToMarshal) Error() string {
+ return err.Message
+}
+
+func (err *FailedToMarshal) Code() int {
+ return FailedToMarshalErrorCode
+}
+
+func (err *FailedToMarshal) Severity() Severity {
+ return SeverityFatal
+}
diff --git a/exchange/auction.go b/exchange/auction.go
index b2d6eb571ca..abbf56ba799 100644
--- a/exchange/auction.go
+++ b/exchange/auction.go
@@ -2,7 +2,6 @@ package exchange
import (
"context"
- "encoding/json"
"encoding/xml"
"errors"
"fmt"
@@ -17,6 +16,7 @@ import (
"github.com/prebid/prebid-server/exchange/entities"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
const (
@@ -83,7 +83,7 @@ func (d *DebugLog) PutDebugLogError(cache prebid_cache_client.Client, timeout in
d.CacheKey = rawUUID.String()
}
- data, err := json.Marshal(d.CacheString)
+ data, err := jsonutil.Marshal(d.CacheString)
if err != nil {
return err
}
@@ -244,7 +244,7 @@ func (a *auction) doCache(ctx context.Context, cache prebid_cache_client.Client,
}
}
if bids {
- if jsonBytes, err := json.Marshal(topBid.Bid); err == nil {
+ if jsonBytes, err := jsonutil.Marshal(topBid.Bid); err == nil {
jsonBytes, err = evTracking.modifyBidJSON(topBid, bidderName, jsonBytes)
if err != nil {
errs = append(errs, err)
@@ -265,7 +265,7 @@ func (a *auction) doCache(ctx context.Context, cache prebid_cache_client.Client,
}
if vast && topBid.BidType == openrtb_ext.BidTypeVideo {
vastXML := makeVAST(topBid.Bid)
- if jsonBytes, err := json.Marshal(vastXML); err == nil {
+ if jsonBytes, err := jsonutil.Marshal(vastXML); err == nil {
if useCustomCacheKey {
toCache = append(toCache, prebid_cache_client.Cacheable{
Type: prebid_cache_client.TypeXML,
@@ -292,7 +292,7 @@ func (a *auction) doCache(ctx context.Context, cache prebid_cache_client.Client,
if len(toCache) > 0 && debugLog != nil && debugLog.DebugEnabledOrOverridden {
debugLog.CacheKey = hbCacheID
debugLog.BuildCacheString()
- if jsonBytes, err := json.Marshal(debugLog.CacheString); err == nil {
+ if jsonBytes, err := jsonutil.Marshal(debugLog.CacheString); err == nil {
toCache = append(toCache, prebid_cache_client.Cacheable{
Type: debugLog.CacheType,
Data: jsonBytes,
diff --git a/exchange/auction_test.go b/exchange/auction_test.go
index ad0f8d4a72c..199b2abba77 100644
--- a/exchange/auction_test.go
+++ b/exchange/auction_test.go
@@ -2,7 +2,6 @@ package exchange
import (
"context"
- "encoding/json"
"encoding/xml"
"fmt"
"os"
@@ -17,6 +16,7 @@ import (
"github.com/prebid/prebid-server/exchange/entities"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/prebid_cache_client"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
@@ -179,7 +179,7 @@ func loadCacheSpec(filename string) (*cacheSpec, error) {
}
var spec cacheSpec
- if err := json.Unmarshal(specData, &spec); err != nil {
+ if err := jsonutil.UnmarshalValid(specData, &spec); err != nil {
return nil, fmt.Errorf("Failed to unmarshal JSON from file: %v", err)
}
@@ -286,18 +286,18 @@ func runCacheSpec(t *testing.T, fileDisplayName string, specData *cacheSpec) {
for i, expectedCacheable := range specData.ExpectedCacheables {
found := false
var expectedData interface{}
- if err := json.Unmarshal(expectedCacheable.Data, &expectedData); err != nil {
+ if err := jsonutil.UnmarshalValid(expectedCacheable.Data, &expectedData); err != nil {
t.Fatalf("Failed to decode expectedCacheables[%d].value: %v", i, err)
}
if s, ok := expectedData.(string); ok && expectedCacheable.Type == prebid_cache_client.TypeJSON {
// decode again if we have pre-encoded json string values
- if err := json.Unmarshal([]byte(s), &expectedData); err != nil {
+ if err := jsonutil.UnmarshalValid([]byte(s), &expectedData); err != nil {
t.Fatalf("Failed to re-decode expectedCacheables[%d].value :%v", i, err)
}
}
for j, cachedItem := range cache.items {
var actualData interface{}
- if err := json.Unmarshal(cachedItem.Data, &actualData); err != nil {
+ if err := jsonutil.UnmarshalValid(cachedItem.Data, &actualData); err != nil {
t.Fatalf("Failed to decode actual cache[%d].value: %s", j, err)
}
if assert.ObjectsAreEqual(expectedData, actualData) &&
diff --git a/exchange/bidder.go b/exchange/bidder.go
index 40135787b25..677743801f3 100644
--- a/exchange/bidder.go
+++ b/exchange/bidder.go
@@ -33,6 +33,7 @@ import (
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/metrics"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"golang.org/x/net/context/ctxhttp"
)
@@ -287,7 +288,7 @@ func (bidder *bidderAdapter) requestBid(ctx context.Context, bidderRequest Bidde
errs = append(errs, moreErrs...)
if nativeMarkup != nil {
- markup, err := json.Marshal(*nativeMarkup)
+ markup, err := jsonutil.Marshal(*nativeMarkup)
if err != nil {
errs = append(errs, err)
} else {
@@ -406,7 +407,7 @@ func (bidder *bidderAdapter) requestBid(ctx context.Context, bidderRequest Bidde
func addNativeTypes(bid *openrtb2.Bid, request *openrtb2.BidRequest) (*nativeResponse.Response, []error) {
var errs []error
var nativeMarkup *nativeResponse.Response
- if err := json.Unmarshal(json.RawMessage(bid.AdM), &nativeMarkup); err != nil || len(nativeMarkup.Assets) == 0 {
+ if err := jsonutil.UnmarshalValid(json.RawMessage(bid.AdM), &nativeMarkup); err != nil || len(nativeMarkup.Assets) == 0 {
// Some bidders are returning non-IAB compliant native markup. In this case Prebid server will not be able to add types. E.g Facebook
return nil, errs
}
@@ -418,7 +419,7 @@ func addNativeTypes(bid *openrtb2.Bid, request *openrtb2.BidRequest) (*nativeRes
}
var nativePayload nativeRequests.Request
- if err := json.Unmarshal(json.RawMessage((*nativeImp).Request), &nativePayload); err != nil {
+ if err := jsonutil.UnmarshalValid(json.RawMessage((*nativeImp).Request), &nativePayload); err != nil {
errs = append(errs, err)
}
@@ -636,7 +637,7 @@ func (bidder *bidderAdapter) doTimeoutNotification(timeoutBidder adapters.Timeou
}
}
} else if bidder.config.Debug.TimeoutNotification.Log {
- reqJSON, err := json.Marshal(req)
+ reqJSON, err := jsonutil.Marshal(req)
var msg string
if err == nil {
msg = fmt.Sprintf("TimeoutNotification: Failed to generate timeout request: error(%s), bidder request(%s)", errL[0].Error(), string(reqJSON))
diff --git a/exchange/bidder_test.go b/exchange/bidder_test.go
index 09c811ba9c6..b7203e33b17 100644
--- a/exchange/bidder_test.go
+++ b/exchange/bidder_test.go
@@ -31,6 +31,7 @@ import (
"github.com/prebid/prebid-server/metrics"
metricsConfig "github.com/prebid/prebid-server/metrics/config"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/version"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@@ -856,7 +857,7 @@ func TestMultiCurrencies(t *testing.T) {
mockedHTTPServer := httptest.NewServer(http.HandlerFunc(
func(rw http.ResponseWriter, req *http.Request) {
- b, err := json.Marshal(tc.rates)
+ b, err := jsonutil.Marshal(tc.rates)
if err == nil {
rw.WriteHeader(http.StatusOK)
rw.Write(b)
@@ -1177,7 +1178,7 @@ func TestMultiCurrencies_RequestCurrencyPick(t *testing.T) {
mockedHTTPServer := httptest.NewServer(http.HandlerFunc(
func(rw http.ResponseWriter, req *http.Request) {
- b, err := json.Marshal(tc.rates)
+ b, err := jsonutil.Marshal(tc.rates)
if err == nil {
rw.WriteHeader(http.StatusOK)
rw.Write(b)
@@ -2344,7 +2345,7 @@ func (bidder *goodSingleBidderWithStoredBidResp) MakeRequests(request *openrtb2.
func (bidder *goodSingleBidderWithStoredBidResp) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
var bidResp openrtb2.BidResponse
- if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+ if err := jsonutil.UnmarshalValid(response.Body, &bidResp); err != nil {
return nil, []error{err}
}
bidResponse := adapters.NewBidderResponseWithBidsCapacity(5)
diff --git a/exchange/events.go b/exchange/events.go
index e4f6b0d503f..fb535f6f70e 100644
--- a/exchange/events.go
+++ b/exchange/events.go
@@ -1,7 +1,6 @@
package exchange
import (
- "encoding/json"
"time"
"github.com/prebid/prebid-server/exchange/entities"
@@ -11,6 +10,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/endpoints/events"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// eventTracking has configuration fields needed for adding event tracking to an auction response
@@ -91,7 +91,7 @@ func (ev *eventTracking) modifyBidJSON(pbsBid *entities.PbsOrtbBid, bidderName o
winEventURL = ev.makeEventURL(analytics.Win, pbsBid, bidderName)
}
// wurl attribute is not in the schema, so we have to patch
- patch, err := json.Marshal(map[string]string{"wurl": winEventURL})
+ patch, err := jsonutil.Marshal(map[string]string{"wurl": winEventURL})
if err != nil {
return jsonBytes, err
}
diff --git a/exchange/exchange.go b/exchange/exchange.go
index a8c76a5ebb1..6ebde7dca9d 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -35,6 +35,7 @@ import (
"github.com/prebid/prebid-server/stored_requests"
"github.com/prebid/prebid-server/stored_responses"
"github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/maputil"
"github.com/buger/jsonparser"
@@ -278,7 +279,7 @@ func (e *exchange) HoldAuction(ctx context.Context, r *AuctionRequest, debugLog
if err := r.BidRequestWrapper.RebuildRequest(); err != nil {
return nil, err
}
- resolvedBidReq, err := json.Marshal(r.BidRequestWrapper.BidRequest)
+ resolvedBidReq, err := jsonutil.Marshal(r.BidRequestWrapper.BidRequest)
if err != nil {
return nil, err
}
@@ -442,7 +443,7 @@ func (e *exchange) HoldAuction(ctx context.Context, r *AuctionRequest, debugLog
bidResponseExt = e.makeExtBidResponse(adapterBids, adapterExtra, *r, responseDebugAllow, requestExtPrebid.Passthrough, fledge, errs)
if debugLog.DebugEnabledOrOverridden {
- if bidRespExtBytes, err := json.Marshal(bidResponseExt); err == nil {
+ if bidRespExtBytes, err := jsonutil.Marshal(bidResponseExt); err == nil {
debugLog.Data.Response = string(bidRespExtBytes)
} else {
debugLog.Data.Response = "Unable to marshal response ext for debugging"
@@ -463,7 +464,7 @@ func (e *exchange) HoldAuction(ctx context.Context, r *AuctionRequest, debugLog
if debugLog.DebugEnabledOrOverridden {
- if bidRespExtBytes, err := json.Marshal(bidResponseExt); err == nil {
+ if bidRespExtBytes, err := jsonutil.Marshal(bidResponseExt); err == nil {
debugLog.Data.Response = string(bidRespExtBytes)
} else {
debugLog.Data.Response = "Unable to marshal response ext for debugging"
@@ -1292,7 +1293,7 @@ func makeBidExtJSON(ext json.RawMessage, prebid *openrtb_ext.ExtBidPrebid, impEx
var extMap map[string]interface{}
if len(ext) != 0 {
- if err := json.Unmarshal(ext, &extMap); err != nil {
+ if err := jsonutil.Unmarshal(ext, &extMap); err != nil {
return nil, err
}
} else {
@@ -1316,7 +1317,7 @@ func makeBidExtJSON(ext json.RawMessage, prebid *openrtb_ext.ExtBidPrebid, impEx
Meta openrtb_ext.ExtBidPrebidMeta `json:"meta"`
} `json:"prebid"`
}{}
- if err := json.Unmarshal(ext, &metaContainer); err != nil {
+ if err := jsonutil.Unmarshal(ext, &metaContainer); err != nil {
return nil, fmt.Errorf("error validaing response from server, %s", err)
}
prebid.Meta = &metaContainer.Prebid.Meta
@@ -1337,7 +1338,7 @@ func makeBidExtJSON(ext json.RawMessage, prebid *openrtb_ext.ExtBidPrebid, impEx
}
}
extMap[openrtb_ext.PrebidExtKey] = prebid
- return json.Marshal(extMap)
+ return jsonutil.Marshal(extMap)
}
// If bid got cached inside `(a *auction) doCache(ctx context.Context, cache prebid_cache_client.Client, targData *targetData, bidRequest *openrtb2.BidRequest, ttlBuffer int64, defaultTTLs *config.DefaultTTLs, bidCategory map[string]string)`,
@@ -1441,7 +1442,7 @@ func buildStoredAuctionResponse(storedAuctionResponses map[string]json.RawMessag
for impId, storedResp := range storedAuctionResponses {
var seatBids []openrtb2.SeatBid
- if err := json.Unmarshal(storedResp, &seatBids); err != nil {
+ if err := jsonutil.UnmarshalValid(storedResp, &seatBids); err != nil {
return nil, nil, nil, err
}
for _, seat := range seatBids {
@@ -1460,7 +1461,7 @@ func buildStoredAuctionResponse(storedAuctionResponses map[string]json.RawMessag
if seat.Ext != nil {
var seatExt openrtb_ext.ExtBidResponse
- if err := json.Unmarshal(seat.Ext, &seatExt); err != nil {
+ if err := jsonutil.Unmarshal(seat.Ext, &seatExt); err != nil {
return nil, nil, nil, err
}
// add in FLEDGE response with impId substituted
diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go
index e57900cdfee..ff989bad91d 100644
--- a/exchange/exchange_test.go
+++ b/exchange/exchange_test.go
@@ -41,6 +41,7 @@ import (
"github.com/prebid/prebid-server/stored_requests"
"github.com/prebid/prebid-server/stored_requests/backends/file_fetcher"
"github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@@ -379,7 +380,7 @@ func TestDebugBehaviour(t *testing.T) {
assert.NotNilf(t, outBidResponse.Ext, "%s. outBidResponse.Ext should not be nil \n", test.desc)
assert.False(t, auctionRequest.BidderResponseStartTime.IsZero())
actualExt := &openrtb_ext.ExtBidResponse{}
- err = json.Unmarshal(outBidResponse.Ext, actualExt)
+ err = jsonutil.UnmarshalValid(outBidResponse.Ext, actualExt)
assert.NoErrorf(t, err, "%s. \"ext\" JSON field could not be unmarshaled. err: \"%v\" \n outBidResponse.Ext: \"%s\" \n", test.desc, err, outBidResponse.Ext)
assert.NotEmpty(t, actualExt.Prebid, "%s. ext.prebid should not be empty")
@@ -541,7 +542,7 @@ func TestTwoBiddersDebugDisabledAndEnabled(t *testing.T) {
assert.False(t, auctionRequest.BidderResponseStartTime.IsZero())
actualExt := &openrtb_ext.ExtBidResponse{}
- err = json.Unmarshal(outBidResponse.Ext, actualExt)
+ err = jsonutil.UnmarshalValid(outBidResponse.Ext, actualExt)
assert.NoErrorf(t, err, "JSON field unmarshaling err. ")
assert.NotEmpty(t, actualExt.Prebid, "ext.prebid should not be empty")
@@ -1143,7 +1144,7 @@ func TestGetAuctionCurrencyRates(t *testing.T) {
for _, tc := range testCases {
// Test setup:
- jsonPbsRates, err := json.Marshal(tc.given.pbsRates)
+ jsonPbsRates, err := jsonutil.Marshal(tc.given.pbsRates)
if err != nil {
t.Fatalf("Failed to marshal PBS rates: %v", err)
}
@@ -1627,7 +1628,7 @@ func TestBidReturnsCreative(t *testing.T) {
assert.Equal(t, test.expectedCreativeMarkup, resultingBids[0].AdM, "%s. Ad markup string doesn't match expected \n", test.description)
var bidExt openrtb_ext.ExtBid
- json.Unmarshal(resultingBids[0].Ext, &bidExt)
+ jsonutil.UnmarshalValid(resultingBids[0].Ext, &bidExt)
assert.Equal(t, 0, bidExt.Prebid.DealPriority, "%s. Test should have DealPriority set to 0", test.description)
assert.Equal(t, false, bidExt.Prebid.DealTierSatisfied, "%s. Test should have DealTierSatisfied set to false", test.description)
}
@@ -1966,7 +1967,7 @@ func TestBidResponseImpExtInfo(t *testing.T) {
impExtInfo["some-impression-id"] = ImpExtInfo{
true,
[]byte(`{"video":{"h":480,"mimes":["video/mp4"]}}`),
- json.RawMessage(`{"imp_passthrough_val": 1}`)}
+ json.RawMessage(`{"imp_passthrough_val":1}`)}
expectedBidResponseExt := `{"origbidcpm":0,"prebid":{"type":"video","passthrough":{"imp_passthrough_val":1}},"storedrequestattributes":{"h":480,"mimes":["video/mp4"]}}`
@@ -2284,7 +2285,7 @@ func loadFile(filename string) (*exchangeSpec, error) {
}
var spec exchangeSpec
- if err := json.Unmarshal(specData, &spec); err != nil {
+ if err := jsonutil.UnmarshalValid(specData, &spec); err != nil {
return nil, fmt.Errorf("Failed to unmarshal JSON from file: %v", err)
}
@@ -2381,7 +2382,7 @@ func runSpec(t *testing.T, filename string, spec *exchangeSpec) {
auctionRequest.Account.DefaultBidLimit = spec.MultiBid.AccountMaxBid
requestExt := &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(spec.IncomingRequest.OrtbRequest.Ext, requestExt)
+ err := jsonutil.UnmarshalValid(spec.IncomingRequest.OrtbRequest.Ext, requestExt)
assert.NoError(t, err, "invalid request ext")
validatedMultiBids, errs := openrtb_ext.ValidateAndBuildExtMultiBid(&requestExt.Prebid)
for _, err := range errs { // same as in validateRequestExt().
@@ -2392,7 +2393,7 @@ func runSpec(t *testing.T, filename string, spec *exchangeSpec) {
}
requestExt.Prebid.MultiBid = validatedMultiBids
- updateReqExt, err := json.Marshal(requestExt)
+ updateReqExt, err := jsonutil.Marshal(requestExt)
assert.NoError(t, err, "invalid request ext")
auctionRequest.BidRequestWrapper.Ext = updateReqExt
}
@@ -2455,7 +2456,7 @@ func runSpec(t *testing.T, filename string, spec *exchangeSpec) {
actualPassthrough := ""
actualBidRespExt := &openrtb_ext.ExtBidResponse{}
if bid.Ext != nil {
- if err := json.Unmarshal(bid.Ext, actualBidRespExt); err != nil {
+ if err := jsonutil.UnmarshalValid(bid.Ext, actualBidRespExt); err != nil {
assert.NoError(t, err, fmt.Sprintf("Error when unmarshalling: %s", err))
}
if actualBidRespExt.Prebid != nil {
@@ -2464,7 +2465,7 @@ func runSpec(t *testing.T, filename string, spec *exchangeSpec) {
}
expectedBidRespExt := &openrtb_ext.ExtBidResponse{}
if spec.Response.Ext != nil {
- if err := json.Unmarshal(spec.Response.Ext, expectedBidRespExt); err != nil {
+ if err := jsonutil.UnmarshalValid(spec.Response.Ext, expectedBidRespExt); err != nil {
assert.NoError(t, err, fmt.Sprintf("Error when unmarshalling: %s", err))
}
if expectedBidRespExt.Prebid != nil {
@@ -2495,11 +2496,11 @@ func runSpec(t *testing.T, filename string, spec *exchangeSpec) {
actualBidRespExt := &openrtb_ext.ExtBidResponse{}
expectedBidRespExt := &openrtb_ext.ExtBidResponse{}
if bid.Ext != nil {
- if err := json.Unmarshal(bid.Ext, actualBidRespExt); err != nil {
+ if err := jsonutil.UnmarshalValid(bid.Ext, actualBidRespExt); err != nil {
assert.NoError(t, err, fmt.Sprintf("Error when unmarshalling: %s", err))
}
}
- if err := json.Unmarshal(spec.Response.Ext, expectedBidRespExt); err != nil {
+ if err := jsonutil.UnmarshalValid(spec.Response.Ext, expectedBidRespExt); err != nil {
assert.NoError(t, err, fmt.Sprintf("Error when unmarshalling: %s", err))
}
@@ -2529,7 +2530,7 @@ func extractResponseTimes(t *testing.T, context string, bid *openrtb2.BidRespons
return nil
} else {
responseTimes := make(map[string]int)
- if err := json.Unmarshal(data, &responseTimes); err != nil {
+ if err := jsonutil.UnmarshalValid(data, &responseTimes); err != nil {
t.Errorf("%s: Failed to unmarshal ext.responsetimemillis into map[string]int: %v", context, err)
return nil
}
@@ -4180,37 +4181,29 @@ func TestMakeBidExtJSON(t *testing.T) {
description: "Invalid extension, valid extBidPrebid and valid imp ext info",
ext: json.RawMessage(`{invalid json}`),
extBidPrebid: openrtb_ext.ExtBidPrebid{Type: openrtb_ext.BidType("video")},
- impExtInfo: map[string]ImpExtInfo{"test_imp_id": {true, []byte(`{"video":{"h":480,"mimes":["video/mp4"]}}`), json.RawMessage(`"prebid": {"passthrough": {"imp_passthrough_val": some_val}}"`)}},
expectedBidExt: ``,
- expectedErrMessage: "invalid character",
- },
- {
- description: "Valid extension, empty extBidPrebid and invalid imp ext info",
- ext: json.RawMessage(`{"video":{"h":100}}`),
- extBidPrebid: openrtb_ext.ExtBidPrebid{},
- impExtInfo: map[string]ImpExtInfo{"test_imp_id": {true, []byte(`{"video":{!}}`), nil}},
- expectedBidExt: ``,
- expectedErrMessage: "invalid character",
+ expectedErrMessage: "expects \" or n, but found i",
},
{
description: "Meta - Invalid",
ext: json.RawMessage(`{"prebid":{"meta":{"brandId":"foo"}}}`), // brandId should be an int, but is a string in this test case
extBidPrebid: openrtb_ext.ExtBidPrebid{Type: openrtb_ext.BidType("banner")},
impExtInfo: nil,
- expectedErrMessage: "error validaing response from server, json: cannot unmarshal string into Go struct field ExtBidPrebidMeta.prebid.meta.brandId of type int",
+ expectedErrMessage: "error validaing response from server, cannot unmarshal openrtb_ext.ExtBidPrebidMeta.BrandID: unexpected character: \xff",
},
- // add invalid
}
for _, test := range testCases {
- result, err := makeBidExtJSON(test.ext, &test.extBidPrebid, test.impExtInfo, "test_imp_id", test.origbidcpm, test.origbidcur)
+ t.Run(test.description, func(t *testing.T) {
+ result, err := makeBidExtJSON(test.ext, &test.extBidPrebid, test.impExtInfo, "test_imp_id", test.origbidcpm, test.origbidcur)
- if test.expectedErrMessage == "" {
- assert.JSONEq(t, test.expectedBidExt, string(result), "Incorrect result")
- assert.NoError(t, err, "Error should not be returned")
- } else {
- assert.Contains(t, err.Error(), test.expectedErrMessage, "incorrect error message")
- }
+ if test.expectedErrMessage == "" {
+ assert.JSONEq(t, test.expectedBidExt, string(result), "Incorrect result")
+ assert.NoError(t, err, "Error should not be returned")
+ } else {
+ assert.Contains(t, err.Error(), test.expectedErrMessage, "incorrect error message")
+ }
+ })
}
}
@@ -5343,12 +5336,12 @@ func (b *capturingRequestBidder) requestBid(ctx context.Context, bidderRequest B
func diffOrtbRequests(t *testing.T, description string, expected *openrtb2.BidRequest, actual *openrtb2.BidRequest) {
t.Helper()
- actualJSON, err := json.Marshal(actual)
+ actualJSON, err := jsonutil.Marshal(actual)
if err != nil {
t.Fatalf("%s failed to marshal actual BidRequest into JSON. %v", description, err)
}
- expectedJSON, err := json.Marshal(expected)
+ expectedJSON, err := jsonutil.Marshal(expected)
if err != nil {
t.Fatalf("%s failed to marshal expected BidRequest into JSON. %v", description, err)
}
@@ -5366,12 +5359,12 @@ func diffOrtbResponses(t *testing.T, description string, expected *openrtb2.BidR
// this implementation detail, I'm cutting a corner and ignoring it here.
actualSeats := mapifySeatBids(t, description, actual.SeatBid)
expectedSeats := mapifySeatBids(t, description, expected.SeatBid)
- actualJSON, err := json.Marshal(actualSeats)
+ actualJSON, err := jsonutil.Marshal(actualSeats)
if err != nil {
t.Fatalf("%s failed to marshal actual BidResponse into JSON. %v", description, err)
}
- expectedJSON, err := json.Marshal(expectedSeats)
+ expectedJSON, err := jsonutil.Marshal(expectedSeats)
if err != nil {
t.Fatalf("%s failed to marshal expected BidResponse into JSON. %v", description, err)
}
@@ -5501,13 +5494,13 @@ func getInfoFromImp(req *openrtb_ext.RequestWrapper) (json.RawMessage, string, e
impID := imp.ID
var bidderExts map[string]json.RawMessage
- if err := json.Unmarshal(imp.Ext, &bidderExts); err != nil {
+ if err := jsonutil.UnmarshalValid(imp.Ext, &bidderExts); err != nil {
return nil, "", err
}
var extPrebid openrtb_ext.ExtImpPrebid
if bidderExts[openrtb_ext.PrebidExtKey] != nil {
- if err := json.Unmarshal(bidderExts[openrtb_ext.PrebidExtKey], &extPrebid); err != nil {
+ if err := jsonutil.UnmarshalValid(bidderExts[openrtb_ext.PrebidExtKey], &extPrebid); err != nil {
return nil, "", err
}
}
diff --git a/exchange/targeting_test.go b/exchange/targeting_test.go
index a5f49689349..25c6ea1714a 100644
--- a/exchange/targeting_test.go
+++ b/exchange/targeting_test.go
@@ -16,6 +16,7 @@ import (
"github.com/prebid/prebid-server/hooks/hookexecution"
metricsConfig "github.com/prebid/prebid-server/metrics/config"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/openrtb/v19/openrtb2"
@@ -182,7 +183,7 @@ func buildParams(t *testing.T, mockBids map[openrtb_ext.BidderName][]*openrtb2.B
paramsPrebid["bidder"] = paramsPrebidBidders
params["prebid"] = paramsPrebid
- ext, err := json.Marshal(params)
+ ext, err := jsonutil.Marshal(params)
if err != nil {
t.Fatalf("Failed to make imp exts: %v", err)
}
@@ -224,7 +225,7 @@ func buildBidMap(seatBids []openrtb2.SeatBid, numBids int) map[string]*openrtb2.
func parseTargets(t *testing.T, bid *openrtb2.Bid) map[string]string {
t.Helper()
var parsed openrtb_ext.ExtBid
- if err := json.Unmarshal(bid.Ext, &parsed); err != nil {
+ if err := jsonutil.UnmarshalValid(bid.Ext, &parsed); err != nil {
t.Fatalf("Unexpected error parsing targeting params: %v", err)
}
return parsed.Prebid.Targeting
diff --git a/exchange/utils.go b/exchange/utils.go
index 70988fbf7b9..c7acfaefce3 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -26,6 +26,7 @@ import (
"github.com/prebid/prebid-server/privacy/lmt"
"github.com/prebid/prebid-server/schain"
"github.com/prebid/prebid-server/stored_responses"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
)
@@ -282,7 +283,7 @@ func ExtractReqExtBidderParamsMap(bidRequest *openrtb2.BidRequest) (map[string]j
reqExt := &openrtb_ext.ExtRequest{}
if len(bidRequest.Ext) > 0 {
- err := json.Unmarshal(bidRequest.Ext, &reqExt)
+ err := jsonutil.Unmarshal(bidRequest.Ext, &reqExt)
if err != nil {
return nil, fmt.Errorf("error decoding Request.ext : %s", err.Error())
}
@@ -293,7 +294,7 @@ func ExtractReqExtBidderParamsMap(bidRequest *openrtb2.BidRequest) (map[string]j
}
var bidderParams map[string]json.RawMessage
- err := json.Unmarshal(reqExt.Prebid.BidderParams, &bidderParams)
+ err := jsonutil.Unmarshal(reqExt.Prebid.BidderParams, &bidderParams)
if err != nil {
return nil, err
}
@@ -413,7 +414,7 @@ func buildRequestExtForBidder(bidder string, requestExt json.RawMessage, request
}
// Marshal New Prebid Object
- prebidJson, err := json.Marshal(prebid)
+ prebidJson, err := jsonutil.Marshal(prebid)
if err != nil {
return nil, err
}
@@ -421,7 +422,7 @@ func buildRequestExtForBidder(bidder string, requestExt json.RawMessage, request
// Parse Existing Ext
extMap := make(map[string]json.RawMessage)
if len(requestExt) != 0 {
- if err := json.Unmarshal(requestExt, &extMap); err != nil {
+ if err := jsonutil.Unmarshal(requestExt, &extMap); err != nil {
return nil, err
}
}
@@ -434,7 +435,7 @@ func buildRequestExtForBidder(bidder string, requestExt json.RawMessage, request
}
if len(extMap) > 0 {
- return json.Marshal(extMap)
+ return jsonutil.Marshal(extMap)
} else {
return nil, nil
}
@@ -518,7 +519,7 @@ func extractBuyerUIDs(user *openrtb2.User) (map[string]string, error) {
}
var userExt openrtb_ext.ExtUser
- if err := json.Unmarshal(user.Ext, &userExt); err != nil {
+ if err := jsonutil.Unmarshal(user.Ext, &userExt); err != nil {
return nil, err
}
if userExt.Prebid == nil {
@@ -532,7 +533,7 @@ func extractBuyerUIDs(user *openrtb2.User) (map[string]string, error) {
// Remarshal (instead of removing) if the ext has other known fields
if userExt.Consent != "" || len(userExt.Eids) > 0 {
- if newUserExtBytes, err := json.Marshal(userExt); err != nil {
+ if newUserExtBytes, err := jsonutil.Marshal(userExt); err != nil {
return nil, err
} else {
user.Ext = newUserExtBytes
@@ -556,20 +557,20 @@ func splitImps(imps []openrtb2.Imp) (map[string][]openrtb2.Imp, error) {
for i, imp := range imps {
var impExt map[string]json.RawMessage
- if err := json.Unmarshal(imp.Ext, &impExt); err != nil {
+ if err := jsonutil.UnmarshalValid(imp.Ext, &impExt); err != nil {
return nil, fmt.Errorf("invalid json for imp[%d]: %v", i, err)
}
var impExtPrebid map[string]json.RawMessage
if impExtPrebidJSON, exists := impExt[openrtb_ext.PrebidExtKey]; exists {
// validation already performed by impExt unmarshal. no error is possible here, proven by tests.
- json.Unmarshal(impExtPrebidJSON, &impExtPrebid)
+ jsonutil.Unmarshal(impExtPrebidJSON, &impExtPrebid)
}
var impExtPrebidBidder map[string]json.RawMessage
if impExtPrebidBidderJSON, exists := impExtPrebid[openrtb_ext.PrebidExtBidderKey]; exists {
// validation already performed by impExt unmarshal. no error is possible here, proven by tests.
- json.Unmarshal(impExtPrebidBidderJSON, &impExtPrebidBidder)
+ jsonutil.Unmarshal(impExtPrebidBidderJSON, &impExtPrebidBidder)
}
sanitizedImpExt, err := createSanitizedImpExt(impExt, impExtPrebid)
@@ -582,7 +583,7 @@ func splitImps(imps []openrtb2.Imp) (map[string][]openrtb2.Imp, error) {
sanitizedImpExt[openrtb_ext.PrebidExtBidderKey] = bidderExt
- impExtJSON, err := json.Marshal(sanitizedImpExt)
+ impExtJSON, err := jsonutil.Marshal(sanitizedImpExt)
if err != nil {
return nil, fmt.Errorf("unable to remove other bidder fields for imp[%d]: cannot marshal ext: %v", i, err)
}
@@ -622,7 +623,7 @@ func createSanitizedImpExt(impExt, impExtPrebid map[string]json.RawMessage) (map
// marshal sanitized imp[].ext.prebid
if len(sanitizedImpPrebidExt) > 0 {
- if impExtPrebidJSON, err := json.Marshal(sanitizedImpPrebidExt); err == nil {
+ if impExtPrebidJSON, err := jsonutil.Marshal(sanitizedImpPrebidExt); err == nil {
sanitizedImpExt[openrtb_ext.PrebidExtKey] = impExtPrebidJSON
} else {
return nil, fmt.Errorf("cannot marshal ext.prebid: %v", err)
@@ -686,7 +687,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
// low level unmarshal to preserve other request.user.ext values. prebid server is non-destructive.
var userExt map[string]json.RawMessage
- if err := json.Unmarshal(request.User.Ext, &userExt); err != nil {
+ if err := jsonutil.Unmarshal(request.User.Ext, &userExt); err != nil {
return err
}
@@ -696,7 +697,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
}
var eids []openrtb2.EID
- if err := json.Unmarshal(eidsJSON, &eids); err != nil {
+ if err := jsonutil.Unmarshal(eidsJSON, &eids); err != nil {
return err
}
@@ -739,7 +740,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
if len(eidsAllowed) == 0 {
delete(userExt, "eids")
} else {
- eidsRaw, err := json.Marshal(eidsAllowed)
+ eidsRaw, err := jsonutil.Marshal(eidsAllowed)
if err != nil {
return err
}
@@ -752,7 +753,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
return nil
}
- userExtJSON, err := json.Marshal(userExt)
+ userExtJSON, err := jsonutil.Marshal(userExt)
if err != nil {
return err
}
@@ -781,7 +782,7 @@ func resolveBidder(bidder string, requestAliases map[string]string) (openrtb_ext
func parseAliases(orig *openrtb2.BidRequest) (map[string]string, []error) {
var aliases map[string]string
if value, dataType, _, err := jsonparser.Get(orig.Ext, openrtb_ext.PrebidExtKey, "aliases"); dataType == jsonparser.Object && err == nil {
- if err := json.Unmarshal(value, &aliases); err != nil {
+ if err := jsonutil.Unmarshal(value, &aliases); err != nil {
return nil, []error{err}
}
} else if dataType != jsonparser.NotExist && err != jsonparser.KeyPathNotFoundError {
@@ -794,7 +795,7 @@ func parseAliases(orig *openrtb2.BidRequest) (map[string]string, []error) {
func parseAliasesGVLIDs(orig *openrtb2.BidRequest) (map[string]uint16, []error) {
var aliasesGVLIDs map[string]uint16
if value, dataType, _, err := jsonparser.Get(orig.Ext, openrtb_ext.PrebidExtKey, "aliasgvlids"); dataType == jsonparser.Object && err == nil {
- if err := json.Unmarshal(value, &aliasesGVLIDs); err != nil {
+ if err := jsonutil.Unmarshal(value, &aliasesGVLIDs); err != nil {
return nil, []error{err}
}
} else if dataType != jsonparser.NotExist && err != jsonparser.KeyPathNotFoundError {
@@ -1089,7 +1090,7 @@ func getPrebidMediaTypeForBid(bid openrtb2.Bid) (openrtb_ext.BidType, error) {
if bid.Ext != nil {
var bidExt openrtb_ext.ExtBid
- err = json.Unmarshal(bid.Ext, &bidExt)
+ err = jsonutil.Unmarshal(bid.Ext, &bidExt)
if err == nil && bidExt.Prebid != nil {
if bidType, err = openrtb_ext.ParseBidType(string(bidExt.Prebid.Type)); err == nil {
return bidType, nil
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index 1be1aaa8493..b413a6b292e 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -18,6 +18,7 @@ import (
"github.com/prebid/prebid-server/metrics"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/privacy"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@@ -187,21 +188,21 @@ func TestSplitImps(t *testing.T) {
givenImps: []openrtb2.Imp{
{ID: "imp1", Ext: json.RawMessage(`malformed`)},
},
- expectedError: "invalid json for imp[0]: invalid character 'm' looking for beginning of value",
+ expectedError: "invalid json for imp[0]: expect { or n, but found m",
},
{
description: "Malformed imp.ext.prebid",
givenImps: []openrtb2.Imp{
{ID: "imp1", Ext: json.RawMessage(`{"prebid": malformed}`)},
},
- expectedError: "invalid json for imp[0]: invalid character 'm' looking for beginning of value",
+ expectedError: "invalid json for imp[0]: do not know how to skip: 109",
},
{
description: "Malformed imp.ext.prebid.bidder",
givenImps: []openrtb2.Imp{
{ID: "imp1", Ext: json.RawMessage(`{"prebid": {"bidder": malformed}}`)},
},
- expectedError: "invalid json for imp[0]: invalid character 'm' looking for beginning of value",
+ expectedError: "invalid json for imp[0]: do not know how to skip: 109",
},
}
@@ -403,22 +404,6 @@ func TestCreateSanitizedImpExt(t *testing.T) {
},
expectedError: "",
},
- {
- description: "Marshal Error - imp.ext.prebid",
- givenImpExt: map[string]json.RawMessage{
- "prebid": json.RawMessage(`"ignoredInFavorOfSeparatelyUnmarshalledImpExtPrebid"`),
- "data": json.RawMessage(`"anyData"`),
- "context": json.RawMessage(`"anyContext"`),
- "skadn": json.RawMessage(`"anySKAdNetwork"`),
- "gpid": json.RawMessage(`"anyGPID"`),
- "tid": json.RawMessage(`"anyTID"`),
- },
- givenImpExtPrebid: map[string]json.RawMessage{
- "options": json.RawMessage(`malformed`), // String value without quotes.
- },
- expected: nil,
- expectedError: "cannot marshal ext.prebid: json: error calling MarshalJSON for type json.RawMessage: invalid character 'm' looking for beginning of value",
- },
}
for _, test := range testCases {
@@ -592,7 +577,7 @@ func TestExtractAdapterReqBidderParamsMap(t *testing.T) {
name: "malformed req.ext",
givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage("malformed")},
want: nil,
- wantErr: errors.New("error decoding Request.ext : invalid character 'm' looking for beginning of value"),
+ wantErr: errors.New("error decoding Request.ext : expect { or n, but found m"),
},
{
name: "extract bidder params from req.Ext for input request in adapter code",
@@ -1081,7 +1066,7 @@ func TestCleanOpenRTBRequestsCCPAErrors(t *testing.T) {
req.Regs = &openrtb2.Regs{Ext: test.reqRegsExt}
var reqExtStruct openrtb_ext.ExtRequest
- err := json.Unmarshal(req.Ext, &reqExtStruct)
+ err := jsonutil.UnmarshalValid(req.Ext, &reqExtStruct)
assert.NoError(t, err, test.description+":marshal_ext")
auctionReq := AuctionRequest{
@@ -1240,7 +1225,7 @@ func TestCleanOpenRTBRequestsSChain(t *testing.T) {
if test.inExt != nil {
req.Ext = test.inExt
extRequest = &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(req.Ext, extRequest)
+ err := jsonutil.UnmarshalValid(req.Ext, extRequest)
assert.NoErrorf(t, err, test.description+":Error unmarshaling inExt")
}
@@ -1311,7 +1296,7 @@ func TestCleanOpenRTBRequestsBidderParams(t *testing.T) {
if test.inExt != nil {
req.Ext = test.inExt
extRequest = &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(req.Ext, extRequest)
+ err := jsonutil.UnmarshalValid(req.Ext, extRequest)
assert.NoErrorf(t, err, test.description+":Error unmarshaling inExt")
}
@@ -2492,7 +2477,7 @@ func TestBuildRequestExtForBidder(t *testing.T) {
for _, test := range testCases {
requestExtParsed := &openrtb_ext.ExtRequest{}
if test.requestExt != nil {
- err := json.Unmarshal(test.requestExt, requestExtParsed)
+ err := jsonutil.UnmarshalValid(test.requestExt, requestExtParsed)
if !assert.NoError(t, err, test.description+":parse_ext") {
continue
}
@@ -2533,7 +2518,7 @@ func TestBuildRequestExtForBidder_RequestExtMalformed(t *testing.T) {
actualJson, actualErr := buildRequestExtForBidder(bidder, requestExt, requestExtParsed, bidderParams, alternateBidderCodes)
assert.Equal(t, json.RawMessage(nil), actualJson)
- assert.EqualError(t, actualErr, "invalid character 'm' looking for beginning of value")
+ assert.EqualError(t, actualErr, "expect { or n, but found m")
}
// newAdapterAliasBidRequest builds a BidRequest with aliases
@@ -2864,17 +2849,17 @@ func TestRemoveUnpermissionedEidsUnmarshalErrors(t *testing.T) {
{
description: "Malformed Ext",
userExt: json.RawMessage(`malformed`),
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErr: "expect { or n, but found m",
},
{
description: "Malformed Eid Array Type",
userExt: json.RawMessage(`{"eids":[42]}`),
- expectedErr: "json: cannot unmarshal number into Go value of type openrtb2.EID",
+ expectedErr: "cannot unmarshal []openrtb2.EID: expect { or n, but found 4",
},
{
description: "Malformed Eid Item Type",
userExt: json.RawMessage(`{"eids":[{"source":42,"id":"anyID"}]}`),
- expectedErr: "json: cannot unmarshal number into Go struct field EID.source of type string",
+ expectedErr: "cannot unmarshal openrtb2.EID.Source: expects \" or n, but found 4",
},
}
@@ -3088,7 +3073,7 @@ func TestCleanOpenRTBRequestsSChainMultipleBidders(t *testing.T) {
}
extRequest := &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(req.Ext, extRequest)
+ err := jsonutil.UnmarshalValid(req.Ext, extRequest)
assert.NoErrorf(t, err, "Error unmarshaling inExt")
auctionReq := AuctionRequest{
@@ -3172,7 +3157,7 @@ func TestCleanOpenRTBRequestsBidAdjustment(t *testing.T) {
H: 600,
}},
},
- Ext: json.RawMessage(`{"bidder":{"placementId":1}}`),
+ Ext: json.RawMessage(`{"bidder":{"placementId": 1}}`),
}},
},
{
@@ -3200,7 +3185,7 @@ func TestCleanOpenRTBRequestsBidAdjustment(t *testing.T) {
H: 600,
}},
},
- Ext: json.RawMessage(`{"bidder":{"placementId":1}}`),
+ Ext: json.RawMessage(`{"bidder":{"placementId": 1}}`),
}},
},
}
@@ -3635,7 +3620,7 @@ func TestCleanOpenRTBRequestsFilterBidderRequestExt(t *testing.T) {
if test.inExt != nil {
req.Ext = test.inExt
extRequest = &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(req.Ext, extRequest)
+ err := jsonutil.UnmarshalValid(req.Ext, extRequest)
assert.NoErrorf(t, err, test.desc+":Error unmarshaling inExt")
}
@@ -4396,7 +4381,7 @@ func TestGetPrebidMediaTypeForBid(t *testing.T) {
{
description: "Invalid bid ext",
inputBid: openrtb2.Bid{ID: "bidId", ImpID: "impId", Ext: json.RawMessage(`[true`)},
- expectedError: "Failed to parse bid mediatype for impression \"impId\", unexpected end of JSON input",
+ expectedError: "Failed to parse bid mediatype for impression \"impId\", expect { or n, but found [",
},
{
description: "Bid ext is nil",
@@ -4437,7 +4422,7 @@ func TestGetMediaTypeForBid(t *testing.T) {
{
description: "invalid bid ext",
inputBid: openrtb2.Bid{ID: "bidId", ImpID: "impId", Ext: json.RawMessage(`{"prebid"`)},
- expectedError: "Failed to parse bid mediatype for impression \"impId\", unexpected end of JSON input",
+ expectedError: "Failed to parse bid mediatype for impression \"impId\", expect :, but found \x00",
},
{
description: "Valid bid ext with mtype native",
diff --git a/firstpartydata/first_party_data.go b/firstpartydata/first_party_data.go
index b63feb1ec52..b23ba576fcf 100644
--- a/firstpartydata/first_party_data.go
+++ b/firstpartydata/first_party_data.go
@@ -10,6 +10,7 @@ import (
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/ortb"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
)
@@ -215,7 +216,7 @@ func mergeUser(v *openrtb2.User, overrideJSON json.RawMessage) error {
}
// Merge
- if err := json.Unmarshal(overrideJSON, &v); err != nil {
+ if err := jsonutil.Unmarshal(overrideJSON, &v); err != nil {
return err
}
@@ -309,7 +310,7 @@ func mergeSite(v *openrtb2.Site, overrideJSON json.RawMessage, bidderName string
}
// Merge
- if err := json.Unmarshal(overrideJSON, &v); err != nil {
+ if err := jsonutil.Unmarshal(overrideJSON, &v); err != nil {
return err
}
@@ -426,7 +427,7 @@ func mergeApp(v *openrtb2.App, overrideJSON json.RawMessage) error {
}
// Merge
- if err := json.Unmarshal(overrideJSON, &v); err != nil {
+ if err := jsonutil.Unmarshal(overrideJSON, &v); err != nil {
return err
}
diff --git a/firstpartydata/first_party_data_test.go b/firstpartydata/first_party_data_test.go
index ffa05a31d17..61369738bf3 100644
--- a/firstpartydata/first_party_data_test.go
+++ b/firstpartydata/first_party_data_test.go
@@ -10,6 +10,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -481,7 +482,7 @@ func TestExtractBidderConfigFPD(t *testing.T) {
require.NoError(t, err, "Load Test File")
givenRequestExtPrebid := &openrtb_ext.ExtRequestPrebid{}
- err = json.Unmarshal(testFile.InputRequestData, givenRequestExtPrebid)
+ err = jsonutil.UnmarshalValid(testFile.InputRequestData, givenRequestExtPrebid)
require.NoError(t, err, "Cannot Load Test Conditions")
testRequest := &openrtb_ext.RequestExt{}
@@ -537,11 +538,11 @@ func TestResolveFPD(t *testing.T) {
require.NoError(t, err, "Load Test File")
request := &openrtb2.BidRequest{}
- err = json.Unmarshal(testFile.InputRequestData, &request)
+ err = jsonutil.UnmarshalValid(testFile.InputRequestData, &request)
require.NoError(t, err, "Cannot Load Request")
originalRequest := &openrtb2.BidRequest{}
- err = json.Unmarshal(testFile.InputRequestData, &originalRequest)
+ err = jsonutil.UnmarshalValid(testFile.InputRequestData, &originalRequest)
require.NoError(t, err, "Cannot Load Request")
reqExtFPD := make(map[string][]byte)
@@ -554,7 +555,7 @@ func TestResolveFPD(t *testing.T) {
reqFPDSiteContentData := testFile.GlobalFPD[siteContentDataKey]
if len(reqFPDSiteContentData) > 0 {
var siteConData []openrtb2.Data
- err = json.Unmarshal(reqFPDSiteContentData, &siteConData)
+ err = jsonutil.UnmarshalValid(reqFPDSiteContentData, &siteConData)
if err != nil {
t.Errorf("Unable to unmarshal site.content.data:")
}
@@ -564,7 +565,7 @@ func TestResolveFPD(t *testing.T) {
reqFPDAppContentData := testFile.GlobalFPD[appContentDataKey]
if len(reqFPDAppContentData) > 0 {
var appConData []openrtb2.Data
- err = json.Unmarshal(reqFPDAppContentData, &appConData)
+ err = jsonutil.UnmarshalValid(reqFPDAppContentData, &appConData)
if err != nil {
t.Errorf("Unable to unmarshal app.content.data: ")
}
@@ -574,7 +575,7 @@ func TestResolveFPD(t *testing.T) {
reqFPDUserData := testFile.GlobalFPD[userDataKey]
if len(reqFPDUserData) > 0 {
var userData []openrtb2.Data
- err = json.Unmarshal(reqFPDUserData, &userData)
+ err = jsonutil.UnmarshalValid(reqFPDUserData, &userData)
if err != nil {
t.Errorf("Unable to unmarshal app.content.data: ")
}
@@ -640,14 +641,14 @@ func TestExtractFPDForBidders(t *testing.T) {
require.NoError(t, err, "Load Test File")
var expectedRequest openrtb2.BidRequest
- err = json.Unmarshal(testFile.OutputRequestData, &expectedRequest)
+ err = jsonutil.UnmarshalValid(testFile.OutputRequestData, &expectedRequest)
if err != nil {
t.Errorf("Unable to unmarshal input request: %s", path)
}
resultRequest := &openrtb_ext.RequestWrapper{}
resultRequest.BidRequest = &openrtb2.BidRequest{}
- err = json.Unmarshal(testFile.InputRequestData, resultRequest.BidRequest)
+ err = jsonutil.UnmarshalValid(testFile.InputRequestData, resultRequest.BidRequest)
assert.NoError(t, err, "Error should be nil")
resultFPD, errL := ExtractFPDForBidders(resultRequest)
@@ -725,7 +726,7 @@ func TestResolveUser(t *testing.T) {
globalFPD map[string][]byte
openRtbGlobalFPD map[string][]openrtb2.Data
expectedUser *openrtb2.User
- expectedError string
+ expectError bool
}{
{
description: "FPD config and bid request user are not specified",
@@ -768,7 +769,7 @@ func TestResolveUser(t *testing.T) {
fpdConfig: &openrtb_ext.ORTB2{User: json.RawMessage(`{"id": "test1"}`)},
bidRequestUser: &openrtb2.User{ID: "test2", Ext: json.RawMessage(`{"data":{"inputFPDUserData":"inputFPDUserDataValue"}}`)},
globalFPD: map[string][]byte{userKey: []byte(`malformed`)},
- expectedError: "Invalid JSON Patch",
+ expectError: true,
},
{
description: "bid request and openrtb global fpd user are specified, no input user ext",
@@ -837,18 +838,18 @@ func TestResolveUser(t *testing.T) {
},
Ext: json.RawMessage(`{"key":"value","test":1}`),
},
- expectedError: "invalid character 'm' looking for beginning of object key string",
+ expectError: true,
},
}
for _, test := range testCases {
t.Run(test.description, func(t *testing.T) {
resultUser, err := resolveUser(test.fpdConfig, test.bidRequestUser, test.globalFPD, test.openRtbGlobalFPD, "bidderA")
- if test.expectedError == "" {
+ if test.expectError {
+ assert.Error(t, err, "expected error incorrect")
+ } else {
assert.NoError(t, err, "unexpected error returned")
assert.Equal(t, test.expectedUser, resultUser, "Result user is incorrect")
- } else {
- assert.EqualError(t, err, test.expectedError, "expected error incorrect")
}
})
}
@@ -862,16 +863,16 @@ func TestResolveSite(t *testing.T) {
globalFPD map[string][]byte
openRtbGlobalFPD map[string][]openrtb2.Data
expectedSite *openrtb2.Site
- expectedError string
+ expectError bool
}{
{
description: "FPD config and bid request site are not specified",
expectedSite: nil,
},
{
- description: "FPD config site only is specified",
- fpdConfig: &openrtb_ext.ORTB2{Site: json.RawMessage(`{"id": "test"}`)},
- expectedError: "incorrect First Party Data for bidder bidderA: Site object is not defined in request, but defined in FPD config",
+ description: "FPD config site only is specified",
+ fpdConfig: &openrtb_ext.ORTB2{Site: json.RawMessage(`{"id": "test"}`)},
+ expectError: true,
},
{
description: "FPD config and bid request site are specified",
@@ -905,7 +906,7 @@ func TestResolveSite(t *testing.T) {
fpdConfig: &openrtb_ext.ORTB2{Site: json.RawMessage(`{"id": "test1"}`)},
bidRequestSite: &openrtb2.Site{ID: "test2", Ext: json.RawMessage(`{"data":{"inputFPDSiteData":"inputFPDSiteDataValue"}}`)},
globalFPD: map[string][]byte{siteKey: []byte(`malformed`)},
- expectedError: "Invalid JSON Patch",
+ expectError: true,
},
{
description: "bid request and openrtb global fpd site are specified, no input site ext",
@@ -997,18 +998,18 @@ func TestResolveSite(t *testing.T) {
}},
Ext: json.RawMessage(`{"key":"value","test":1}`),
},
- expectedError: "invalid character 'm' looking for beginning of object key string",
+ expectError: true,
},
}
for _, test := range testCases {
t.Run(test.description, func(t *testing.T) {
resultSite, err := resolveSite(test.fpdConfig, test.bidRequestSite, test.globalFPD, test.openRtbGlobalFPD, "bidderA")
- if test.expectedError == "" {
+ if test.expectError {
+ assert.Error(t, err)
+ } else {
assert.NoError(t, err, "unexpected error returned")
assert.Equal(t, test.expectedSite, resultSite, "Result site is incorrect")
- } else {
- assert.EqualError(t, err, test.expectedError, "expected error incorrect")
}
})
}
@@ -1022,16 +1023,16 @@ func TestResolveApp(t *testing.T) {
globalFPD map[string][]byte
openRtbGlobalFPD map[string][]openrtb2.Data
expectedApp *openrtb2.App
- expectedError string
+ expectError bool
}{
{
description: "FPD config and bid request app are not specified",
expectedApp: nil,
},
{
- description: "FPD config app only is specified",
- fpdConfig: &openrtb_ext.ORTB2{App: json.RawMessage(`{"id": "test"}`)},
- expectedError: "incorrect First Party Data for bidder bidderA: App object is not defined in request, but defined in FPD config",
+ description: "FPD config app only is specified",
+ fpdConfig: &openrtb_ext.ORTB2{App: json.RawMessage(`{"id": "test"}`)},
+ expectError: true,
},
{
description: "FPD config and bid request app are specified",
@@ -1065,7 +1066,7 @@ func TestResolveApp(t *testing.T) {
fpdConfig: &openrtb_ext.ORTB2{App: json.RawMessage(`{"id": "test1"}`)},
bidRequestApp: &openrtb2.App{ID: "test2", Ext: json.RawMessage(`{"data":{"inputFPDAppData":"inputFPDAppDataValue"}}`)},
globalFPD: map[string][]byte{appKey: []byte(`malformed`)},
- expectedError: "Invalid JSON Patch",
+ expectError: true,
},
{
description: "bid request and openrtb global fpd app are specified, no input app ext",
@@ -1157,18 +1158,18 @@ func TestResolveApp(t *testing.T) {
}},
Ext: json.RawMessage(`{"key":"value","test":1}`),
},
- expectedError: "invalid character 'm' looking for beginning of object key string",
+ expectError: true,
},
}
for _, test := range testCases {
t.Run(test.description, func(t *testing.T) {
resultApp, err := resolveApp(test.fpdConfig, test.bidRequestApp, test.globalFPD, test.openRtbGlobalFPD, "bidderA")
- if test.expectedError == "" {
- assert.NoError(t, err, "unexpected error returned")
- assert.Equal(t, test.expectedApp, resultApp, "Result app is incorrect")
+ if test.expectError {
+ assert.Error(t, err)
} else {
- assert.EqualError(t, err, test.expectedError, "expected error incorrect")
+ assert.NoError(t, err)
+ assert.Equal(t, test.expectedApp, resultApp, "Result app is incorrect")
}
})
}
@@ -1219,7 +1220,7 @@ func TestMergeUser(t *testing.T) {
givenUser openrtb2.User
givenFPD json.RawMessage
expectedUser openrtb2.User
- expectedErr string
+ expectError bool
}{
{
name: "empty",
@@ -1243,7 +1244,7 @@ func TestMergeUser(t *testing.T) {
name: "toplevel-ext-err",
givenUser: openrtb2.User{ID: "1", Ext: []byte(`malformed`)},
givenFPD: []byte(`{"id":"2"}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-geo",
@@ -1267,13 +1268,13 @@ func TestMergeUser(t *testing.T) {
name: "nested-geo-ext-err",
givenUser: openrtb2.User{Geo: &openrtb2.Geo{Ext: []byte(`malformed`)}},
givenFPD: []byte(`{"geo":{"ext":{"b":100,"c":3}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "fpd-err",
givenUser: openrtb2.User{ID: "1", Ext: []byte(`{"a":1}`)},
givenFPD: []byte(`malformed`),
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectError: true,
},
}
@@ -1281,11 +1282,11 @@ func TestMergeUser(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
err := mergeUser(&test.givenUser, test.givenFPD)
- if test.expectedErr == "" {
- assert.NoError(t, err, "unexpected error returned")
- assert.Equal(t, test.expectedUser, test.givenUser, "result user is incorrect")
+ if test.expectError {
+ assert.Error(t, err)
} else {
- assert.EqualError(t, err, test.expectedErr, "expected error incorrect")
+ assert.NoError(t, err)
+ assert.Equal(t, test.expectedUser, test.givenUser, "result user is incorrect")
}
})
}
@@ -1297,7 +1298,7 @@ func TestMergeApp(t *testing.T) {
givenApp openrtb2.App
givenFPD json.RawMessage
expectedApp openrtb2.App
- expectedErr string
+ expectError bool
}{
{
name: "empty",
@@ -1321,7 +1322,7 @@ func TestMergeApp(t *testing.T) {
name: "toplevel-ext-err",
givenApp: openrtb2.App{ID: "1", Ext: []byte(`malformed`)},
givenFPD: []byte(`{"id":"2"}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-publisher",
@@ -1417,37 +1418,37 @@ func TestMergeApp(t *testing.T) {
name: "nested-publisher-ext-err",
givenApp: openrtb2.App{Publisher: &openrtb2.Publisher{Ext: []byte(`malformed`)}},
givenFPD: []byte(`{"publisher":{"ext":{"b":100,"c":3}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-ext-err",
givenApp: openrtb2.App{Content: &openrtb2.Content{Ext: []byte(`malformed`)}},
givenFPD: []byte(`{"content":{"ext":{"b":100,"c":3}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-producer-ext-err",
givenApp: openrtb2.App{Content: &openrtb2.Content{Producer: &openrtb2.Producer{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"producer": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-network-ext-err",
givenApp: openrtb2.App{Content: &openrtb2.Content{Network: &openrtb2.Network{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"network": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-channel-ext-err",
givenApp: openrtb2.App{Content: &openrtb2.Content{Channel: &openrtb2.Channel{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"channelx": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "fpd-err",
givenApp: openrtb2.App{ID: "1", Ext: []byte(`{"a":1}`)},
givenFPD: []byte(`malformed`),
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectError: true,
},
}
@@ -1455,11 +1456,11 @@ func TestMergeApp(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
err := mergeApp(&test.givenApp, test.givenFPD)
- if test.expectedErr == "" {
- assert.NoError(t, err, "unexpected error returned")
- assert.Equal(t, test.expectedApp, test.givenApp, " result app is incorrect")
+ if test.expectError {
+ assert.Error(t, err)
} else {
- assert.EqualError(t, err, test.expectedErr, "expected error incorrect")
+ assert.NoError(t, err)
+ assert.Equal(t, test.expectedApp, test.givenApp, " result app is incorrect")
}
})
}
@@ -1471,13 +1472,13 @@ func TestMergeSite(t *testing.T) {
givenSite openrtb2.Site
givenFPD json.RawMessage
expectedSite openrtb2.Site
- expectedErr string
+ expectError bool
}{
{
name: "empty",
givenSite: openrtb2.Site{},
givenFPD: []byte(`{}`),
- expectedErr: "incorrect First Party Data for bidder BidderA: Site object cannot set empty page if req.site.id is empty",
+ expectError: true,
},
{
name: "toplevel",
@@ -1495,7 +1496,7 @@ func TestMergeSite(t *testing.T) {
name: "toplevel-ext-err",
givenSite: openrtb2.Site{ID: "1", Ext: []byte(`malformed`)},
givenFPD: []byte(`{"id":"2"}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-publisher",
@@ -1591,37 +1592,37 @@ func TestMergeSite(t *testing.T) {
name: "nested-publisher-ext-err",
givenSite: openrtb2.Site{ID: "1", Publisher: &openrtb2.Publisher{Ext: []byte(`malformed`)}},
givenFPD: []byte(`{"publisher":{"ext":{"b":100,"c":3}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-ext-err",
givenSite: openrtb2.Site{ID: "1", Content: &openrtb2.Content{Ext: []byte(`malformed`)}},
givenFPD: []byte(`{"content":{"ext":{"b":100,"c":3}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-producer-ext-err",
givenSite: openrtb2.Site{ID: "1", Content: &openrtb2.Content{Producer: &openrtb2.Producer{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"producer": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-network-ext-err",
givenSite: openrtb2.Site{ID: "1", Content: &openrtb2.Content{Network: &openrtb2.Network{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"network": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "nested-content-channel-ext-err",
givenSite: openrtb2.Site{ID: "1", Content: &openrtb2.Content{Channel: &openrtb2.Channel{Ext: []byte(`malformed`)}}},
givenFPD: []byte(`{"content":{"channelx": {"ext":{"b":100,"c":3}}}}`),
- expectedErr: "invalid request ext",
+ expectError: true,
},
{
name: "fpd-err",
givenSite: openrtb2.Site{ID: "1", Ext: []byte(`{"a":1}`)},
givenFPD: []byte(`malformed`),
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectError: true,
},
}
@@ -1629,11 +1630,11 @@ func TestMergeSite(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
err := mergeSite(&test.givenSite, test.givenFPD, "BidderA")
- if test.expectedErr == "" {
- assert.NoError(t, err, "unexpected error returned")
- assert.Equal(t, test.expectedSite, test.givenSite, " result Site is incorrect")
+ if test.expectError {
+ assert.Error(t, err)
} else {
- assert.EqualError(t, err, test.expectedErr, "expected error incorrect")
+ assert.NoError(t, err)
+ assert.Equal(t, test.expectedSite, test.givenSite, " result Site is incorrect")
}
})
}
diff --git a/floors/floors_test.go b/floors/floors_test.go
index 7f27e1a26d5..b3002c2f155 100644
--- a/floors/floors_test.go
+++ b/floors/floors_test.go
@@ -9,6 +9,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/currency"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -447,7 +448,7 @@ func TestResolveFloors(t *testing.T) {
}
func printFloors(floors *openrtb_ext.PriceFloorRules) string {
- fbytes, _ := json.Marshal(floors)
+ fbytes, _ := jsonutil.Marshal(floors)
return string(fbytes)
}
diff --git a/floors/rule_test.go b/floors/rule_test.go
index 27be6ef0dd2..7c484a7c95f 100644
--- a/floors/rule_test.go
+++ b/floors/rule_test.go
@@ -760,7 +760,7 @@ func TestGetMinFloorValue(t *testing.T) {
},
want: 0.0,
want1: "",
- wantErr: errors.New("Error in getting FloorMin value : 'unexpected end of JSON input'"),
+ wantErr: errors.New("Error in getting FloorMin value : 'expects \" or n, but found \x00'"),
},
}
for _, tc := range testCases {
diff --git a/gdpr/full_enforcement_test.go b/gdpr/full_enforcement_test.go
index 61f6e8b8520..4a859ecaabb 100644
--- a/gdpr/full_enforcement_test.go
+++ b/gdpr/full_enforcement_test.go
@@ -1,7 +1,6 @@
package gdpr
import (
- "encoding/json"
"testing"
"github.com/prebid/go-gdpr/consentconstants"
@@ -10,6 +9,7 @@ import (
"github.com/prebid/go-gdpr/vendorlist"
"github.com/prebid/go-gdpr/vendorlist2"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -961,7 +961,7 @@ func TestLegalBasisWithoutVendor(t *testing.T) {
func getVendorList(t *testing.T) vendorlist.VendorList {
GVL := makeVendorList()
- marshaledGVL, err := json.Marshal(GVL)
+ marshaledGVL, err := jsonutil.Marshal(GVL)
if err != nil {
t.Fatalf("Failed to marshal GVL")
}
diff --git a/gdpr/vendorlist-fetching_test.go b/gdpr/vendorlist-fetching_test.go
index a1dfb7fefb8..b8c73bbf9a4 100644
--- a/gdpr/vendorlist-fetching_test.go
+++ b/gdpr/vendorlist-fetching_test.go
@@ -2,7 +2,6 @@ package gdpr
import (
"context"
- "encoding/json"
"net/http"
"net/http/httptest"
"strconv"
@@ -13,6 +12,7 @@ import (
"github.com/prebid/go-gdpr/api"
"github.com/prebid/go-gdpr/consentconstants"
"github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
func TestFetcherDynamicLoadListExists(t *testing.T) {
@@ -305,7 +305,7 @@ type vendor struct {
}
func MarshalVendorList(vendorList vendorList) string {
- json, _ := json.Marshal(vendorList)
+ json, _ := jsonutil.Marshal(vendorList)
return string(json)
}
diff --git a/go.mod b/go.mod
index 6731c177ecf..e52946fbe1e 100644
--- a/go.mod
+++ b/go.mod
@@ -46,10 +46,13 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
diff --git a/go.sum b/go.sum
index 1f76be7af31..eefe0228261 100644
--- a/go.sum
+++ b/go.sum
@@ -296,6 +296,7 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
@@ -356,9 +357,11 @@ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
diff --git a/hooks/hookanalytics/analytics_test.go b/hooks/hookanalytics/analytics_test.go
index 177a9335da9..abf5e7f2ddc 100644
--- a/hooks/hookanalytics/analytics_test.go
+++ b/hooks/hookanalytics/analytics_test.go
@@ -1,9 +1,9 @@
package hookanalytics
import (
- "encoding/json"
"testing"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -50,7 +50,7 @@ func TestAnalytics(t *testing.T) {
Activity{Name: "define-blocks", Status: ActivityStatusError},
)
- gotAnalytics, err := json.Marshal(analytics)
+ gotAnalytics, err := jsonutil.Marshal(analytics)
assert.NoError(t, err, "Failed to marshal analytics: %s", err)
assert.JSONEq(t, string(expectedAnalytics), string(gotAnalytics))
}
diff --git a/hooks/hookexecution/enricher.go b/hooks/hookexecution/enricher.go
index 2978c21957d..c3dd5a23339 100644
--- a/hooks/hookexecution/enricher.go
+++ b/hooks/hookexecution/enricher.go
@@ -6,6 +6,7 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
@@ -52,7 +53,7 @@ func EnrichExtBidResponse(
return ext, warnings, err
}
- response, err := json.Marshal(extPrebid{Prebid: extModules{Modules: modules}})
+ response, err := jsonutil.Marshal(extPrebid{Prebid: extModules{Modules: modules}})
if err != nil {
return ext, warnings, err
}
@@ -83,7 +84,7 @@ func GetModulesJSON(
return nil, warnings, nil
}
- data, err := json.Marshal(modulesOutcome)
+ data, err := jsonutil.Marshal(modulesOutcome)
return data, warnings, err
}
diff --git a/hooks/hookexecution/enricher_test.go b/hooks/hookexecution/enricher_test.go
index 7bb19c2ecf2..24f0f1c1d45 100644
--- a/hooks/hookexecution/enricher_test.go
+++ b/hooks/hookexecution/enricher_test.go
@@ -10,6 +10,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/hooks/hookanalytics"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -258,7 +259,7 @@ func TestGetModulesJSON(t *testing.T) {
assert.Empty(t, expectedResponse)
} else {
var expectedExtBidResponse openrtb_ext.ExtBidResponse
- err := json.Unmarshal(expectedResponse, &expectedExtBidResponse)
+ err := jsonutil.UnmarshalValid(expectedResponse, &expectedExtBidResponse)
assert.NoError(t, err, "Failed to unmarshal prebid response extension")
assert.JSONEq(t, string(expectedExtBidResponse.Prebid.Modules), string(modules))
}
@@ -271,7 +272,7 @@ func getStageOutcomes(t *testing.T, file string) []StageOutcome {
var stageOutcomesTest []StageOutcomeTest
data := readFile(t, file)
- err := json.Unmarshal(data, &stageOutcomesTest)
+ err := jsonutil.UnmarshalValid(data, &stageOutcomesTest)
require.NoError(t, err, "Failed to unmarshal stage outcomes: %s", err)
for _, stageT := range stageOutcomesTest {
diff --git a/hooks/hookexecution/test_utils.go b/hooks/hookexecution/test_utils.go
index bd94d5778b4..2a604d851f5 100644
--- a/hooks/hookexecution/test_utils.go
+++ b/hooks/hookexecution/test_utils.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"testing"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -16,8 +17,8 @@ func AssertEqualModulesData(t *testing.T, expectedData, actualData json.RawMessa
var expectedModulesOutcome ModulesOutcome
var actualModulesOutcome ModulesOutcome
- assert.NoError(t, json.Unmarshal(expectedData, &expectedModulesOutcome), "Failed to unmarshal expected modules data.")
- assert.NoError(t, json.Unmarshal(actualData, &actualModulesOutcome), "Failed to unmarshal actual modules data.")
+ assert.NoError(t, jsonutil.UnmarshalValid(expectedData, &expectedModulesOutcome), "Failed to unmarshal expected modules data.")
+ assert.NoError(t, jsonutil.UnmarshalValid(actualData, &actualModulesOutcome), "Failed to unmarshal actual modules data.")
assert.Equal(t, expectedModulesOutcome.Errors, actualModulesOutcome.Errors, "Invalid error messages.")
assert.Equal(t, expectedModulesOutcome.Warnings, actualModulesOutcome.Warnings, "Invalid warning messages.")
diff --git a/hooks/plan_test.go b/hooks/plan_test.go
index 5d2a504f0d1..8af49b42e17 100644
--- a/hooks/plan_test.go
+++ b/hooks/plan_test.go
@@ -2,12 +2,12 @@ package hooks
import (
"context"
- "encoding/json"
"testing"
"time"
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -227,7 +227,7 @@ func TestPlanForRawAuctionStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -333,7 +333,7 @@ func TestPlanForProcessedAuctionStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -439,7 +439,7 @@ func TestPlanForBidderRequestStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -545,7 +545,7 @@ func TestPlanForRawBidderResponseStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -651,7 +651,7 @@ func TestPlanForAllProcessedBidResponsesStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -757,7 +757,7 @@ func TestPlanForAuctionResponseStage(t *testing.T) {
for name, test := range testCases {
t.Run(name, func(t *testing.T) {
account := new(config.Account)
- if err := json.Unmarshal(test.giveAccountPlanData, &account.Hooks); err != nil {
+ if err := jsonutil.UnmarshalValid(test.giveAccountPlanData, &account.Hooks); err != nil {
t.Fatal(err)
}
@@ -779,12 +779,12 @@ func getPlanBuilder(
var hostPlan config.HookExecutionPlan
var defaultAccountPlan config.HookExecutionPlan
- err = json.Unmarshal(hostPlanData, &hostPlan)
+ err = jsonutil.UnmarshalValid(hostPlanData, &hostPlan)
if err != nil {
return nil, err
}
- err = json.Unmarshal(accountPlanData, &defaultAccountPlan)
+ err = jsonutil.UnmarshalValid(accountPlanData, &defaultAccountPlan)
if err != nil {
return nil, err
}
diff --git a/modules/modules.go b/modules/modules.go
index ac60ec58082..4e60a9eda32 100644
--- a/modules/modules.go
+++ b/modules/modules.go
@@ -8,6 +8,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/hooks"
"github.com/prebid/prebid-server/modules/moduledeps"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
//go:generate go run ./generator/buildergen.go
@@ -58,7 +59,7 @@ func (m *builder) Build(
id := fmt.Sprintf("%s.%s", vendor, moduleName)
if data, ok := cfg[vendor][moduleName]; ok {
- if conf, err = json.Marshal(data); err != nil {
+ if conf, err = jsonutil.Marshal(data); err != nil {
return nil, nil, fmt.Errorf(`failed to marshal "%s" module config: %s`, id, err)
}
diff --git a/modules/modules_test.go b/modules/modules_test.go
index 1c70ce4badf..f88a48a2c44 100644
--- a/modules/modules_test.go
+++ b/modules/modules_test.go
@@ -85,7 +85,7 @@ func TestModuleBuilderBuild(t *testing.T) {
givenConfig: map[string]map[string]interface{}{vendor: {moduleName: math.Inf(1)}},
expectedHookRepo: nil,
expectedModulesStages: nil,
- expectedErr: fmt.Errorf(`failed to marshal "%s.%s" module config: json: unsupported value: +Inf`, vendor, moduleName),
+ expectedErr: fmt.Errorf(`failed to marshal "%s.%s" module config: unsupported value: +Inf`, vendor, moduleName),
},
}
diff --git a/modules/prebid/ortb2blocking/config.go b/modules/prebid/ortb2blocking/config.go
index cefd436b402..74841eb5b33 100644
--- a/modules/prebid/ortb2blocking/config.go
+++ b/modules/prebid/ortb2blocking/config.go
@@ -5,11 +5,12 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/adcom1"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
func newConfig(data json.RawMessage) (config, error) {
var cfg config
- if err := json.Unmarshal(data, &cfg); err != nil {
+ if err := jsonutil.UnmarshalValid(data, &cfg); err != nil {
return cfg, fmt.Errorf("failed to parse config: %s", err)
}
return cfg, nil
@@ -112,7 +113,7 @@ type Override struct {
func (o *Override) UnmarshalJSON(bytes []byte) error {
var overrideData interface{}
- if err := json.Unmarshal(bytes, &overrideData); err != nil {
+ if err := jsonutil.UnmarshalValid(bytes, &overrideData); err != nil {
return err
}
diff --git a/modules/prebid/ortb2blocking/module_test.go b/modules/prebid/ortb2blocking/module_test.go
index b47f9f58a02..ecae5ca8c0a 100644
--- a/modules/prebid/ortb2blocking/module_test.go
+++ b/modules/prebid/ortb2blocking/module_test.go
@@ -488,7 +488,7 @@ func TestHandleBidderRequestHook(t *testing.T) {
bidRequest: &openrtb2.BidRequest{},
expectedBidRequest: &openrtb2.BidRequest{},
expectedHookResult: hookstage.HookResult[hookstage.BidderRequestPayload]{},
- expectedError: errors.New("failed to parse config: invalid character '.' looking for beginning of value"),
+ expectedError: errors.New("failed to parse config: expect { or n, but found ."),
},
{
description: "Expect error if nil BidRequest provided",
diff --git a/openrtb_ext/convert_down_test.go b/openrtb_ext/convert_down_test.go
index ea21468e737..3b78337df8b 100644
--- a/openrtb_ext/convert_down_test.go
+++ b/openrtb_ext/convert_down_test.go
@@ -6,6 +6,7 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/errortypes"
"github.com/stretchr/testify/assert"
)
@@ -14,7 +15,7 @@ func TestConvertDownTo25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "2.6-to-2.5",
@@ -87,12 +88,12 @@ func TestConvertDownTo25(t *testing.T) {
},
},
{
- name: "malformed-shhain",
+ name: "malformed-schain",
givenRequest: openrtb2.BidRequest{
ID: "anyID",
Source: &openrtb2.Source{SChain: &openrtb2.SupplyChain{Complete: 1, Nodes: []openrtb2.SupplyChainNode{}, Ver: "2"}, Ext: json.RawMessage(`malformed`)},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
{
name: "malformed-gdpr",
@@ -100,7 +101,7 @@ func TestConvertDownTo25(t *testing.T) {
ID: "anyID",
Regs: &openrtb2.Regs{GDPR: openrtb2.Int8Ptr(1), Ext: json.RawMessage(`malformed`)},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
{
name: "malformed-consent",
@@ -108,7 +109,7 @@ func TestConvertDownTo25(t *testing.T) {
ID: "anyID",
User: &openrtb2.User{Consent: "1", Ext: json.RawMessage(`malformed`)},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
{
name: "malformed-usprivacy",
@@ -116,7 +117,7 @@ func TestConvertDownTo25(t *testing.T) {
ID: "anyID",
Regs: &openrtb2.Regs{USPrivacy: "3", Ext: json.RawMessage(`malformed`)},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
{
name: "malformed-eid",
@@ -124,7 +125,7 @@ func TestConvertDownTo25(t *testing.T) {
ID: "anyID",
User: &openrtb2.User{EIDs: []openrtb2.EID{{Source: "42"}}, Ext: json.RawMessage(`malformed`)},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
{
name: "malformed-imp",
@@ -132,7 +133,7 @@ func TestConvertDownTo25(t *testing.T) {
ID: "anyID",
Imp: []openrtb2.Imp{{Rwdd: 1, Ext: json.RawMessage(`malformed`)}},
},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -141,8 +142,8 @@ func TestConvertDownTo25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := ConvertDownTo25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -162,7 +163,7 @@ func TestMoveSupplyChainFrom26To25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "notpresent-source",
@@ -185,9 +186,9 @@ func TestMoveSupplyChainFrom26To25(t *testing.T) {
expectedRequest: openrtb2.BidRequest{Source: &openrtb2.Source{Ext: schain1Json}},
},
{
- name: "malformed",
- givenRequest: openrtb2.BidRequest{Source: &openrtb2.Source{SChain: schain1, Ext: json.RawMessage(`malformed`)}},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "malformed",
+ givenRequest: openrtb2.BidRequest{Source: &openrtb2.Source{SChain: schain1, Ext: json.RawMessage(`malformed`)}},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -196,8 +197,8 @@ func TestMoveSupplyChainFrom26To25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := moveSupplyChainFrom26To25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -211,7 +212,7 @@ func TestMoveGDPRFrom26To25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "notpresent-regs",
@@ -234,9 +235,9 @@ func TestMoveGDPRFrom26To25(t *testing.T) {
expectedRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{Ext: json.RawMessage(`{"gdpr":0}`)}},
},
{
- name: "malformed",
- givenRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{GDPR: openrtb2.Int8Ptr(0), Ext: json.RawMessage(`malformed`)}},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "malformed",
+ givenRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{GDPR: openrtb2.Int8Ptr(0), Ext: json.RawMessage(`malformed`)}},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -245,8 +246,8 @@ func TestMoveGDPRFrom26To25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := moveGDPRFrom26To25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -260,7 +261,7 @@ func TestMoveConsentFrom26To25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "notpresent-user",
@@ -283,9 +284,9 @@ func TestMoveConsentFrom26To25(t *testing.T) {
expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{Ext: json.RawMessage(`{"consent":"1"}`)}},
},
{
- name: "malformed",
- givenRequest: openrtb2.BidRequest{User: &openrtb2.User{Consent: "1", Ext: json.RawMessage(`malformed`)}},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "malformed",
+ givenRequest: openrtb2.BidRequest{User: &openrtb2.User{Consent: "1", Ext: json.RawMessage(`malformed`)}},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -294,8 +295,8 @@ func TestMoveConsentFrom26To25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := moveConsentFrom26To25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -309,7 +310,7 @@ func TestMoveUSPrivacyFrom26To25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "notpresent-regs",
@@ -332,9 +333,9 @@ func TestMoveUSPrivacyFrom26To25(t *testing.T) {
expectedRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{Ext: json.RawMessage(`{"us_privacy":"1"}`)}},
},
{
- name: "malformed",
- givenRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{USPrivacy: "1", Ext: json.RawMessage(`malformed`)}},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "malformed",
+ givenRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{USPrivacy: "1", Ext: json.RawMessage(`malformed`)}},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -343,8 +344,8 @@ func TestMoveUSPrivacyFrom26To25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := moveUSPrivacyFrom26To25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -364,7 +365,7 @@ func TestMoveEIDFrom26To25(t *testing.T) {
name string
givenRequest openrtb2.BidRequest
expectedRequest openrtb2.BidRequest
- expectedErr string
+ expectedErrType error
}{
{
name: "notpresent-user",
@@ -392,9 +393,9 @@ func TestMoveEIDFrom26To25(t *testing.T) {
expectedRequest: openrtb2.BidRequest{User: &openrtb2.User{Ext: eid1Json}},
},
{
- name: "malformed",
- givenRequest: openrtb2.BidRequest{User: &openrtb2.User{EIDs: eid1, Ext: json.RawMessage(`malformed`)}},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "malformed",
+ givenRequest: openrtb2.BidRequest{User: &openrtb2.User{EIDs: eid1, Ext: json.RawMessage(`malformed`)}},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -403,8 +404,8 @@ func TestMoveEIDFrom26To25(t *testing.T) {
w := &RequestWrapper{BidRequest: &test.givenRequest}
err := moveEIDFrom26To25(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildRequest(), "error")
assert.Equal(t, test.expectedRequest, *w.BidRequest, "result")
@@ -415,10 +416,10 @@ func TestMoveEIDFrom26To25(t *testing.T) {
func TestMoveRewardedFrom26ToPrebidExt(t *testing.T) {
testCases := []struct {
- name string
- givenImp openrtb2.Imp
- expectedImp openrtb2.Imp
- expectedErr string
+ name string
+ givenImp openrtb2.Imp
+ expectedImp openrtb2.Imp
+ expectedErrType error
}{
{
name: "notpresent-prebid",
@@ -436,9 +437,9 @@ func TestMoveRewardedFrom26ToPrebidExt(t *testing.T) {
expectedImp: openrtb2.Imp{Ext: json.RawMessage(`{"prebid":{"is_rewarded_inventory":1}}`)},
},
{
- name: "Malformed",
- givenImp: openrtb2.Imp{Rwdd: 1, Ext: json.RawMessage(`malformed`)},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ name: "Malformed",
+ givenImp: openrtb2.Imp{Rwdd: 1, Ext: json.RawMessage(`malformed`)},
+ expectedErrType: &errortypes.FailedToUnmarshal{},
},
}
@@ -447,8 +448,8 @@ func TestMoveRewardedFrom26ToPrebidExt(t *testing.T) {
w := &ImpWrapper{Imp: &test.givenImp}
err := moveRewardedFrom26ToPrebidExt(w)
- if len(test.expectedErr) > 0 {
- assert.EqualError(t, err, test.expectedErr, "error")
+ if test.expectedErrType != nil {
+ assert.IsType(t, test.expectedErrType, err)
} else {
assert.NoError(t, w.RebuildImp(), "error")
assert.Equal(t, test.expectedImp, *w.Imp, "result")
diff --git a/openrtb_ext/convert_up_test.go b/openrtb_ext/convert_up_test.go
index d3ba034d07e..3cafe8c1612 100644
--- a/openrtb_ext/convert_up_test.go
+++ b/openrtb_ext/convert_up_test.go
@@ -20,7 +20,7 @@ func TestConvertUpTo26(t *testing.T) {
givenRequest: openrtb2.BidRequest{
Ext: json.RawMessage(`malformed`),
},
- expectedErr: "req.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "req.ext is invalid: expect { or n, but found m",
},
{
description: "2.4 -> 2.6",
@@ -120,27 +120,27 @@ func TestConvertUpEnsureExt(t *testing.T) {
{
description: "Ext",
givenRequest: openrtb2.BidRequest{Ext: json.RawMessage("malformed")},
- expectedErr: "req.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "req.ext is invalid: expect { or n, but found m",
},
{
description: "Source.Ext",
givenRequest: openrtb2.BidRequest{Source: &openrtb2.Source{Ext: json.RawMessage("malformed")}},
- expectedErr: "req.source.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "req.source.ext is invalid: expect { or n, but found m",
},
{
description: "Regs.Ext",
givenRequest: openrtb2.BidRequest{Regs: &openrtb2.Regs{Ext: json.RawMessage("malformed")}},
- expectedErr: "req.regs.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "req.regs.ext is invalid: expect { or n, but found m",
},
{
description: "User.Ext",
givenRequest: openrtb2.BidRequest{User: &openrtb2.User{Ext: json.RawMessage("malformed")}},
- expectedErr: "req.user.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "req.user.ext is invalid: expect { or n, but found m",
},
{
description: "Imp.Ext",
givenRequest: openrtb2.BidRequest{Imp: []openrtb2.Imp{{Ext: json.RawMessage("malformed")}}},
- expectedErr: "imp[0].imp.ext is invalid: invalid character 'm' looking for beginning of value",
+ expectedErr: "imp[0].imp.ext is invalid: expect { or n, but found m",
},
}
diff --git a/openrtb_ext/deal_tier.go b/openrtb_ext/deal_tier.go
index 45285d21663..df386916b77 100644
--- a/openrtb_ext/deal_tier.go
+++ b/openrtb_ext/deal_tier.go
@@ -1,9 +1,8 @@
package openrtb_ext
import (
- "encoding/json"
-
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// DealTier defines the configuration of a deal tier.
@@ -34,7 +33,7 @@ func ReadDealTiersFromImp(imp openrtb2.Imp) (DealTierBidderMap, error) {
} `json:"bidder"`
} `json:"prebid"`
}
- if err := json.Unmarshal(imp.Ext, &impPrebidExt); err != nil {
+ if err := jsonutil.Unmarshal(imp.Ext, &impPrebidExt); err != nil {
return nil, err
}
for bidder, param := range impPrebidExt.Prebid.Bidders {
diff --git a/openrtb_ext/deal_tier_test.go b/openrtb_ext/deal_tier_test.go
index 0046b788ece..dabecf6a9e7 100644
--- a/openrtb_ext/deal_tier_test.go
+++ b/openrtb_ext/deal_tier_test.go
@@ -5,15 +5,16 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/errortypes"
"github.com/stretchr/testify/assert"
)
func TestReadDealTiersFromImp(t *testing.T) {
testCases := []struct {
- description string
- impExt json.RawMessage
- expectedResult DealTierBidderMap
- expectedError string
+ description string
+ impExt json.RawMessage
+ expectedResult DealTierBidderMap
+ expectedErrorType error
}{
{
description: "Nil",
@@ -71,9 +72,9 @@ func TestReadDealTiersFromImp(t *testing.T) {
expectedResult: DealTierBidderMap{},
},
{
- description: "imp.ext.prebid.bidder - error",
- impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": "wrong type", "placementId": 12345}}}}`),
- expectedError: "json: cannot unmarshal string into Go struct field .prebid.bidder.dealTier of type openrtb_ext.DealTier",
+ description: "imp.ext.prebid.bidder - error",
+ impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": "wrong type", "placementId": 12345}}}}`),
+ expectedErrorType: &errortypes.FailedToUnmarshal{},
},
}
@@ -84,10 +85,10 @@ func TestReadDealTiersFromImp(t *testing.T) {
assert.Equal(t, test.expectedResult, result, test.description+":result")
- if len(test.expectedError) == 0 {
- assert.NoError(t, err, test.description+":error")
+ if test.expectedErrorType != nil {
+ assert.IsType(t, test.expectedErrorType, err)
} else {
- assert.EqualError(t, err, test.expectedError, test.description+":error")
+ assert.NoError(t, err, test.description+":error")
}
}
}
diff --git a/openrtb_ext/device_test.go b/openrtb_ext/device_test.go
index 1a3dbe8e2f4..86a0e1d7ff2 100644
--- a/openrtb_ext/device_test.go
+++ b/openrtb_ext/device_test.go
@@ -4,30 +4,31 @@ import (
"encoding/json"
"testing"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
func TestInvalidDeviceExt(t *testing.T) {
var s ExtDevice
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":105}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":true,"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":null,"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":"75","minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":105}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":true,"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":null,"minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":"75","minheightperc":0}}}`), &s), "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":85}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":-5}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":false}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
- assert.EqualError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":"75"}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":85}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":-5}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":false}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":85,"minheightperc":"75"}}}`), &s), "request.device.ext.prebid.interstitial.minheightperc must be a number between 0 and 100")
}
func TestValidDeviceExt(t *testing.T) {
var s ExtDevice
- assert.NoError(t, json.Unmarshal([]byte(`{"prebid":{}}`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{}}`), &s))
assert.Nil(t, s.Prebid.Interstitial)
- assert.NoError(t, json.Unmarshal([]byte(`{}`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{}`), &s))
assert.Nil(t, s.Prebid.Interstitial)
- assert.NoError(t, json.Unmarshal([]byte(`{"prebid":{"interstitial":{"minwidthperc":75,"minheightperc":60}}}`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{"prebid":{"interstitial":{"minwidthperc":75,"minheightperc":60}}}`), &s))
assert.EqualValues(t, 75, s.Prebid.Interstitial.MinWidthPerc)
assert.EqualValues(t, 60, s.Prebid.Interstitial.MinHeightPerc)
}
diff --git a/openrtb_ext/imp_appnexus.go b/openrtb_ext/imp_appnexus.go
index d9549e74750..02476d6bcf0 100644
--- a/openrtb_ext/imp_appnexus.go
+++ b/openrtb_ext/imp_appnexus.go
@@ -45,7 +45,7 @@ func (ks *ExtImpAppnexusKeywords) UnmarshalJSON(b []byte) error {
switch b[0] {
case '{':
var results map[string][]string
- if err := json.Unmarshal(b, &results); err != nil {
+ if err := jsonutil.UnmarshalValid(b, &results); err != nil {
return err
}
@@ -64,7 +64,7 @@ func (ks *ExtImpAppnexusKeywords) UnmarshalJSON(b []byte) error {
}
case '[':
var results []extImpAppnexusKeyVal
- if err := json.Unmarshal(b, &results); err != nil {
+ if err := jsonutil.UnmarshalValid(b, &results); err != nil {
return err
}
var kvs strings.Builder
@@ -82,7 +82,7 @@ func (ks *ExtImpAppnexusKeywords) UnmarshalJSON(b []byte) error {
}
case '"':
var keywords string
- if err := json.Unmarshal(b, &keywords); err != nil {
+ if err := jsonutil.UnmarshalValid(b, &keywords); err != nil {
return err
}
*ks = ExtImpAppnexusKeywords(keywords)
diff --git a/openrtb_ext/imp_appnexus_test.go b/openrtb_ext/imp_appnexus_test.go
index cbd6779d5da..a226c0d8410 100644
--- a/openrtb_ext/imp_appnexus_test.go
+++ b/openrtb_ext/imp_appnexus_test.go
@@ -1,9 +1,9 @@
package openrtb_ext
import (
- "encoding/json"
"testing"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -31,7 +31,7 @@ func TestKeywordsUnmarshalJSON(t *testing.T) {
for _, test := range validTestCases {
var keywords keywords
- assert.NoError(t, json.Unmarshal(test.input, &keywords), test.desc)
+ assert.NoError(t, jsonutil.UnmarshalValid(test.input, &keywords), test.desc)
assert.Equal(t, test.expected, keywords.Keywords.String())
}
@@ -42,6 +42,6 @@ func TestKeywordsUnmarshalJSON(t *testing.T) {
for _, test := range invalidTestCases {
var keywords keywords
- assert.Error(t, json.Unmarshal(test.input, &keywords), test.desc)
+ assert.Error(t, jsonutil.UnmarshalValid(test.input, &keywords), test.desc)
}
}
diff --git a/openrtb_ext/request.go b/openrtb_ext/request.go
index f5418ba4d1f..3a41fdf0dbb 100644
--- a/openrtb_ext/request.go
+++ b/openrtb_ext/request.go
@@ -5,6 +5,7 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/maputil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/prebid-server/util/sliceutil"
@@ -234,7 +235,7 @@ func (pg *PriceGranularity) UnmarshalJSON(b []byte) error {
// price granularity used to be a string referencing a predefined value, try to parse
// and map the legacy string before falling back to the modern custom model.
legacyID := ""
- if err := json.Unmarshal(b, &legacyID); err == nil {
+ if err := jsonutil.Unmarshal(b, &legacyID); err == nil {
if legacyValue, ok := NewPriceGranularityFromLegacyID(legacyID); ok {
*pg = legacyValue
return nil
@@ -243,7 +244,7 @@ func (pg *PriceGranularity) UnmarshalJSON(b []byte) error {
// use a type-alias to avoid calling back into this UnmarshalJSON implementation
modernValue := PriceGranularityRaw{}
- err := json.Unmarshal(b, &modernValue)
+ err := jsonutil.Unmarshal(b, &modernValue)
if err == nil {
*pg = (PriceGranularity)(modernValue)
}
diff --git a/openrtb_ext/request_test.go b/openrtb_ext/request_test.go
index a05bae3a6bf..ad6a655b022 100644
--- a/openrtb_ext/request_test.go
+++ b/openrtb_ext/request_test.go
@@ -6,6 +6,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
)
@@ -37,7 +38,7 @@ func TestGranularityUnmarshal(t *testing.T) {
for _, tg := range testGroups {
for i, tc := range tg.in {
var resolved PriceGranularity
- err := json.Unmarshal(tc.json, &resolved)
+ err := jsonutil.UnmarshalValid(tc.json, &resolved)
// Assert validation error
if tg.expectError && !assert.Errorf(t, err, "%s test case %d", tg.desc, i) {
diff --git a/openrtb_ext/request_wrapper.go b/openrtb_ext/request_wrapper.go
index f4ef69b0523..09321e5b0b3 100644
--- a/openrtb_ext/request_wrapper.go
+++ b/openrtb_ext/request_wrapper.go
@@ -5,6 +5,7 @@ import (
"errors"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/maputil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/prebid-server/util/sliceutil"
@@ -440,13 +441,13 @@ func (ue *UserExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &ue.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &ue.ext); err != nil {
return err
}
consentJson, hasConsent := ue.ext[consentKey]
- if hasConsent {
- if err := json.Unmarshal(consentJson, &ue.consent); err != nil {
+ if hasConsent && consentJson != nil {
+ if err := jsonutil.Unmarshal(consentJson, &ue.consent); err != nil {
return err
}
}
@@ -454,7 +455,9 @@ func (ue *UserExt) unmarshal(extJson json.RawMessage) error {
prebidJson, hasPrebid := ue.ext[prebidKey]
if hasPrebid {
ue.prebid = &ExtUserPrebid{}
- if err := json.Unmarshal(prebidJson, ue.prebid); err != nil {
+ }
+ if prebidJson != nil {
+ if err := jsonutil.Unmarshal(prebidJson, ue.prebid); err != nil {
return err
}
}
@@ -462,21 +465,29 @@ func (ue *UserExt) unmarshal(extJson json.RawMessage) error {
eidsJson, hasEids := ue.ext[eidsKey]
if hasEids {
ue.eids = &[]openrtb2.EID{}
- if err := json.Unmarshal(eidsJson, ue.eids); err != nil {
+ }
+ if eidsJson != nil {
+ if err := jsonutil.Unmarshal(eidsJson, ue.eids); err != nil {
return err
}
}
- if consentedProviderSettingsJson, hasCPSettings := ue.ext[consentedProvidersSettingsStringKey]; hasCPSettings {
+ consentedProviderSettingsInJson, hasCPSettingsIn := ue.ext[consentedProvidersSettingsStringKey]
+ if hasCPSettingsIn {
ue.consentedProvidersSettingsIn = &ConsentedProvidersSettingsIn{}
- if err := json.Unmarshal(consentedProviderSettingsJson, ue.consentedProvidersSettingsIn); err != nil {
+ }
+ if consentedProviderSettingsInJson != nil {
+ if err := jsonutil.Unmarshal(consentedProviderSettingsInJson, ue.consentedProvidersSettingsIn); err != nil {
return err
}
}
- if consentedProviderSettingsJson, hasCPSettings := ue.ext[consentedProvidersSettingsListKey]; hasCPSettings {
+ consentedProviderSettingsOutJson, hasCPSettingsOut := ue.ext[consentedProvidersSettingsListKey]
+ if hasCPSettingsOut {
ue.consentedProvidersSettingsOut = &ConsentedProvidersSettingsOut{}
- if err := json.Unmarshal(consentedProviderSettingsJson, ue.consentedProvidersSettingsOut); err != nil {
+ }
+ if consentedProviderSettingsOutJson != nil {
+ if err := jsonutil.Unmarshal(consentedProviderSettingsOutJson, ue.consentedProvidersSettingsOut); err != nil {
return err
}
}
@@ -487,7 +498,7 @@ func (ue *UserExt) unmarshal(extJson json.RawMessage) error {
func (ue *UserExt) marshal() (json.RawMessage, error) {
if ue.consentDirty {
if ue.consent != nil && len(*ue.consent) > 0 {
- consentJson, err := json.Marshal(ue.consent)
+ consentJson, err := jsonutil.Marshal(ue.consent)
if err != nil {
return nil, err
}
@@ -500,7 +511,7 @@ func (ue *UserExt) marshal() (json.RawMessage, error) {
if ue.prebidDirty {
if ue.prebid != nil {
- prebidJson, err := json.Marshal(ue.prebid)
+ prebidJson, err := jsonutil.Marshal(ue.prebid)
if err != nil {
return nil, err
}
@@ -517,7 +528,7 @@ func (ue *UserExt) marshal() (json.RawMessage, error) {
if ue.consentedProvidersSettingsInDirty {
if ue.consentedProvidersSettingsIn != nil {
- cpSettingsJson, err := json.Marshal(ue.consentedProvidersSettingsIn)
+ cpSettingsJson, err := jsonutil.Marshal(ue.consentedProvidersSettingsIn)
if err != nil {
return nil, err
}
@@ -534,7 +545,7 @@ func (ue *UserExt) marshal() (json.RawMessage, error) {
if ue.consentedProvidersSettingsOutDirty {
if ue.consentedProvidersSettingsOut != nil {
- cpSettingsJson, err := json.Marshal(ue.consentedProvidersSettingsOut)
+ cpSettingsJson, err := jsonutil.Marshal(ue.consentedProvidersSettingsOut)
if err != nil {
return nil, err
}
@@ -551,7 +562,7 @@ func (ue *UserExt) marshal() (json.RawMessage, error) {
if ue.eidsDirty {
if ue.eids != nil && len(*ue.eids) > 0 {
- eidsJson, err := json.Marshal(ue.eids)
+ eidsJson, err := jsonutil.Marshal(ue.eids)
if err != nil {
return nil, err
}
@@ -566,7 +577,7 @@ func (ue *UserExt) marshal() (json.RawMessage, error) {
if len(ue.ext) == 0 {
return nil, nil
}
- return json.Marshal(ue.ext)
+ return jsonutil.Marshal(ue.ext)
}
func (ue *UserExt) Dirty() bool {
@@ -726,14 +737,16 @@ func (re *RequestExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &re.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &re.ext); err != nil {
return err
}
prebidJson, hasPrebid := re.ext[prebidKey]
if hasPrebid {
re.prebid = &ExtRequestPrebid{}
- if err := json.Unmarshal(prebidJson, re.prebid); err != nil {
+ }
+ if prebidJson != nil {
+ if err := jsonutil.Unmarshal(prebidJson, re.prebid); err != nil {
return err
}
}
@@ -741,7 +754,9 @@ func (re *RequestExt) unmarshal(extJson json.RawMessage) error {
schainJson, hasSChain := re.ext[schainKey]
if hasSChain {
re.schain = &openrtb2.SupplyChain{}
- if err := json.Unmarshal(schainJson, re.schain); err != nil {
+ }
+ if schainJson != nil {
+ if err := jsonutil.Unmarshal(schainJson, re.schain); err != nil {
return err
}
}
@@ -752,7 +767,7 @@ func (re *RequestExt) unmarshal(extJson json.RawMessage) error {
func (re *RequestExt) marshal() (json.RawMessage, error) {
if re.prebidDirty {
if re.prebid != nil {
- prebidJson, err := json.Marshal(re.prebid)
+ prebidJson, err := jsonutil.Marshal(re.prebid)
if err != nil {
return nil, err
}
@@ -769,7 +784,7 @@ func (re *RequestExt) marshal() (json.RawMessage, error) {
if re.schainDirty {
if re.schain != nil {
- schainJson, err := json.Marshal(re.schain)
+ schainJson, err := jsonutil.Marshal(re.schain)
if err != nil {
return nil, err
}
@@ -788,7 +803,7 @@ func (re *RequestExt) marshal() (json.RawMessage, error) {
if len(re.ext) == 0 {
return nil, nil
}
- return json.Marshal(re.ext)
+ return jsonutil.Marshal(re.ext)
}
func (re *RequestExt) Dirty() bool {
@@ -880,14 +895,16 @@ func (de *DeviceExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &de.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &de.ext); err != nil {
return err
}
prebidJson, hasPrebid := de.ext[prebidKey]
if hasPrebid {
de.prebid = &ExtDevicePrebid{}
- if err := json.Unmarshal(prebidJson, de.prebid); err != nil {
+ }
+ if prebidJson != nil {
+ if err := jsonutil.Unmarshal(prebidJson, de.prebid); err != nil {
return err
}
}
@@ -898,7 +915,7 @@ func (de *DeviceExt) unmarshal(extJson json.RawMessage) error {
func (de *DeviceExt) marshal() (json.RawMessage, error) {
if de.prebidDirty {
if de.prebid != nil {
- prebidJson, err := json.Marshal(de.prebid)
+ prebidJson, err := jsonutil.Marshal(de.prebid)
if err != nil {
return nil, err
}
@@ -917,7 +934,7 @@ func (de *DeviceExt) marshal() (json.RawMessage, error) {
if len(de.ext) == 0 {
return nil, nil
}
- return json.Marshal(de.ext)
+ return jsonutil.Marshal(de.ext)
}
func (de *DeviceExt) Dirty() bool {
@@ -992,14 +1009,16 @@ func (ae *AppExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &ae.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &ae.ext); err != nil {
return err
}
prebidJson, hasPrebid := ae.ext[prebidKey]
if hasPrebid {
ae.prebid = &ExtAppPrebid{}
- if err := json.Unmarshal(prebidJson, ae.prebid); err != nil {
+ }
+ if prebidJson != nil {
+ if err := jsonutil.Unmarshal(prebidJson, ae.prebid); err != nil {
return err
}
}
@@ -1010,7 +1029,7 @@ func (ae *AppExt) unmarshal(extJson json.RawMessage) error {
func (ae *AppExt) marshal() (json.RawMessage, error) {
if ae.prebidDirty {
if ae.prebid != nil {
- prebidJson, err := json.Marshal(ae.prebid)
+ prebidJson, err := jsonutil.Marshal(ae.prebid)
if err != nil {
return nil, err
}
@@ -1029,7 +1048,7 @@ func (ae *AppExt) marshal() (json.RawMessage, error) {
if len(ae.ext) == 0 {
return nil, nil
}
- return json.Marshal(ae.ext)
+ return jsonutil.Marshal(ae.ext)
}
func (ae *AppExt) Dirty() bool {
@@ -1096,7 +1115,7 @@ func (de *DOOHExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &de.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &de.ext); err != nil {
return err
}
@@ -1108,7 +1127,7 @@ func (de *DOOHExt) marshal() (json.RawMessage, error) {
if len(de.ext) == 0 {
return nil, nil
}
- return json.Marshal(de.ext)
+ return jsonutil.Marshal(de.ext)
}
func (de *DOOHExt) Dirty() bool {
@@ -1163,20 +1182,20 @@ func (re *RegExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &re.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &re.ext); err != nil {
return err
}
gdprJson, hasGDPR := re.ext[gdprKey]
- if hasGDPR {
- if err := json.Unmarshal(gdprJson, &re.gdpr); err != nil {
+ if hasGDPR && gdprJson != nil {
+ if err := jsonutil.Unmarshal(gdprJson, &re.gdpr); err != nil {
return errors.New("gdpr must be an integer")
}
}
uspJson, hasUsp := re.ext[us_privacyKey]
- if hasUsp {
- if err := json.Unmarshal(uspJson, &re.usPrivacy); err != nil {
+ if hasUsp && uspJson != nil {
+ if err := jsonutil.Unmarshal(uspJson, &re.usPrivacy); err != nil {
return err
}
}
@@ -1187,7 +1206,7 @@ func (re *RegExt) unmarshal(extJson json.RawMessage) error {
func (re *RegExt) marshal() (json.RawMessage, error) {
if re.gdprDirty {
if re.gdpr != nil {
- rawjson, err := json.Marshal(re.gdpr)
+ rawjson, err := jsonutil.Marshal(re.gdpr)
if err != nil {
return nil, err
}
@@ -1200,7 +1219,7 @@ func (re *RegExt) marshal() (json.RawMessage, error) {
if re.usPrivacyDirty {
if len(re.usPrivacy) > 0 {
- rawjson, err := json.Marshal(re.usPrivacy)
+ rawjson, err := jsonutil.Marshal(re.usPrivacy)
if err != nil {
return nil, err
}
@@ -1215,7 +1234,7 @@ func (re *RegExt) marshal() (json.RawMessage, error) {
if len(re.ext) == 0 {
return nil, nil
}
- return json.Marshal(re.ext)
+ return jsonutil.Marshal(re.ext)
}
func (re *RegExt) Dirty() bool {
@@ -1290,13 +1309,13 @@ func (se *SiteExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &se.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &se.ext); err != nil {
return err
}
ampJson, hasAmp := se.ext[ampKey]
- if hasAmp {
- if err := json.Unmarshal(ampJson, &se.amp); err != nil {
+ if hasAmp && ampJson != nil {
+ if err := jsonutil.Unmarshal(ampJson, &se.amp); err != nil {
return errors.New(`request.site.ext.amp must be either 1, 0, or undefined`)
}
}
@@ -1307,7 +1326,7 @@ func (se *SiteExt) unmarshal(extJson json.RawMessage) error {
func (se *SiteExt) marshal() (json.RawMessage, error) {
if se.ampDirty {
if se.amp != nil {
- ampJson, err := json.Marshal(se.amp)
+ ampJson, err := jsonutil.Marshal(se.amp)
if err != nil {
return nil, err
}
@@ -1322,7 +1341,7 @@ func (se *SiteExt) marshal() (json.RawMessage, error) {
if len(se.ext) == 0 {
return nil, nil
}
- return json.Marshal(se.ext)
+ return jsonutil.Marshal(se.ext)
}
func (se *SiteExt) Dirty() bool {
@@ -1385,13 +1404,13 @@ func (se *SourceExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &se.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &se.ext); err != nil {
return err
}
schainJson, hasSChain := se.ext[schainKey]
- if hasSChain {
- if err := json.Unmarshal(schainJson, &se.schain); err != nil {
+ if hasSChain && schainJson != nil {
+ if err := jsonutil.Unmarshal(schainJson, &se.schain); err != nil {
return err
}
}
@@ -1402,7 +1421,7 @@ func (se *SourceExt) unmarshal(extJson json.RawMessage) error {
func (se *SourceExt) marshal() (json.RawMessage, error) {
if se.schainDirty {
if se.schain != nil {
- schainJson, err := json.Marshal(se.schain)
+ schainJson, err := jsonutil.Marshal(se.schain)
if err != nil {
return nil, err
}
@@ -1421,7 +1440,7 @@ func (se *SourceExt) marshal() (json.RawMessage, error) {
if len(se.ext) == 0 {
return nil, nil
}
- return json.Marshal(se.ext)
+ return jsonutil.Marshal(se.ext)
}
func (se *SourceExt) Dirty() bool {
@@ -1550,14 +1569,16 @@ func (e *ImpExt) unmarshal(extJson json.RawMessage) error {
return nil
}
- if err := json.Unmarshal(extJson, &e.ext); err != nil {
+ if err := jsonutil.Unmarshal(extJson, &e.ext); err != nil {
return err
}
prebidJson, hasPrebid := e.ext[prebidKey]
if hasPrebid {
e.prebid = &ExtImpPrebid{}
- if err := json.Unmarshal(prebidJson, e.prebid); err != nil {
+ }
+ if prebidJson != nil {
+ if err := jsonutil.Unmarshal(prebidJson, e.prebid); err != nil {
return err
}
}
@@ -1565,21 +1586,23 @@ func (e *ImpExt) unmarshal(extJson json.RawMessage) error {
dataJson, hasData := e.ext[dataKey]
if hasData {
e.data = &ExtImpData{}
- if err := json.Unmarshal(dataJson, e.data); err != nil {
+ }
+ if dataJson != nil {
+ if err := jsonutil.Unmarshal(dataJson, e.data); err != nil {
return err
}
}
tidJson, hasTid := e.ext["tid"]
- if hasTid {
- if err := json.Unmarshal(tidJson, &e.tid); err != nil {
+ if hasTid && tidJson != nil {
+ if err := jsonutil.Unmarshal(tidJson, &e.tid); err != nil {
return err
}
}
gpIdJson, hasGpId := e.ext["gpid"]
- if hasGpId {
- if err := json.Unmarshal(gpIdJson, &e.gpId); err != nil {
+ if hasGpId && gpIdJson != nil {
+ if err := jsonutil.Unmarshal(gpIdJson, &e.gpId); err != nil {
return err
}
}
@@ -1590,7 +1613,7 @@ func (e *ImpExt) unmarshal(extJson json.RawMessage) error {
func (e *ImpExt) marshal() (json.RawMessage, error) {
if e.prebidDirty {
if e.prebid != nil {
- prebidJson, err := json.Marshal(e.prebid)
+ prebidJson, err := jsonutil.Marshal(e.prebid)
if err != nil {
return nil, err
}
@@ -1607,7 +1630,7 @@ func (e *ImpExt) marshal() (json.RawMessage, error) {
if e.tidDirty {
if len(e.tid) > 0 {
- tidJson, err := json.Marshal(e.tid)
+ tidJson, err := jsonutil.Marshal(e.tid)
if err != nil {
return nil, err
}
@@ -1622,7 +1645,7 @@ func (e *ImpExt) marshal() (json.RawMessage, error) {
if len(e.ext) == 0 {
return nil, nil
}
- return json.Marshal(e.ext)
+ return jsonutil.Marshal(e.ext)
}
func (e *ImpExt) Dirty() bool {
diff --git a/openrtb_ext/request_wrapper_test.go b/openrtb_ext/request_wrapper_test.go
index afa047e6909..0127c545274 100644
--- a/openrtb_ext/request_wrapper_test.go
+++ b/openrtb_ext/request_wrapper_test.go
@@ -5,6 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/stretchr/testify/assert"
)
@@ -1792,10 +1793,10 @@ func TestImpWrapperGetImpExt(t *testing.T) {
var isRewardedInventoryOne int8 = 1
testCases := []struct {
- description string
- givenWrapper ImpWrapper
- expectedImpExt ImpExt
- expectedError string
+ description string
+ givenWrapper ImpWrapper
+ expectedImpExt ImpExt
+ expectedErrorType error
}{
{
description: "Empty",
@@ -1833,21 +1834,21 @@ func TestImpWrapperGetImpExt(t *testing.T) {
expectedImpExt: ImpExt{ext: map[string]json.RawMessage{"foo": json.RawMessage("bar")}},
},
{
- description: "Error - Ext",
- givenWrapper: ImpWrapper{Imp: &openrtb2.Imp{Ext: json.RawMessage(`malformed`)}},
- expectedError: "invalid character 'm' looking for beginning of value",
+ description: "Error - Ext",
+ givenWrapper: ImpWrapper{Imp: &openrtb2.Imp{Ext: json.RawMessage(`malformed`)}},
+ expectedErrorType: &errortypes.FailedToUnmarshal{},
},
{
- description: "Error - Ext - Prebid",
- givenWrapper: ImpWrapper{Imp: &openrtb2.Imp{Ext: json.RawMessage(`{"prebid":malformed}`)}},
- expectedError: "invalid character 'm' looking for beginning of value",
+ description: "Error - Ext - Prebid",
+ givenWrapper: ImpWrapper{Imp: &openrtb2.Imp{Ext: json.RawMessage(`{"prebid":malformed}`)}},
+ expectedErrorType: &errortypes.FailedToUnmarshal{},
},
}
for _, test := range testCases {
impExt, err := test.givenWrapper.GetImpExt()
- if test.expectedError != "" {
- assert.EqualError(t, err, test.expectedError, test.description)
+ if test.expectedErrorType != nil {
+ assert.IsType(t, test.expectedErrorType, err)
} else {
assert.NoError(t, err, test.description)
assert.Equal(t, test.expectedImpExt, *impExt, test.description)
diff --git a/openrtb_ext/site_test.go b/openrtb_ext/site_test.go
index 67ec6cc4f99..7a7140282f2 100644
--- a/openrtb_ext/site_test.go
+++ b/openrtb_ext/site_test.go
@@ -1,28 +1,28 @@
package openrtb_ext_test
import (
- "encoding/json"
"testing"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
func TestInvalidSiteExt(t *testing.T) {
var s openrtb_ext.ExtSite
- assert.EqualError(t, json.Unmarshal([]byte(`{"amp":-1}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
- assert.EqualError(t, json.Unmarshal([]byte(`{"amp":2}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
- assert.EqualError(t, json.Unmarshal([]byte(`{"amp":true}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
- assert.EqualError(t, json.Unmarshal([]byte(`{"amp":null}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
- assert.EqualError(t, json.Unmarshal([]byte(`{"amp":"1"}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"amp":-1}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"amp":2}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"amp":true}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"amp":null}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
+ assert.EqualError(t, jsonutil.UnmarshalValid([]byte(`{"amp":"1"}`), &s), "request.site.ext.amp must be either 1, 0, or undefined")
}
func TestValidSiteExt(t *testing.T) {
var s openrtb_ext.ExtSite
- assert.NoError(t, json.Unmarshal([]byte(`{"amp":0}`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{"amp":0}`), &s))
assert.EqualValues(t, 0, s.AMP)
- assert.NoError(t, json.Unmarshal([]byte(`{"amp":1}`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{"amp":1}`), &s))
assert.EqualValues(t, 1, s.AMP)
- assert.NoError(t, json.Unmarshal([]byte(`{"amp": 1 }`), &s))
+ assert.NoError(t, jsonutil.UnmarshalValid([]byte(`{"amp": 1 }`), &s))
assert.EqualValues(t, 1, s.AMP)
}
diff --git a/ortb/default_test.go b/ortb/default_test.go
index 04eeeebdcb6..8bda02ef4f5 100644
--- a/ortb/default_test.go
+++ b/ortb/default_test.go
@@ -8,7 +8,9 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "github.com/prebid/prebid-server/errortypes"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
)
@@ -31,7 +33,7 @@ func TestSetDefaults(t *testing.T) {
name: "malformed request.ext",
givenRequest: openrtb2.BidRequest{Ext: json.RawMessage(`malformed`)},
expectedRequest: openrtb2.BidRequest{Ext: json.RawMessage(`malformed`)},
- expectedErr: "invalid character 'm' looking for beginning of value",
+ expectedErr: "expect { or n, but found m",
},
{
name: "targeting", // tests integration with setDefaultsTargeting
@@ -55,6 +57,7 @@ func TestSetDefaults(t *testing.T) {
// assert error
if len(test.expectedErr) > 0 {
assert.EqualError(t, err, test.expectedErr, "Error")
+ assert.IsType(t, &errortypes.FailedToUnmarshal{}, err)
}
// rebuild request
@@ -66,10 +69,10 @@ func TestSetDefaults(t *testing.T) {
assert.Equal(t, &test.expectedRequest, wrapper.BidRequest, "Request")
} else {
// assert request as json to ignore order in ext fields
- expectedRequestJSON, err := json.Marshal(test.expectedRequest)
+ expectedRequestJSON, err := jsonutil.Marshal(test.expectedRequest)
require.NoError(t, err, "Marshal Expected Request")
- actualRequestJSON, err := json.Marshal(wrapper.BidRequest)
+ actualRequestJSON, err := jsonutil.Marshal(wrapper.BidRequest)
require.NoError(t, err, "Marshal Actual Request")
assert.JSONEq(t, string(expectedRequestJSON), string(actualRequestJSON), "Request")
diff --git a/prebid_cache_client/client_test.go b/prebid_cache_client/client_test.go
index ec390364849..f20d3c7829f 100644
--- a/prebid_cache_client/client_test.go
+++ b/prebid_cache_client/client_test.go
@@ -13,6 +13,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/metrics"
metricsConf "github.com/prebid/prebid-server/metrics/config"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@@ -297,7 +298,7 @@ func newHandler(numResponses int) http.HandlerFunc {
resp.Responses[i].UUID = strconv.Itoa(i)
}
- respBytes, _ := json.Marshal(resp)
+ respBytes, _ := jsonutil.Marshal(resp)
w.Write(respBytes)
})
}
diff --git a/privacy/scrubber.go b/privacy/scrubber.go
index 59b74a2532b..0cfc7cdd7f4 100644
--- a/privacy/scrubber.go
+++ b/privacy/scrubber.go
@@ -6,6 +6,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/ptrutil"
"github.com/prebid/openrtb/v19/openrtb2"
@@ -103,7 +104,7 @@ func (s scrubber) ScrubRequest(bidRequest *openrtb2.BidRequest, enforcement Enfo
if userCopy != nil && (enforcement.UFPD || enforcement.Eids) {
if len(userCopy.Ext) != 0 {
- json.Unmarshal(userCopy.Ext, &userExtParsed)
+ jsonutil.Unmarshal(userCopy.Ext, &userExtParsed)
}
}
@@ -148,7 +149,7 @@ func (s scrubber) ScrubRequest(bidRequest *openrtb2.BidRequest, enforcement Enfo
}
if userExtModified {
- userExt, _ := json.Marshal(userExtParsed)
+ userExt, _ := jsonutil.Marshal(userExtParsed)
userCopy.Ext = userExt
}
@@ -283,7 +284,7 @@ func scrubExtIDs(ext json.RawMessage, fieldName string) json.RawMessage {
}
var userExtParsed map[string]json.RawMessage
- err := json.Unmarshal(ext, &userExtParsed)
+ err := jsonutil.Unmarshal(ext, &userExtParsed)
if err != nil {
return ext
}
@@ -291,7 +292,7 @@ func scrubExtIDs(ext json.RawMessage, fieldName string) json.RawMessage {
_, hasField := userExtParsed[fieldName]
if hasField {
delete(userExtParsed, fieldName)
- result, err := json.Marshal(userExtParsed)
+ result, err := jsonutil.Marshal(userExtParsed)
if err == nil {
return result
}
diff --git a/router/router.go b/router/router.go
index 29bd8382e78..70b7860d661 100644
--- a/router/router.go
+++ b/router/router.go
@@ -34,6 +34,7 @@ import (
"github.com/prebid/prebid-server/server/ssl"
storedRequestsConf "github.com/prebid/prebid-server/stored_requests/config"
"github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/prebid/prebid-server/util/uuidutil"
"github.com/prebid/prebid-server/version"
@@ -91,7 +92,7 @@ func newJsonDirectoryServer(schemaDirectory string, validator openrtb_ext.Bidder
data[aliasName] = bidderData
}
- response, err := json.Marshal(data)
+ response, err := jsonutil.Marshal(data)
if err != nil {
glog.Fatalf("Failed to marshal bidder param JSON-schema: %v", err)
}
@@ -358,7 +359,7 @@ func readDefaultRequest(defReqConfig config.DefReqConfig) (map[string]string, []
return aliases, []byte{}
}
- if err := json.Unmarshal(defReqJSON, defReq); err != nil {
+ if err := jsonutil.UnmarshalValid(defReqJSON, defReq); err != nil {
// we might not have aliases defined, but will atleast show that the JSON file is parsable.
glog.Fatalf("error parsing alias json in file %s: %v", defReqConfig.FileSystem.FileName, err)
return aliases, []byte{}
diff --git a/router/router_test.go b/router/router_test.go
index 41c2a724c91..f4f7715e6c3 100644
--- a/router/router_test.go
+++ b/router/router_test.go
@@ -9,6 +9,7 @@ import (
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -45,7 +46,7 @@ func TestNewJsonDirectoryServer(t *testing.T) {
handler(recorder, request, nil)
var data map[string]json.RawMessage
- json.Unmarshal(recorder.Body.Bytes(), &data)
+ jsonutil.UnmarshalValid(recorder.Body.Bytes(), &data)
// Make sure that every adapter has a json schema by the same name associated with it.
adapterFiles, err := os.ReadDir(adapterDirectory)
diff --git a/schain/schainwriter.go b/schain/schainwriter.go
index 7e2161adb3b..e7c9dd4ce72 100644
--- a/schain/schainwriter.go
+++ b/schain/schainwriter.go
@@ -1,10 +1,9 @@
package schain
import (
- "encoding/json"
-
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
// NewSChainWriter creates an ORTB 2.5 schain writer instance
@@ -70,7 +69,7 @@ func (w SChainWriter) Write(req *openrtb2.BidRequest, bidder string) {
schain.SChain.Nodes = append(schain.SChain.Nodes, *w.hostSChainNode)
}
- sourceExt, err := json.Marshal(schain)
+ sourceExt, err := jsonutil.Marshal(schain)
if err == nil {
req.Source.Ext = sourceExt
}
diff --git a/schain/schainwriter_test.go b/schain/schainwriter_test.go
index e98c962b4fa..9288b531d56 100644
--- a/schain/schainwriter_test.go
+++ b/schain/schainwriter_test.go
@@ -6,6 +6,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -197,7 +198,7 @@ func TestSChainWriter(t *testing.T) {
var reqExt *openrtb_ext.ExtRequest
if tt.giveRequest.Ext != nil {
reqExt = &openrtb_ext.ExtRequest{}
- err := json.Unmarshal(tt.giveRequest.Ext, reqExt)
+ err := jsonutil.UnmarshalValid(tt.giveRequest.Ext, reqExt)
if err != nil {
t.Error("Unable to unmarshal request.ext")
}
diff --git a/stored_requests/backends/file_fetcher/fetcher.go b/stored_requests/backends/file_fetcher/fetcher.go
index 56f5bdf853c..a9bbe919dcf 100644
--- a/stored_requests/backends/file_fetcher/fetcher.go
+++ b/stored_requests/backends/file_fetcher/fetcher.go
@@ -8,6 +8,7 @@ import (
"strings"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
@@ -78,7 +79,7 @@ func (fetcher *eagerFetcher) FetchCategories(ctx context.Context, primaryAdServe
tmp := make(map[string]stored_requests.Category)
- if err := json.Unmarshal(file, &tmp); err != nil {
+ if err := jsonutil.UnmarshalValid(file, &tmp); err != nil {
return "", fmt.Errorf("Unable to unmarshal categories for adserver: '%s', publisherId: '%s'", primaryAdServer, publisherId)
}
fetcher.Categories[fileName] = tmp
diff --git a/stored_requests/backends/file_fetcher/fetcher_test.go b/stored_requests/backends/file_fetcher/fetcher_test.go
index 3c585f9f456..a69945641f1 100644
--- a/stored_requests/backends/file_fetcher/fetcher_test.go
+++ b/stored_requests/backends/file_fetcher/fetcher_test.go
@@ -7,6 +7,7 @@ import (
"testing"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -58,7 +59,7 @@ func validateStoredReqOne(t *testing.T, storedRequests map[string]json.RawMessag
}
var req1Val map[string]string
- if err := json.Unmarshal(value, &req1Val); err != nil {
+ if err := jsonutil.UnmarshalValid(value, &req1Val); err != nil {
t.Errorf("Failed to unmarshal 1: %v", err)
}
if len(req1Val) != 1 {
@@ -80,7 +81,7 @@ func validateStoredReqTwo(t *testing.T, storedRequests map[string]json.RawMessag
}
var req2Val string
- if err := json.Unmarshal(value, &req2Val); err != nil {
+ if err := jsonutil.UnmarshalValid(value, &req2Val); err != nil {
t.Errorf("Failed to unmarshal %d: %v", 2, err)
}
if req2Val != `esca"ped` {
@@ -95,7 +96,7 @@ func validateImp(t *testing.T, storedImps map[string]json.RawMessage) {
}
var impVal map[string]bool
- if err := json.Unmarshal(value, &impVal); err != nil {
+ if err := jsonutil.UnmarshalValid(value, &impVal); err != nil {
t.Errorf("Failed to unmarshal some-imp: %v", err)
}
if len(impVal) != 1 {
diff --git a/stored_requests/backends/http_fetcher/fetcher.go b/stored_requests/backends/http_fetcher/fetcher.go
index 326b63fce71..88afa39fb1d 100644
--- a/stored_requests/backends/http_fetcher/fetcher.go
+++ b/stored_requests/backends/http_fetcher/fetcher.go
@@ -1,7 +1,6 @@
package http_fetcher
import (
- "bytes"
"context"
"encoding/json"
"fmt"
@@ -11,6 +10,7 @@ import (
"strings"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
"github.com/golang/glog"
@@ -142,7 +142,7 @@ func (fetcher *HttpFetcher) FetchAccounts(ctx context.Context, accountIDs []stri
}
}
var responseData accountsResponseContract
- if err = json.Unmarshal(respBytes, &responseData); err != nil {
+ if err = jsonutil.UnmarshalValid(respBytes, &responseData); err != nil {
return nil, []error{
fmt.Errorf(`Error fetching accounts %v via http: failed to parse response: %v`, accountIDs, err),
}
@@ -209,7 +209,7 @@ func (fetcher *HttpFetcher) FetchCategories(ctx context.Context, primaryAdServer
respBytes, err := io.ReadAll(httpResp.Body)
tmp := make(map[string]stored_requests.Category)
- if err := json.Unmarshal(respBytes, &tmp); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, &tmp); err != nil {
return "", fmt.Errorf("Unable to unmarshal categories for adserver: '%s', publisherId: '%s'", primaryAdServer, publisherId)
}
fetcher.Categories[dataName] = tmp
@@ -240,7 +240,7 @@ func unpackResponse(resp *http.Response) (requestData map[string]json.RawMessage
if resp.StatusCode == http.StatusOK {
var responseObj responseContract
- if err := json.Unmarshal(respBytes, &responseObj); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, &responseObj); err != nil {
errs = append(errs, err)
return
}
@@ -260,7 +260,7 @@ func unpackResponse(resp *http.Response) (requestData map[string]json.RawMessage
func convertNullsToErrs(m map[string]json.RawMessage, dataType string, errs []error) []error {
for id, val := range m {
- if bytes.Equal(val, []byte("null")) {
+ if val == nil {
delete(m, id)
errs = append(errs, stored_requests.NotFoundError{
ID: id,
diff --git a/stored_requests/backends/http_fetcher/fetcher_test.go b/stored_requests/backends/http_fetcher/fetcher_test.go
index 3c8ca7cb070..80be6918ad8 100644
--- a/stored_requests/backends/http_fetcher/fetcher_test.go
+++ b/stored_requests/backends/http_fetcher/fetcher_test.go
@@ -10,6 +10,7 @@ import (
"testing"
"time"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -233,7 +234,7 @@ func newHandler(t *testing.T, expectReqIDs []string, expectImpIDs []string, json
Imps: impIDResponse,
}
- if respBytes, err := json.Marshal(respObj); err != nil {
+ if respBytes, err := jsonutil.Marshal(respObj); err != nil {
t.Errorf("failed to marshal responseContract in test: %v", err)
w.WriteHeader(http.StatusInternalServerError)
} else {
@@ -267,7 +268,7 @@ func newAccountHandler(t *testing.T, expectAccIDs []string) func(w http.Response
Accounts: accIDResponse,
}
- if respBytes, err := json.Marshal(respObj); err != nil {
+ if respBytes, err := jsonutil.Marshal(respObj); err != nil {
t.Errorf("failed to marshal responseContract in test: %v", err)
w.WriteHeader(http.StatusInternalServerError)
} else {
@@ -327,7 +328,7 @@ func richSplit(queryVal string) []string {
}
func jsonifyID(id string) json.RawMessage {
- if b, err := json.Marshal(id); err != nil {
+ if b, err := jsonutil.Marshal(id); err != nil {
return json.RawMessage([]byte("\"error encoding ID=" + id + "\""))
} else {
return json.RawMessage(b)
diff --git a/stored_requests/events/api/api.go b/stored_requests/events/api/api.go
index bf8edd2d849..30778f0e11a 100644
--- a/stored_requests/events/api/api.go
+++ b/stored_requests/events/api/api.go
@@ -1,12 +1,12 @@
package api
import (
- "encoding/json"
"io"
"net/http"
"github.com/julienschmidt/httprouter"
"github.com/prebid/prebid-server/stored_requests/events"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type eventsAPI struct {
@@ -43,7 +43,7 @@ func (api *eventsAPI) HandleEvent(w http.ResponseWriter, r *http.Request, _ http
}
var save events.Save
- if err := json.Unmarshal(body, &save); err != nil {
+ if err := jsonutil.UnmarshalValid(body, &save); err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("Invalid update.\n"))
return
@@ -59,7 +59,7 @@ func (api *eventsAPI) HandleEvent(w http.ResponseWriter, r *http.Request, _ http
}
var invalidation events.Invalidation
- if err := json.Unmarshal(body, &invalidation); err != nil {
+ if err := jsonutil.UnmarshalValid(body, &invalidation); err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("Invalid invalidation.\n"))
return
diff --git a/stored_requests/events/http/http.go b/stored_requests/events/http/http.go
index 1c4f8fdff73..be5b85a03a6 100644
--- a/stored_requests/events/http/http.go
+++ b/stored_requests/events/http/http.go
@@ -13,6 +13,7 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/prebid-server/stored_requests/events"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/golang/glog"
)
@@ -184,7 +185,7 @@ func (e *HTTPEvents) parse(endpoint string, resp *httpCore.Response, err error)
}
var respObj responseContract
- if err := json.Unmarshal(respBytes, &respObj); err != nil {
+ if err := jsonutil.UnmarshalValid(respBytes, &respObj); err != nil {
glog.Errorf("Failed to unmarshal body of GET %s for Stored Requests: %v", endpoint, err)
return nil, false
}
diff --git a/stored_requests/events/http/http_test.go b/stored_requests/events/http/http_test.go
index a185a3c2360..663d8cd193f 100644
--- a/stored_requests/events/http/http_test.go
+++ b/stored_requests/events/http/http_test.go
@@ -2,13 +2,13 @@ package http
import (
"context"
- "encoding/json"
"fmt"
httpCore "net/http"
"net/http/httptest"
"testing"
"time"
+ "github.com/prebid/prebid-server/util/jsonutil"
"github.com/stretchr/testify/assert"
)
@@ -151,14 +151,14 @@ func TestStartup(t *testing.T) {
t.Run(fmt.Sprintf("Step %d", i+1), func(t *testing.T) {
// Check expected Saves
if len(test.saves) > 0 {
- saves, err := json.Marshal(<-ev.Saves())
+ saves, err := jsonutil.Marshal(<-ev.Saves())
assert.NoError(t, err, `Failed to marshal event.Save object: %v`, err)
assert.JSONEq(t, test.saves, string(saves))
}
assert.Empty(t, ev.Saves(), "Unexpected additional messages in save channel")
// Check expected Invalidations
if len(test.invalidations) > 0 {
- invalidations, err := json.Marshal(<-ev.Invalidations())
+ invalidations, err := jsonutil.Marshal(<-ev.Invalidations())
assert.NoError(t, err, `Failed to marshal event.Invalidation object: %v`, err)
assert.JSONEq(t, test.invalidations, string(invalidations))
}
diff --git a/stored_responses/stored_responses.go b/stored_responses/stored_responses.go
index 6a5da01deba..ef8fe50619d 100644
--- a/stored_responses/stored_responses.go
+++ b/stored_responses/stored_responses.go
@@ -9,6 +9,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type ImpsWithAuctionResponseIDs map[string]string
@@ -210,7 +211,7 @@ func parseImpInfo(requestJson []byte) (impData []ImpExtPrebidData, errs []error)
impExtData, _, _, err := jsonparser.Get(imp, "ext", "prebid")
var impExtPrebid openrtb_ext.ExtImpPrebid
if impExtData != nil {
- if err := json.Unmarshal(impExtData, &impExtPrebid); err != nil {
+ if err := jsonutil.Unmarshal(impExtData, &impExtPrebid); err != nil {
errs = append(errs, err)
}
}
diff --git a/usersync/cookie.go b/usersync/cookie.go
index 94ada94ed75..88524018c49 100644
--- a/usersync/cookie.go
+++ b/usersync/cookie.go
@@ -1,13 +1,13 @@
package usersync
import (
- "encoding/json"
"errors"
"net/http"
"time"
"github.com/prebid/prebid-server/config"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
const uidCookieName = "uids"
@@ -226,7 +226,7 @@ type cookieJson struct {
}
func (cookie *Cookie) MarshalJSON() ([]byte, error) {
- return json.Marshal(cookieJson{
+ return jsonutil.Marshal(cookieJson{
UIDs: cookie.uids,
OptOut: cookie.optOut,
})
@@ -234,7 +234,7 @@ func (cookie *Cookie) MarshalJSON() ([]byte, error) {
func (cookie *Cookie) UnmarshalJSON(b []byte) error {
var cookieContract cookieJson
- if err := json.Unmarshal(b, &cookieContract); err != nil {
+ if err := jsonutil.Unmarshal(b, &cookieContract); err != nil {
return err
}
diff --git a/usersync/decoder.go b/usersync/decoder.go
index 3ff13aa3242..c803fbe2a52 100644
--- a/usersync/decoder.go
+++ b/usersync/decoder.go
@@ -2,12 +2,12 @@ package usersync
import (
"encoding/base64"
- "encoding/json"
+
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type Decoder interface {
- // Decode takes an encoded string and decodes it into a cookie
- Decode(v string) *Cookie
+ Decode(encodedValue string) *Cookie
}
type Base64Decoder struct{}
@@ -19,7 +19,7 @@ func (d Base64Decoder) Decode(encodedValue string) *Cookie {
}
var cookie Cookie
- if err = json.Unmarshal(jsonValue, &cookie); err != nil {
+ if err = jsonutil.UnmarshalValid(jsonValue, &cookie); err != nil {
return NewCookie()
}
diff --git a/usersync/encoder.go b/usersync/encoder.go
index eef7e2ef34f..74472f23307 100644
--- a/usersync/encoder.go
+++ b/usersync/encoder.go
@@ -2,7 +2,8 @@ package usersync
import (
"encoding/base64"
- "encoding/json"
+
+ "github.com/prebid/prebid-server/util/jsonutil"
)
type Encoder interface {
@@ -13,7 +14,7 @@ type Encoder interface {
type Base64Encoder struct{}
func (e Base64Encoder) Encode(c *Cookie) (string, error) {
- j, err := json.Marshal(c)
+ j, err := jsonutil.Marshal(c)
if err != nil {
return "", err
}
diff --git a/util/jsonutil/jsonutil.go b/util/jsonutil/jsonutil.go
index 3b468731cad..a8981477dc6 100644
--- a/util/jsonutil/jsonutil.go
+++ b/util/jsonutil/jsonutil.go
@@ -4,14 +4,16 @@ import (
"bytes"
"encoding/json"
"io"
+ "strings"
+
+ jsoniter "github.com/json-iterator/go"
+ "github.com/prebid/prebid-server/errortypes"
)
-var comma = []byte(",")[0]
-var colon = []byte(":")[0]
-var sqBracket = []byte("]")[0]
-var openCurlyBracket = []byte("{")[0]
-var closingCurlyBracket = []byte("}")[0]
-var quote = []byte(`"`)[0]
+var comma = byte(',')
+var colon = byte(':')
+var sqBracket = byte(']')
+var closingCurlyBracket = byte('}')
// Finds element in json byte array with any level of nesting
func FindElement(extension []byte, elementNames ...string) (bool, int64, int64, error) {
@@ -110,3 +112,102 @@ func DropElement(extension []byte, elementNames ...string) ([]byte, error) {
}
return extension, nil
}
+
+// jsonConfigValidationOn attempts to maintain compatibility with the standard library which
+// includes enabling validation
+var jsonConfigValidationOn = jsoniter.ConfigCompatibleWithStandardLibrary
+
+// jsonConfigValidationOff disables validation
+var jsonConfigValidationOff = jsoniter.Config{
+ EscapeHTML: true,
+ SortMapKeys: true,
+ ValidateJsonRawMessage: false,
+}.Froze()
+
+// Unmarshal unmarshals a byte slice into the specified data structure without performing
+// any validation on the data. An unmarshal error is returned if a non-validation error occurs.
+func Unmarshal(data []byte, v interface{}) error {
+ err := jsonConfigValidationOff.Unmarshal(data, v)
+ if err != nil {
+ return &errortypes.FailedToUnmarshal{
+ Message: tryExtractErrorMessage(err),
+ }
+ }
+ return nil
+}
+
+// UnmarshalValid validates and unmarshals a byte slice into the specified data structure
+// returning an error if validation fails
+func UnmarshalValid(data []byte, v interface{}) error {
+ if err := jsonConfigValidationOn.Unmarshal(data, v); err != nil {
+ return &errortypes.FailedToUnmarshal{
+ Message: tryExtractErrorMessage(err),
+ }
+ }
+ return nil
+}
+
+// Marshal marshals a data structure into a byte slice without performing any validation
+// on the data. A marshal error is returned if a non-validation error occurs.
+func Marshal(v interface{}) ([]byte, error) {
+ data, err := jsonConfigValidationOn.Marshal(v)
+ if err != nil {
+ return nil, &errortypes.FailedToMarshal{
+ Message: err.Error(),
+ }
+ }
+ return data, nil
+}
+
+// tryExtractErrorMessage attempts to extract a sane error message from the json-iter package. The errors
+// returned from that library are not types and include a lot of extra information we don't want to respond with.
+// This is hacky, but it's the only downside to the json-iter library.
+func tryExtractErrorMessage(err error) string {
+ msg := err.Error()
+
+ msgEndIndex := strings.LastIndex(msg, ", error found in #")
+ if msgEndIndex == -1 {
+ return msg
+ }
+
+ msgStartIndex := strings.Index(msg, ": ")
+ if msgStartIndex == -1 {
+ return msg
+ }
+
+ operationStack := []string{msg[0:msgStartIndex]}
+ for {
+ msgStartIndexNext := strings.Index(msg[msgStartIndex+2:], ": ")
+
+ // no more matches
+ if msgStartIndexNext == -1 {
+ break
+ }
+
+ // matches occur after the end message marker (sanity check)
+ if (msgStartIndex + msgStartIndexNext) >= msgEndIndex {
+ break
+ }
+
+ // match should not contain a space, indicates operation is really an error message
+ match := msg[msgStartIndex+2 : msgStartIndex+2+msgStartIndexNext]
+ if strings.Contains(match, " ") {
+ break
+ }
+
+ operationStack = append(operationStack, match)
+ msgStartIndex += msgStartIndexNext + 2
+ }
+
+ if len(operationStack) > 1 && isLikelyDetailedErrorMessage(msg[msgStartIndex+2:]) {
+ return "cannot unmarshal " + operationStack[len(operationStack)-2] + ": " + msg[msgStartIndex+2:msgEndIndex]
+ }
+
+ return msg[msgStartIndex+2 : msgEndIndex]
+}
+
+// isLikelyDetailedErrorMessage checks if the json unmarshal error contains enough information such
+// that the caller clearly understands the context, where the structure name is not needed.
+func isLikelyDetailedErrorMessage(msg string) bool {
+ return !strings.HasPrefix(msg, "request.")
+}
diff --git a/util/jsonutil/jsonutil_test.go b/util/jsonutil/jsonutil_test.go
index 12b1fd5e803..09fb6727309 100644
--- a/util/jsonutil/jsonutil_test.go
+++ b/util/jsonutil/jsonutil_test.go
@@ -1,13 +1,14 @@
package jsonutil
import (
- "github.com/stretchr/testify/assert"
+ "errors"
"strings"
"testing"
+
+ "github.com/stretchr/testify/assert"
)
func TestDropElement(t *testing.T) {
-
tests := []struct {
description string
input []byte
@@ -183,3 +184,59 @@ func TestDropElement(t *testing.T) {
}
}
}
+
+func TestTryExtractErrorMessage(t *testing.T) {
+ tests := []struct {
+ name string
+ givenErr string
+ expectedMsg string
+ }{
+ {
+ name: "level-1",
+ givenErr: "readObjectStart: expect { or n, but found m, error found in #1 byte of ...|malformed|..., bigger context ...|malformed|..",
+ expectedMsg: "expect { or n, but found m",
+ },
+ {
+ name: "level-2",
+ givenErr: "openrtb_ext.ExtRequestPrebidCache.Bids: readObjectStart: expect { or n, but found t, error found in #10 byte of ...|:{\"bids\":true}}|..., bigger context ...|{\"cache\":{\"bids\":true}}|...",
+ expectedMsg: "cannot unmarshal openrtb_ext.ExtRequestPrebidCache.Bids: expect { or n, but found t",
+ },
+ {
+ name: "level-3+",
+ givenErr: "openrtb_ext.ExtRequestPrebid.Cache: openrtb_ext.ExtRequestPrebidCache.Bids: readObjectStart: expect { or n, but found t, error found in #10 byte of ...|:{\"bids\":true}}|..., bigger context ...|{\"cache\":{\"bids\":true}}|...",
+ expectedMsg: "cannot unmarshal openrtb_ext.ExtRequestPrebidCache.Bids: expect { or n, but found t",
+ },
+ {
+ name: "error-msg",
+ givenErr: "Skip: do not know how to skip: 109, error found in #10 byte of ...|prebid\": malformed}|..., bigger context ...|{\"prebid\": malformed}|...",
+ expectedMsg: "do not know how to skip: 109",
+ },
+ {
+ name: "specific",
+ givenErr: "openrtb_ext.ExtDevicePrebid.Interstitial: unmarshalerDecoder: request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100, error found in #10 byte of ...| }\n }|..., bigger context ...|: 120,\n \"minheightperc\": 60\n }\n }|...",
+ expectedMsg: "request.device.ext.prebid.interstitial.minwidthperc must be a number between 0 and 100",
+ },
+ {
+ name: "normal",
+ givenErr: "normal error message",
+ expectedMsg: "normal error message",
+ },
+ {
+ name: "norma-false-start",
+ givenErr: "false: normal error message",
+ expectedMsg: "false: normal error message",
+ },
+ {
+ name: "norma-false-end",
+ givenErr: "normal error message, error found in #10 but doesn't follow format",
+ expectedMsg: "normal error message, error found in #10 but doesn't follow format",
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ result := tryExtractErrorMessage(errors.New(test.givenErr))
+ assert.Equal(t, test.expectedMsg, result)
+ })
+ }
+}
diff --git a/util/jsonutil/stringInt_test.go b/util/jsonutil/stringInt_test.go
index e8639c7acee..cd2f3476e46 100644
--- a/util/jsonutil/stringInt_test.go
+++ b/util/jsonutil/stringInt_test.go
@@ -1,7 +1,6 @@
package jsonutil
import (
- "encoding/json"
"testing"
"github.com/buger/jsonparser"
@@ -16,27 +15,27 @@ func TestStringIntUnmarshalJSON(t *testing.T) {
t.Run("string", func(t *testing.T) {
jsonData := []byte(`{"item_id":"30"}`)
var item Item
- assert.NoError(t, json.Unmarshal(jsonData, &item))
+ assert.NoError(t, UnmarshalValid(jsonData, &item))
assert.Equal(t, 30, int(item.ItemId))
})
t.Run("int", func(t *testing.T) {
jsonData := []byte(`{"item_id":30}`)
var item Item
- assert.NoError(t, json.Unmarshal(jsonData, &item))
+ assert.NoError(t, UnmarshalValid(jsonData, &item))
assert.Equal(t, 30, int(item.ItemId))
})
t.Run("empty_id", func(t *testing.T) {
jsonData := []byte(`{"item_id": ""}`)
var item Item
- assert.NoError(t, json.Unmarshal(jsonData, &item))
+ assert.NoError(t, UnmarshalValid(jsonData, &item))
})
t.Run("invalid_input", func(t *testing.T) {
jsonData := []byte(`{"item_id":true}`)
var item Item
- err := json.Unmarshal(jsonData, &item)
- assert.Equal(t, jsonparser.MalformedValueError, err)
+ err := UnmarshalValid(jsonData, &item)
+ assert.EqualError(t, err, "cannot unmarshal jsonutil.Item.ItemId: "+jsonparser.MalformedValueError.Error())
})
}
diff --git a/version/xprebidheader_test.go b/version/xprebidheader_test.go
index 90aef6cb420..a1c7b355bb8 100644
--- a/version/xprebidheader_test.go
+++ b/version/xprebidheader_test.go
@@ -1,13 +1,13 @@
package version
import (
- "encoding/json"
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
"github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/util/jsonutil"
)
func TestBuildXPrebidHeader(t *testing.T) {
@@ -134,12 +134,12 @@ func TestBuildXPrebidHeaderForRequest(t *testing.T) {
for _, test := range testCases {
req := &openrtb2.BidRequest{}
if test.requestExt != nil {
- reqExt, err := json.Marshal(test.requestExt)
+ reqExt, err := jsonutil.Marshal(test.requestExt)
assert.NoError(t, err, test.description+":err marshalling reqExt")
req.Ext = reqExt
}
if test.requestAppExt != nil {
- reqAppExt, err := json.Marshal(test.requestAppExt)
+ reqAppExt, err := jsonutil.Marshal(test.requestAppExt)
assert.NoError(t, err, test.description+":err marshalling reqAppExt")
req.App = &openrtb2.App{Ext: reqAppExt}
}
From cd03a0f25ff0e5e4f8d5bc91429ad243e27cd6a8 Mon Sep 17 00:00:00 2001
From: Scott Kay
Date: Thu, 19 Oct 2023 15:56:09 -0400
Subject: [PATCH 30/34] Restore Alias User Syncs (#3244)
---
static/bidder-info/adform.yaml | 4 ++++
static/bidder-info/quantumdex.yaml | 9 ++++++++-
static/bidder-info/valueimpression.yaml | 9 ++++++++-
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/static/bidder-info/adform.yaml b/static/bidder-info/adform.yaml
index 4aa6e70f1d0..2ad892785ce 100644
--- a/static/bidder-info/adform.yaml
+++ b/static/bidder-info/adform.yaml
@@ -1 +1,5 @@
aliasOf: adf
+userSync:
+ redirect:
+ url: "https://cm.adform.net/cookie?redirect_url={{.RedirectURL}}"
+ userMacro: "$UID"
diff --git a/static/bidder-info/quantumdex.yaml b/static/bidder-info/quantumdex.yaml
index 32043ad62fb..fae2a987dd7 100644
--- a/static/bidder-info/quantumdex.yaml
+++ b/static/bidder-info/quantumdex.yaml
@@ -1 +1,8 @@
-aliasOf: "apacdex"
\ No newline at end of file
+aliasOf: "apacdex"
+userSync:
+ iframe:
+ url: https://sync.quantumdex.io/usersync/pbs?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}
+ userMacro: "[UID]"
+ redirect:
+ url: "https://sync.quantumdex.io/getuid?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}"
+ userMacro: "[UID]"
diff --git a/static/bidder-info/valueimpression.yaml b/static/bidder-info/valueimpression.yaml
index 32043ad62fb..fae2a987dd7 100644
--- a/static/bidder-info/valueimpression.yaml
+++ b/static/bidder-info/valueimpression.yaml
@@ -1 +1,8 @@
-aliasOf: "apacdex"
\ No newline at end of file
+aliasOf: "apacdex"
+userSync:
+ iframe:
+ url: https://sync.quantumdex.io/usersync/pbs?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}
+ userMacro: "[UID]"
+ redirect:
+ url: "https://sync.quantumdex.io/getuid?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&r={{.RedirectURL}}"
+ userMacro: "[UID]"
From 50ad642976f3de1e06a310eb87dc694de866123a Mon Sep 17 00:00:00 2001
From: dennisjay
Date: Fri, 20 Oct 2023 00:13:29 +0200
Subject: [PATCH 31/34] Revert "Remove Adapter: Define Media" (#3242)
---
adapters/definemedia/definemedia.go | 109 +++++++
adapters/definemedia/definemedia_test.go | 21 ++
.../exemplary/sample-conative-banner.json | 270 ++++++++++++++++++
.../exemplary/sample-conative-native.json | 257 +++++++++++++++++
.../supplemental/nobid-response.json | 222 ++++++++++++++
.../supplemental/nocontent-response.json | 219 ++++++++++++++
.../supplemental/status_400.json | 224 +++++++++++++++
.../supplemental/status_418.json | 224 +++++++++++++++
.../supplemental/unmarshal-error.json | 224 +++++++++++++++
.../supplemental/unsupported-type.json | 250 ++++++++++++++++
adapters/definemedia/params_test.go | 48 ++++
exchange/adapter_builders.go | 2 +
exchange/adapter_util.go | 1 -
openrtb_ext/bidders.go | 2 +
openrtb_ext/imp_definemedia.go | 6 +
static/bidder-info/definemedia.yaml | 10 +
static/bidder-params/definemedia.json | 19 ++
17 files changed, 2107 insertions(+), 1 deletion(-)
create mode 100644 adapters/definemedia/definemedia.go
create mode 100644 adapters/definemedia/definemedia_test.go
create mode 100644 adapters/definemedia/definemediatest/exemplary/sample-conative-banner.json
create mode 100644 adapters/definemedia/definemediatest/exemplary/sample-conative-native.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/nobid-response.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/nocontent-response.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/status_400.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/status_418.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/unmarshal-error.json
create mode 100644 adapters/definemedia/definemediatest/supplemental/unsupported-type.json
create mode 100644 adapters/definemedia/params_test.go
create mode 100644 openrtb_ext/imp_definemedia.go
create mode 100644 static/bidder-info/definemedia.yaml
create mode 100644 static/bidder-params/definemedia.json
diff --git a/adapters/definemedia/definemedia.go b/adapters/definemedia/definemedia.go
new file mode 100644
index 00000000000..3e014e3c16d
--- /dev/null
+++ b/adapters/definemedia/definemedia.go
@@ -0,0 +1,109 @@
+package definemedia
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+type adapter struct {
+ endpoint string
+}
+
+// Builder builds a new instance of the Foo adapter for the given bidder with the given config.
+func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
+ bidder := &adapter{
+ endpoint: config.Endpoint,
+ }
+ return bidder, nil
+}
+
+// MakeRequests makes the HTTP requests which should be made to fetch bids.
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ var errors []error
+ requestJSON, err := json.Marshal(request)
+ if err != nil {
+ errors = append(errors, err)
+ return nil, errors
+ }
+
+ requestData := &adapters.RequestData{
+ Method: "POST",
+ Uri: a.endpoint,
+ Body: requestJSON,
+ }
+
+ return []*adapters.RequestData{requestData}, errors
+
+}
+
+func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if response.StatusCode == http.StatusNoContent {
+ return nil, nil
+ }
+
+ if response.StatusCode == http.StatusBadRequest {
+ return nil, []error{&errortypes.BadInput{
+ Message: fmt.Sprintf("Unexpected status code: %d. Run with request.debug = 1 for more info", response.StatusCode),
+ }}
+ }
+
+ if response.StatusCode != http.StatusOK {
+ return nil, []error{&errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Unexpected status code: %d. Run with request.debug = 1 for more info", response.StatusCode),
+ }}
+ }
+
+ var bidResp openrtb2.BidResponse
+ if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+ return nil, []error{err}
+ }
+
+ bidsCapacity := 1
+ if len(bidResp.SeatBid) > 0 {
+ bidsCapacity = len(bidResp.SeatBid[0].Bid)
+ }
+ bidResponse := adapters.NewBidderResponseWithBidsCapacity(bidsCapacity)
+ var errors []error
+ for _, sb := range bidResp.SeatBid {
+ for i, bid := range sb.Bid {
+ bidType, err := getMediaTypeForBid(bid)
+ if err != nil {
+ errors = append(errors, err)
+ continue
+ }
+ bidResponse.Bids = append(bidResponse.Bids, &adapters.TypedBid{
+ Bid: &sb.Bid[i],
+ BidType: bidType,
+ })
+
+ }
+ }
+
+ return bidResponse, errors
+}
+
+func getMediaTypeForBid(bid openrtb2.Bid) (openrtb_ext.BidType, error) {
+ if bid.Ext != nil {
+ var bidExt openrtb_ext.ExtBid
+ err := json.Unmarshal(bid.Ext, &bidExt)
+ if err == nil && bidExt.Prebid != nil {
+ if (bidExt.Prebid.Type == openrtb_ext.BidTypeBanner) || (bidExt.Prebid.Type == openrtb_ext.BidTypeNative) {
+ return openrtb_ext.ParseBidType(string(bidExt.Prebid.Type))
+ }
+ return "", &errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Invalid mediatype in the impression"),
+ }
+ }
+ }
+
+ return "", &errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Failed to parse impression \"%s\" mediatype", bid.ImpID),
+ }
+}
diff --git a/adapters/definemedia/definemedia_test.go b/adapters/definemedia/definemedia_test.go
new file mode 100644
index 00000000000..3ed0cb938b8
--- /dev/null
+++ b/adapters/definemedia/definemedia_test.go
@@ -0,0 +1,21 @@
+package definemedia
+
+import (
+ "testing"
+
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderDefinemedia, config.Adapter{
+ Endpoint: "https://rtb.conative.network/openrtb2/auction"},
+ config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "definemediatest", bidder)
+}
diff --git a/adapters/definemedia/definemediatest/exemplary/sample-conative-banner.json b/adapters/definemedia/definemediatest/exemplary/sample-conative-banner.json
new file mode 100644
index 00000000000..a7d7e411f78
--- /dev/null
+++ b/adapters/definemedia/definemediatest/exemplary/sample-conative-banner.json
@@ -0,0 +1,270 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {
+ "mandantId": 12
+ }
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {
+ "mandantId": 12
+ }
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "46189656-7e2e-477d-b7f2-e05de224bb89",
+ "impid": "div-gpt-ad-1460505748561-0",
+ "price": 100,
+ "adm": "{banner html}",
+ "adomain": [
+ "test.com"
+ ],
+ "crid": "test-creative-id",
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "46189656-7e2e-477d-b7f2-e05de224bb89",
+ "impid": "div-gpt-ad-1460505748561-0",
+ "price": 100,
+ "adm": "{banner html}",
+ "crid": "test-creative-id",
+ "adomain": [
+ "test.com"
+ ],
+ "ext": {
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/exemplary/sample-conative-native.json b/adapters/definemedia/definemediatest/exemplary/sample-conative-native.json
new file mode 100644
index 00000000000..4fe56a4c22e
--- /dev/null
+++ b/adapters/definemedia/definemediatest/exemplary/sample-conative-native.json
@@ -0,0 +1,257 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {
+ "mandantId": 12
+ }
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "native": {}
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "native": {
+ "request": ""
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {
+ "mandantId": 12
+ }
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "46189656-7e2e-477d-b7f2-e05de224bb89",
+ "impid": "div-gpt-ad-1460505748561-0",
+ "price": 100,
+ "adm": "{\n \"ver\": \"1.1\",\n \"imptrackers\": [\"http://imptracker.com\"],\n \"jstracker\": \"\u003cscript\u003etrack()\u003c/script\u003e\",\n \"link\": {\n \"url\": \"http://i.am.a/URL\"\n },\n \"assets\": [\n {\n \"id\": 123,\n \"required\": 1,\n \"title\": {\n \"text\": \"Learn about this awesome thing\"\n }\n },\n {\n \"id\": 124,\n \"required\": 1,\n \"img\": {\n \"url\": \"http://www.myads.com/thumbnail1.png\"\n }\n },\n {\n \"id\": 128,\n \"required\": 1,\n \"img\": {\n \"url\": \"http://www.myads.com/largethumb1.png\"\n }\n },\n {\n \"id\": 126,\n \"required\": 1,\n \"data\": {\n \"value\": \"My Brand\"\n }\n },\n {\n \"id\": 127,\n \"required\": 1,\n \"data\": {\n \"value\": \"Learn all about this awesome story of someone using my product.\"\n }\n },\n {\n \"id\": 4,\n \"video\": {\n \"vasttag\": \"\u003cVAST version=\\\"2.0\\\"\u003e\u003c/VAST\u003e\"\n }\n },\n {\n \"id\": 5,\n \"link\": {\n \"url\": \"http://landing.com\",\n \"clicktrackers\": [\"http://tracker.com\"],\n \"fallback\": \"http://fallback.com\"\n }\n }\n ]\n}",
+ "adomain": [
+ "test.com"
+ ],
+ "crid": "test-creative-id",
+ "ext": {
+ "prebid": {
+ "type": "native"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "46189656-7e2e-477d-b7f2-e05de224bb89",
+ "impid": "div-gpt-ad-1460505748561-0",
+ "price": 100,
+
+ "adm": "{\n \"ver\": \"1.1\",\n \"imptrackers\": [\"http://imptracker.com\"],\n \"jstracker\": \"\u003cscript\u003etrack()\u003c/script\u003e\",\n \"link\": {\n \"url\": \"http://i.am.a/URL\"\n },\n \"assets\": [\n {\n \"id\": 123,\n \"required\": 1,\n \"title\": {\n \"text\": \"Learn about this awesome thing\"\n }\n },\n {\n \"id\": 124,\n \"required\": 1,\n \"img\": {\n \"url\": \"http://www.myads.com/thumbnail1.png\"\n }\n },\n {\n \"id\": 128,\n \"required\": 1,\n \"img\": {\n \"url\": \"http://www.myads.com/largethumb1.png\"\n }\n },\n {\n \"id\": 126,\n \"required\": 1,\n \"data\": {\n \"value\": \"My Brand\"\n }\n },\n {\n \"id\": 127,\n \"required\": 1,\n \"data\": {\n \"value\": \"Learn all about this awesome story of someone using my product.\"\n }\n },\n {\n \"id\": 4,\n \"video\": {\n \"vasttag\": \"\u003cVAST version=\\\"2.0\\\"\u003e\u003c/VAST\u003e\"\n }\n },\n {\n \"id\": 5,\n \"link\": {\n \"url\": \"http://landing.com\",\n \"clicktrackers\": [\"http://tracker.com\"],\n \"fallback\": \"http://fallback.com\"\n }\n }\n ]\n}",
+ "crid": "test-creative-id",
+ "adomain": [
+ "test.com"
+ ],
+ "ext": {
+ "prebid": {
+ "type": "native"
+ }
+ }
+ },
+ "type": "native"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/supplemental/nobid-response.json b/adapters/definemedia/definemediatest/supplemental/nobid-response.json
new file mode 100644
index 00000000000..aaa942da76e
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/nobid-response.json
@@ -0,0 +1,222 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": null,
+ "cur": null
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [{"currency":"USD","bids":[]}]
+ }
diff --git a/adapters/definemedia/definemediatest/supplemental/nocontent-response.json b/adapters/definemedia/definemediatest/supplemental/nocontent-response.json
new file mode 100644
index 00000000000..147d2185e1f
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/nocontent-response.json
@@ -0,0 +1,219 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 204,
+ "body": {}
+ }
+ }
+ ],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": []
+ }
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/supplemental/status_400.json b/adapters/definemedia/definemediatest/supplemental/status_400.json
new file mode 100644
index 00000000000..ec772bf8428
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/status_400.json
@@ -0,0 +1,224 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 400,
+ "body": {}
+ }
+ }
+ ],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/supplemental/status_418.json b/adapters/definemedia/definemediatest/supplemental/status_418.json
new file mode 100644
index 00000000000..6e82f90476e
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/status_418.json
@@ -0,0 +1,224 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 418,
+ "body": {}
+ }
+ }
+ ],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 418. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/supplemental/unmarshal-error.json b/adapters/definemedia/definemediatest/supplemental/unmarshal-error.json
new file mode 100644
index 00000000000..396d6821c36
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/unmarshal-error.json
@@ -0,0 +1,224 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": "fail for unmarshall"
+ }
+ }
+ ],
+ "expectedBidResponses": [],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "json: cannot unmarshal string into Go value of type openrtb2.BidResponse",
+ "comparison": "literal"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/adapters/definemedia/definemediatest/supplemental/unsupported-type.json b/adapters/definemedia/definemediatest/supplemental/unsupported-type.json
new file mode 100644
index 00000000000..91bfbc413c1
--- /dev/null
+++ b/adapters/definemedia/definemediatest/supplemental/unsupported-type.json
@@ -0,0 +1,250 @@
+{
+ "mockBidRequest": {
+ "imp": [
+ {
+ "ext": {
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9",
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ }
+ },
+ "id": "div-gpt-ad-1460505748561-0",
+ "video": {
+ "w": 300,
+ "h": 250,
+ "maxduration": 60,
+ "minduration": 1,
+ "api": [1, 2, 5, 6, 7],
+ "mimes": ["video/mp4"],
+ "placement": 4,
+ "protocols": [2]
+ }
+ }
+ ],
+ "site": {
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "domain": "localhost:8080",
+ "publisher": {
+ "domain": "localhost:8080",
+ "id": "1"
+ }
+ },
+ "device": {
+ "w": 1098,
+ "h": 1169,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "language": "de",
+ "sua": {
+ "source": 2,
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "mobile": 0,
+ "model": "",
+ "bitness": "64",
+ "architecture": "x86"
+ }
+ },
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "test": 0,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1671449004622,
+ "targeting": {
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "debug": true,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ }
+ }
+ },
+ "tmax": 1000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://rtb.conative.network/openrtb2/auction",
+ "body": {
+ "id": "ceb63773-4280-45f2-a684-94cf6a3b8fcf",
+ "imp": [
+ {
+ "id": "div-gpt-ad-1460505748561-0",
+ "video": {
+ "w": 300,
+ "h": 250,
+ "maxduration": 60,
+ "minduration": 1,
+ "api": [1, 2, 5, 6, 7],
+ "mimes": ["video/mp4"],
+ "placement": 4,
+ "protocols": [2]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "definemedia": {}
+ }
+ },
+ "tid": "397962d3-47a1-4634-9cb7-78597b01d9a9"
+ }
+ }
+ ],
+ "site": {
+ "domain": "localhost:8080",
+ "page": "http://localhost:8080/prebidServer_example.html?pbjs_debug=true",
+ "publisher": {
+ "id": "1",
+ "domain": "localhost:8080"
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Not?A_Brand",
+ "version": [
+ "8",
+ "0",
+ "0",
+ "0"
+ ]
+ },
+ {
+ "brand": "Chromium",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "108",
+ "0",
+ "5359",
+ "124"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS",
+ "version": [
+ "12",
+ "3",
+ "1"
+ ]
+ },
+ "mobile": 0,
+ "architecture": "x86",
+ "bitness": "64",
+ "source": 2
+ },
+ "h": 1169,
+ "w": 1098,
+ "language": "de"
+ },
+ "tmax": 1000,
+ "source": {
+ "tid": "ceb63773-4280-45f2-a684-94cf6a3b8fcf"
+ },
+ "ext": {
+ "prebid": {
+ "auctiontimestamp": 1.671449004622e+12,
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.28.0"
+ },
+ "debug": true,
+ "targeting": {
+ "includebidderkeys": false,
+ "includewinners": true
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "test-request-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "id": "46189656-7e2e-477d-b7f2-e05de224bb89",
+ "impid": "div-gpt-ad-1460505748561-0",
+ "price": 100,
+ "adm": "{banner html}",
+ "adomain": [
+ "test.com"
+ ],
+ "crid": "test-creative-id",
+ "ext": {
+ "prebid": {
+ "type": "video"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "cur": "USD"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [{"currency":"USD","bids":[]}],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Invalid mediatype in the impression",
+ "comparison": "literal"
+ }
+ ]
+}
diff --git a/adapters/definemedia/params_test.go b/adapters/definemedia/params_test.go
new file mode 100644
index 00000000000..63ef5272669
--- /dev/null
+++ b/adapters/definemedia/params_test.go
@@ -0,0 +1,48 @@
+package definemedia
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+func TestValidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json schema. %v", err)
+ }
+
+ for _, p := range validParams {
+ if err := validator.Validate(openrtb_ext.BidderDefinemedia, json.RawMessage(p)); err != nil {
+ t.Errorf("Schema rejected valid params: %s", p)
+ }
+ }
+}
+
+func TestInvalidParams(t *testing.T) {
+ validator, err := openrtb_ext.NewBidderParamsValidator("../../static/bidder-params")
+ if err != nil {
+ t.Fatalf("Failed to fetch the json schema. %v", err)
+ }
+
+ for _, p := range invalidParams {
+ if err := validator.Validate(openrtb_ext.BidderDefinemedia, json.RawMessage(p)); err == nil {
+ t.Errorf("Schema allowed invalid params: %s", p)
+ }
+ }
+}
+
+var validParams = []string{
+ `{"mandantId":123}`,
+ `{"mandantId":123, "adslotId":456}`,
+}
+
+var invalidParams = []string{
+ `{"mandantId": "42"}`,
+ `{"MandantId": "42"}`,
+ `{"mandantId":123, "adslotId":"456"}`,
+ `{"adslotId":456}`,
+ `{"adslotId":"456"}`,
+ `{}`,
+}
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index 6ab0dccfc7c..fd1a99aeffb 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -71,6 +71,7 @@ import (
"github.com/prebid/prebid-server/adapters/datablocks"
"github.com/prebid/prebid-server/adapters/decenterads"
"github.com/prebid/prebid-server/adapters/deepintent"
+ "github.com/prebid/prebid-server/adapters/definemedia"
"github.com/prebid/prebid-server/adapters/dianomi"
"github.com/prebid/prebid-server/adapters/dmx"
"github.com/prebid/prebid-server/adapters/dxkulture"
@@ -264,6 +265,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderDatablocks: datablocks.Builder,
openrtb_ext.BidderDecenterAds: decenterads.Builder,
openrtb_ext.BidderDeepintent: deepintent.Builder,
+ openrtb_ext.BidderDefinemedia: definemedia.Builder,
openrtb_ext.BidderDianomi: dianomi.Builder,
openrtb_ext.BidderEdge226: edge226.Builder,
openrtb_ext.BidderDmx: dmx.Builder,
diff --git a/exchange/adapter_util.go b/exchange/adapter_util.go
index a5a232bbd93..89d58d06800 100644
--- a/exchange/adapter_util.go
+++ b/exchange/adapter_util.go
@@ -117,7 +117,6 @@ func GetDisabledBidderWarningMessages(infos config.BidderInfos) map[string]strin
"engagebdr": `Bidder "engagebdr" is no longer available in Prebid Server. Please update your configuration.`,
"ninthdecimal": `Bidder "ninthdecimal" is no longer available in Prebid Server. Please update your configuration.`,
"kubient": `Bidder "kubient" is no longer available in Prebid Server. Please update your configuration.`,
- "definemedia": `Bidder "definemedia" is no longer available in Prebid Server. Please update your configuration.`,
"applogy": `Bidder "applogy" is no longer available in Prebid Server. Please update your configuration.`,
"rhythmone": `Bidder "rhythmone" is no longer available in Prebid Server. Please update your configuration.`,
"nanointeractive": `Bidder "nanointeractive" is no longer available in Prebid Server. Please update your configuration.`,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 22a915b769f..fbd5bb9f787 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -87,6 +87,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderDatablocks,
BidderDecenterAds,
BidderDeepintent,
+ BidderDefinemedia,
BidderDianomi,
BidderEdge226,
BidderDmx,
@@ -368,6 +369,7 @@ const (
BidderDatablocks BidderName = "datablocks"
BidderDecenterAds BidderName = "decenterads"
BidderDeepintent BidderName = "deepintent"
+ BidderDefinemedia BidderName = "definemedia"
BidderDianomi BidderName = "dianomi"
BidderEdge226 BidderName = "edge226"
BidderDmx BidderName = "dmx"
diff --git a/openrtb_ext/imp_definemedia.go b/openrtb_ext/imp_definemedia.go
new file mode 100644
index 00000000000..aa94bf5de63
--- /dev/null
+++ b/openrtb_ext/imp_definemedia.go
@@ -0,0 +1,6 @@
+package openrtb_ext
+
+type ImpExtDefinemedia struct {
+ MandantID int64 `json:"mandantId"`
+ AdslotID int64 `json:"adslotId"`
+}
diff --git a/static/bidder-info/definemedia.yaml b/static/bidder-info/definemedia.yaml
new file mode 100644
index 00000000000..a7be6fb9d23
--- /dev/null
+++ b/static/bidder-info/definemedia.yaml
@@ -0,0 +1,10 @@
+endpoint: "https://rtb.conative.network/openrtb2/auction"
+maintainer:
+ email: "development@definemedia.de"
+ gvlVendorID: 440 # GDPR vendor list ID
+capabilities:
+
+ site:
+ mediaTypes:
+ - banner
+ - native
diff --git a/static/bidder-params/definemedia.json b/static/bidder-params/definemedia.json
new file mode 100644
index 00000000000..bf5566b4c89
--- /dev/null
+++ b/static/bidder-params/definemedia.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Define Media Adapter Params",
+ "description": "A schema which validates params accepted by the DM adapter",
+ "type": "object",
+
+ "properties": {
+ "mandantId": {
+ "type": "integer",
+ "description": "The DEFINE-MEDIA mandant id. This is a unique identifier for your account. Please contact your account manager for more information."
+ },
+
+ "adslotId":{
+ "type": "integer",
+ "description": "The adslot id. This is a unique identifier for your adslot and may change on subparts on a website. Please contact your account manager for more information."
+ }
+ },
+ "required": ["mandantId"]
+ }
\ No newline at end of file
From 53e0adcaf0af3203fd4e235d1f4fe4a4cce80a79 Mon Sep 17 00:00:00 2001
From: Veronika Solovei
Date: Fri, 20 Oct 2023 08:24:10 -0700
Subject: [PATCH 32/34] Adapter Name Case Insensitive: Stored Bid Responses
(#3197)
---
endpoints/openrtb2/amp_auction.go | 2 +-
endpoints/openrtb2/auction.go | 37 +-
endpoints/openrtb2/auction_test.go | 43 +-
...ed-bid-resp-case-matching-bidder-name.json | 39 ++
...d-resp-case-not-matching-bidder-name.json} | 2 +-
...red-bid-resp-non-existing-bidder-name.json | 34 ++
.../imp-with-stored-bid-resp.json | 6 +-
.../req-two-imps-stored-bid-responses.json | 10 +-
...with-and-without-stored-bid-responses.json | 4 +-
exchange/utils.go | 2 +-
exchange/utils_test.go | 23 +
stored_responses/stored_responses.go | 115 ++--
stored_responses/stored_responses_test.go | 571 ++++++++++--------
13 files changed, 529 insertions(+), 359 deletions(-)
create mode 100644 endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-matching-bidder-name.json
rename endpoints/openrtb2/sample-requests/valid-whole/supplementary/{imp-with-stored-bid-resp-insensitive-bidder-name.json => imp-with-stored-bid-resp-case-not-matching-bidder-name.json} (94%)
create mode 100644 endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-non-existing-bidder-name.json
diff --git a/endpoints/openrtb2/amp_auction.go b/endpoints/openrtb2/amp_auction.go
index 76b0e83cf3d..099f5d66c41 100644
--- a/endpoints/openrtb2/amp_auction.go
+++ b/endpoints/openrtb2/amp_auction.go
@@ -530,7 +530,7 @@ func (deps *endpointDeps) loadRequestJSONForAmp(httpRequest *http.Request) (req
return
}
- storedAuctionResponses, storedBidResponses, bidderImpReplaceImp, errs = stored_responses.ProcessStoredResponses(ctx, requestJSON, deps.storedRespFetcher, deps.bidderMap)
+ storedAuctionResponses, storedBidResponses, bidderImpReplaceImp, errs = stored_responses.ProcessStoredResponses(ctx, &openrtb_ext.RequestWrapper{BidRequest: req}, deps.storedRespFetcher)
if err != nil {
errs = []error{err}
return
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index 2cad7a2463a..e6c9fe1fbde 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -517,12 +517,6 @@ func (deps *endpointDeps) parseRequest(httpRequest *http.Request, labels *metric
return
}
- //Stored auction responses should be processed after stored requests due to possible impression modification
- storedAuctionResponses, storedBidResponses, bidderImpReplaceImpId, errs = stored_responses.ProcessStoredResponses(ctx, requestJson, deps.storedRespFetcher, deps.bidderMap)
- if len(errs) > 0 {
- return nil, nil, nil, nil, nil, nil, errs
- }
-
if err := jsonutil.UnmarshalValid(requestJson, req.BidRequest); err != nil {
errs = []error{err}
return
@@ -548,6 +542,12 @@ func (deps *endpointDeps) parseRequest(httpRequest *http.Request, labels *metric
lmt.ModifyForIOS(req.BidRequest)
+ //Stored auction responses should be processed after stored requests due to possible impression modification
+ storedAuctionResponses, storedBidResponses, bidderImpReplaceImpId, errs = stored_responses.ProcessStoredResponses(ctx, req, deps.storedRespFetcher)
+ if len(errs) > 0 {
+ return nil, nil, nil, nil, nil, nil, errs
+ }
+
hasStoredResponses := len(storedAuctionResponses) > 0
errL := deps.validateRequest(req, false, hasStoredResponses, storedBidResponses, hasStoredBidRequest)
if len(errL) > 0 {
@@ -1532,10 +1532,8 @@ func (deps *endpointDeps) validateImpExt(imp *openrtb_ext.ImpWrapper, aliases ma
return []error{fmt.Errorf("request validation failed. The StoredAuctionResponse.ID field must be completely present with, or completely absent from, all impressions in request. No StoredAuctionResponse data found for request.imp[%d].ext.prebid \n", impIndex)}
}
- if len(storedBidResp) > 0 {
- if err := validateStoredBidRespAndImpExtBidders(prebid.Bidder, storedBidResp, imp.ID); err != nil {
- return []error{err}
- }
+ if err := deps.validateStoredBidRespAndImpExtBidders(prebid, storedBidResp, imp.ID); err != nil {
+ return []error{err}
}
errL := []error{}
@@ -2502,19 +2500,24 @@ func checkIfAppRequest(request []byte) (bool, error) {
return false, nil
}
-func validateStoredBidRespAndImpExtBidders(bidderExts map[string]json.RawMessage, storedBidResp stored_responses.ImpBidderStoredResp, impId string) error {
+func (deps *endpointDeps) validateStoredBidRespAndImpExtBidders(prebid *openrtb_ext.ExtImpPrebid, storedBidResp stored_responses.ImpBidderStoredResp, impId string) error {
+ if storedBidResp == nil && len(prebid.StoredBidResponse) == 0 {
+ return nil
+ }
+
+ if storedBidResp == nil {
+ return generateStoredBidResponseValidationError(impId)
+ }
if bidResponses, ok := storedBidResp[impId]; ok {
- if len(bidResponses) != len(bidderExts) {
+ if len(bidResponses) != len(prebid.Bidder) {
return generateStoredBidResponseValidationError(impId)
}
for bidderName := range bidResponses {
- bidder := bidderName
- normalizedCoreBidder, ok := openrtb_ext.NormalizeBidderName(bidder)
- if ok {
- bidder = normalizedCoreBidder.String()
+ if _, bidderNameOk := deps.normalizeBidderName(bidderName); !bidderNameOk {
+ return fmt.Errorf(`unrecognized bidder "%v"`, bidderName)
}
- if _, present := bidderExts[bidder]; !present {
+ if _, present := prebid.Bidder[bidderName]; !present {
return generateStoredBidResponseValidationError(impId)
}
}
diff --git a/endpoints/openrtb2/auction_test.go b/endpoints/openrtb2/auction_test.go
index 530d197e2ae..bab25261175 100644
--- a/endpoints/openrtb2/auction_test.go
+++ b/endpoints/openrtb2/auction_test.go
@@ -4991,8 +4991,8 @@ func TestParseRequestStoredResponses(t *testing.T) {
}
func TestParseRequestStoredBidResponses(t *testing.T) {
- bidRespId1 := json.RawMessage(`{"id": "resp_id1", "seatbid": [{"bid": [{"id": "bid_id1"}], "seat": "testBidder1"}], "bidid": "123", "cur": "USD"}`)
- bidRespId2 := json.RawMessage(`{"id": "resp_id2", "seatbid": [{"bid": [{"id": "bid_id2"}], "seat": "testBidder2"}], "bidid": "124", "cur": "USD"}`)
+ bidRespId1 := json.RawMessage(`{"id": "resp_id1", "seatbid": [{"bid": [{"id": "bid_id1"}], "seat": "telaria"}], "bidid": "123", "cur": "USD"}`)
+ bidRespId2 := json.RawMessage(`{"id": "resp_id2", "seatbid": [{"bid": [{"id": "bid_id2"}], "seat": "amx"}], "bidid": "124", "cur": "USD"}`)
bidRespId3 := json.RawMessage(`{"id": "resp_id3", "seatbid": [{"bid": [{"id": "bid_id3"}], "seat": "APPNEXUS"}], "bidid": "125", "cur": "USD"}`)
mockStoredBidResponses := map[string]json.RawMessage{
"bidResponseId1": bidRespId1,
@@ -5011,15 +5011,23 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
name: "req imp has valid stored bid response",
givenRequestBody: validRequest(t, "imp-with-stored-bid-resp.json"),
expectedStoredBidResponses: map[string]map[string]json.RawMessage{
- "imp-id1": {"testBidder1": bidRespId1},
+ "imp-id1": {"telaria": bidRespId1},
},
expectedErrorCount: 0,
},
{
- name: "req imp has valid stored bid response with case insensitive bidder name",
- givenRequestBody: validRequest(t, "imp-with-stored-bid-resp-insensitive-bidder-name.json"),
+ name: "req imp has valid stored bid response with case not-matching bidder name",
+ givenRequestBody: validRequest(t, "imp-with-stored-bid-resp-case-not-matching-bidder-name.json"),
expectedStoredBidResponses: map[string]map[string]json.RawMessage{
- "imp-id3": {"APPNEXUS": bidRespId3},
+ "imp-id3": {"appnexus": bidRespId3},
+ },
+ expectedErrorCount: 0,
+ },
+ {
+ name: "req imp has valid stored bid response with case matching bidder name",
+ givenRequestBody: validRequest(t, "imp-with-stored-bid-resp-case-matching-bidder-name.json"),
+ expectedStoredBidResponses: map[string]map[string]json.RawMessage{
+ "imp-id3": {"appnexus": bidRespId3},
},
expectedErrorCount: 0,
},
@@ -5027,8 +5035,8 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
name: "req has two imps with valid stored bid responses",
givenRequestBody: validRequest(t, "req-two-imps-stored-bid-responses.json"),
expectedStoredBidResponses: map[string]map[string]json.RawMessage{
- "imp-id1": {"testBidder1": bidRespId1},
- "imp-id2": {"testBidder2": bidRespId2},
+ "imp-id1": {"telaria": bidRespId1},
+ "imp-id2": {"amx": bidRespId2},
},
expectedErrorCount: 0,
},
@@ -5036,7 +5044,7 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
name: "req has two imps one with valid stored bid responses and another one without stored bid responses",
givenRequestBody: validRequest(t, "req-two-imps-with-and-without-stored-bid-responses.json"),
expectedStoredBidResponses: map[string]map[string]json.RawMessage{
- "imp-id2": {"testBidder2": bidRespId2},
+ "imp-id2": {"amx": bidRespId2},
},
expectedErrorCount: 0,
},
@@ -5044,7 +5052,13 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
name: "req has two imps with missing stored bid responses",
givenRequestBody: validRequest(t, "req-two-imps-missing-stored-bid-response.json"),
expectedStoredBidResponses: nil,
- expectedErrorCount: 2,
+ expectedErrorCount: 1,
+ },
+ {
+ name: "req imp has valid stored bid response with non existing bidder name",
+ givenRequestBody: validRequest(t, "imp-with-stored-bid-resp-non-existing-bidder-name.json"),
+ expectedStoredBidResponses: nil,
+ expectedErrorCount: 1,
},
}
for _, test := range tests {
@@ -5063,7 +5077,7 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
map[string]string{},
false,
[]byte{},
- map[string]openrtb_ext.BidderName{"testBidder1": "testBidder1", "testBidder2": "testBidder2", "appnexus": "appnexus"},
+ map[string]openrtb_ext.BidderName{"telaria": "telaria", "amx": "amx", "appnexus": "appnexus"},
nil,
nil,
hardcodedResponseIPValidator{response: true},
@@ -5078,6 +5092,7 @@ func TestParseRequestStoredBidResponses(t *testing.T) {
req := httptest.NewRequest("POST", "/openrtb2/auction", strings.NewReader(test.givenRequestBody))
_, _, _, storedBidResponses, _, _, errL := deps.parseRequest(req, &metrics.Labels{}, hookExecutor)
if test.expectedErrorCount == 0 {
+ assert.Empty(t, errL)
assert.Equal(t, test.expectedStoredBidResponses, storedBidResponses, "stored responses should match")
} else {
assert.Contains(t, errL[0].Error(), test.expectedError, "error should match")
@@ -5653,8 +5668,10 @@ func TestValidateStoredResp(t *testing.T) {
}
for _, test := range testCases {
- errorList := deps.validateRequest(test.givenRequestWrapper, false, test.hasStoredAuctionResponses, test.storedBidResponses, false)
- assert.Equalf(t, test.expectedErrorList, errorList, "Error doesn't match: %s\n", test.description)
+ t.Run(test.description, func(t *testing.T) {
+ errorList := deps.validateRequest(test.givenRequestWrapper, false, test.hasStoredAuctionResponses, test.storedBidResponses, false)
+ assert.Equalf(t, test.expectedErrorList, errorList, "Error doesn't match: %s\n", test.description)
+ })
}
}
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-matching-bidder-name.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-matching-bidder-name.json
new file mode 100644
index 00000000000..49576023b04
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-matching-bidder-name.json
@@ -0,0 +1,39 @@
+{
+ "description": "request with impression with stored bid response with case matching bidder name",
+ "mockBidRequest": {
+ "id": "request-with-stored-resp",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "imp-id3",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "appnexus": {
+ "placementId": 12883451
+ },
+ "prebid": {
+ "storedbidresponse": [
+ {
+ "bidder": "appnexus",
+ "id": "bidResponseId3"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "user": {
+ "yob": 1989
+ }
+ },
+ "expectedReturnCode": 200
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-insensitive-bidder-name.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-not-matching-bidder-name.json
similarity index 94%
rename from endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-insensitive-bidder-name.json
rename to endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-not-matching-bidder-name.json
index e7b688d4d83..bcebe81472d 100644
--- a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-insensitive-bidder-name.json
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-case-not-matching-bidder-name.json
@@ -1,5 +1,5 @@
{
- "description": "request with impression with stored bid response with sensitive bidder name",
+ "description": "request with impression with stored bid response with case not matching bidder name",
"mockBidRequest": {
"id": "request-with-stored-resp",
"site": {
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-non-existing-bidder-name.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-non-existing-bidder-name.json
new file mode 100644
index 00000000000..d8685307e20
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp-non-existing-bidder-name.json
@@ -0,0 +1,34 @@
+{
+ "description": "request with impression with stored bid response",
+ "mockBidRequest": {
+ "id": "request-with-stored-resp",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "imp-id1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 600
+ }
+ ]
+ },
+ "ext": {
+ "bidderABC": {},
+ "prebid": {
+ "storedbidresponse": [
+ {"bidder":"bidderABC", "id": "bidResponseId1"}
+ ]
+ }
+ }
+ }
+ ],
+ "user": {
+ "yob": 1989
+ }
+ },
+ "expectedReturnCode": 200
+}
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp.json
index e72cce49355..692a34c4f41 100644
--- a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp.json
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/imp-with-stored-bid-resp.json
@@ -17,12 +17,10 @@
]
},
"ext": {
- "appnexus": {
- "placementId": 12883451
- },
+ "telaria": {},
"prebid": {
"storedbidresponse": [
- {"bidder":"testBidder1", "id": "bidResponseId1"}
+ {"bidder":"telaria", "id": "bidResponseId1"}
]
}
}
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-stored-bid-responses.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-stored-bid-responses.json
index 5906eb9149c..09b4bc57746 100644
--- a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-stored-bid-responses.json
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-stored-bid-responses.json
@@ -17,12 +17,12 @@
]
},
"ext": {
- "appnexus": {
+ "telaria": {
"placementId": 12883451
},
"prebid": {
"storedbidresponse": [
- {"bidder":"testBidder1", "id": "bidResponseId1"}
+ {"bidder":"telaria", "id": "bidResponseId1"}
]
}
}
@@ -38,12 +38,10 @@
]
},
"ext": {
- "appnexus": {
- "placementId": 12883451
- },
+ "amx": {},
"prebid": {
"storedbidresponse": [
- {"bidder":"testBidder2", "id": "bidResponseId2"}
+ {"bidder":"amx", "id": "bidResponseId2"}
]
}
}
diff --git a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-with-and-without-stored-bid-responses.json b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-with-and-without-stored-bid-responses.json
index 6122e4df066..5387a9d61ae 100644
--- a/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-with-and-without-stored-bid-responses.json
+++ b/endpoints/openrtb2/sample-requests/valid-whole/supplementary/req-two-imps-with-and-without-stored-bid-responses.json
@@ -33,12 +33,12 @@
]
},
"ext": {
- "appnexus": {
+ "amx": {
"placementId": 12883451
},
"prebid": {
"storedbidresponse": [
- {"bidder":"testBidder2", "id": "bidResponseId2"}
+ {"bidder":"amx", "id": "bidResponseId2"}
]
}
}
diff --git a/exchange/utils.go b/exchange/utils.go
index c7acfaefce3..ea6b317dae1 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -958,7 +958,7 @@ func buildBidResponseRequest(req *openrtb2.BidRequest,
BidderCoreName: resolvedBidder,
BidderName: bidderName,
BidderStoredResponses: impResps,
- ImpReplaceImpId: bidderImpReplaceImpID[string(resolvedBidder)],
+ ImpReplaceImpId: bidderImpReplaceImpID[string(bidderName)],
IsRequestAlias: isRequestAlias,
BidderLabels: metrics.AdapterLabels{Adapter: resolvedBidder},
}
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index b413a6b292e..3c28a43c33e 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"fmt"
+ "github.com/prebid/prebid-server/stored_responses"
"sort"
"testing"
@@ -4754,3 +4755,25 @@ func TestApplyBidAdjustmentToFloor(t *testing.T) {
})
}
}
+
+func TestBuildBidResponseRequestBidderName(t *testing.T) {
+ bidderImpResponses := stored_responses.BidderImpsWithBidResponses{
+ openrtb_ext.BidderName("appnexus"): {"impId1": json.RawMessage(`{}`), "impId2": json.RawMessage(`{}`)},
+ openrtb_ext.BidderName("appneXUS"): {"impId3": json.RawMessage(`{}`), "impId4": json.RawMessage(`{}`)},
+ }
+
+ bidderImpReplaceImpID := stored_responses.BidderImpReplaceImpID{
+ "appnexus": {"impId1": true, "impId2": false},
+ "appneXUS": {"impId3": true, "impId4": false},
+ }
+ result := buildBidResponseRequest(nil, bidderImpResponses, nil, bidderImpReplaceImpID)
+
+ resultAppnexus := result["appnexus"]
+ assert.Equal(t, resultAppnexus.BidderName, openrtb_ext.BidderName("appnexus"))
+ assert.Equal(t, resultAppnexus.ImpReplaceImpId, map[string]bool{"impId1": true, "impId2": false})
+
+ resultAppneXUS := result["appneXUS"]
+ assert.Equal(t, resultAppneXUS.BidderName, openrtb_ext.BidderName("appneXUS"))
+ assert.Equal(t, resultAppneXUS.ImpReplaceImpId, map[string]bool{"impId3": true, "impId4": false})
+
+}
diff --git a/stored_responses/stored_responses.go b/stored_responses/stored_responses.go
index ef8fe50619d..d6944a6f30f 100644
--- a/stored_responses/stored_responses.go
+++ b/stored_responses/stored_responses.go
@@ -4,12 +4,11 @@ import (
"context"
"encoding/json"
"fmt"
+ "strings"
- "github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
)
type ImpsWithAuctionResponseIDs map[string]string
@@ -57,8 +56,7 @@ func buildStoredResp(storedBidResponses ImpBidderStoredResp) BidderImpsWithBidRe
return bidderToImpToResponses
}
-func extractStoredResponsesIds(impInfo []ImpExtPrebidData,
- bidderMap map[string]openrtb_ext.BidderName) (
+func extractStoredResponsesIds(impInfo []*openrtb_ext.ImpWrapper) (
StoredResponseIDs,
ImpBiddersWithBidResponseIDs,
ImpsWithAuctionResponseIDs,
@@ -76,53 +74,62 @@ func extractStoredResponsesIds(impInfo []ImpExtPrebidData,
impBidderReplaceImp := ImpBidderReplaceImpID{}
for index, impData := range impInfo {
- impId, err := jsonparser.GetString(impData.Imp, "id")
+ impId := impData.ID
+ impExt, err := impData.GetImpExt()
if err != nil {
- return nil, nil, nil, nil, fmt.Errorf("request.imp[%d] missing required field: \"id\"", index)
+ return nil, nil, nil, nil, err
+ }
+ impExtPrebid := impExt.GetPrebid()
+ if impExtPrebid == nil {
+ continue
}
- if impData.ImpExtPrebid.StoredAuctionResponse != nil {
- if len(impData.ImpExtPrebid.StoredAuctionResponse.ID) == 0 {
+ if impExtPrebid.StoredAuctionResponse != nil {
+ if len(impExtPrebid.StoredAuctionResponse.ID) == 0 {
return nil, nil, nil, nil, fmt.Errorf("request.imp[%d] has ext.prebid.storedauctionresponse specified, but \"id\" field is missing ", index)
}
- allStoredResponseIDs = append(allStoredResponseIDs, impData.ImpExtPrebid.StoredAuctionResponse.ID)
+ allStoredResponseIDs = append(allStoredResponseIDs, impExtPrebid.StoredAuctionResponse.ID)
- impAuctionResponseIDs[impId] = impData.ImpExtPrebid.StoredAuctionResponse.ID
+ impAuctionResponseIDs[impId] = impExtPrebid.StoredAuctionResponse.ID
}
- if len(impData.ImpExtPrebid.StoredBidResponse) > 0 {
+ if len(impExtPrebid.StoredBidResponse) > 0 {
+
+ // bidders can be specified in imp.ext and in imp.ext.prebid.bidders
+ allBidderNames := make([]string, 0)
+ for bidderName := range impExtPrebid.Bidder {
+ allBidderNames = append(allBidderNames, bidderName)
+ }
+ for extData := range impExt.GetExt() {
+ // no bidders will not be processed
+ allBidderNames = append(allBidderNames, extData)
+ }
bidderStoredRespId := make(map[string]string)
bidderReplaceImpId := make(map[string]bool)
- for _, bidderResp := range impData.ImpExtPrebid.StoredBidResponse {
+ for _, bidderResp := range impExtPrebid.StoredBidResponse {
if len(bidderResp.ID) == 0 || len(bidderResp.Bidder) == 0 {
return nil, nil, nil, nil, fmt.Errorf("request.imp[%d] has ext.prebid.storedbidresponse specified, but \"id\" or/and \"bidder\" fields are missing ", index)
}
- bidderName := bidderResp.Bidder
- normalizedCoreBidder, ok := openrtb_ext.NormalizeBidderName(bidderResp.Bidder)
- if ok {
- bidderName = normalizedCoreBidder.String()
- }
- //check if bidder is valid/exists
- if _, isValid := bidderMap[bidderName]; !isValid {
- return nil, nil, nil, nil, fmt.Errorf("request.imp[impId: %s].ext.prebid.bidder contains unknown bidder: %s. Did you forget an alias in request.ext.prebid.aliases?", impId, bidderResp.Bidder)
- }
- // bidder is unique per one bid stored response
- // if more than one bidder specified the last defined bidder id will take precedence
- bidderStoredRespId[bidderResp.Bidder] = bidderResp.ID
- impBiddersWithBidResponseIDs[impId] = bidderStoredRespId
-
- // stored response config can specify if imp id should be replaced with imp id from request
- replaceImpId := true
- if bidderResp.ReplaceImpId != nil {
- // replaceimpid is true if not specified
- replaceImpId = *bidderResp.ReplaceImpId
- }
- bidderReplaceImpId[bidderResp.Bidder] = replaceImpId
- impBidderReplaceImp[impId] = bidderReplaceImpId
- //storedAuctionResponseIds are not unique, but fetch will return single data for repeated ids
- allStoredResponseIDs = append(allStoredResponseIDs, bidderResp.ID)
+ for _, bidderName := range allBidderNames {
+ if _, found := bidderStoredRespId[bidderName]; !found && strings.EqualFold(bidderName, bidderResp.Bidder) {
+ bidderStoredRespId[bidderName] = bidderResp.ID
+ impBiddersWithBidResponseIDs[impId] = bidderStoredRespId
+
+ // stored response config can specify if imp id should be replaced with imp id from request
+ replaceImpId := true
+ if bidderResp.ReplaceImpId != nil {
+ // replaceimpid is true if not specified
+ replaceImpId = *bidderResp.ReplaceImpId
+ }
+ bidderReplaceImpId[bidderName] = replaceImpId
+ impBidderReplaceImp[impId] = bidderReplaceImpId
+
+ //storedAuctionResponseIds are not unique, but fetch will return single data for repeated ids
+ allStoredResponseIDs = append(allStoredResponseIDs, bidderResp.ID)
+ }
+ }
}
}
}
@@ -135,14 +142,11 @@ func extractStoredResponsesIds(impInfo []ImpExtPrebidData,
// Note that processStoredResponses must be called after processStoredRequests
// because stored imps and stored requests can contain stored auction responses and stored bid responses
// so the stored requests/imps have to be merged into the incoming request prior to processing stored auction responses.
-func ProcessStoredResponses(ctx context.Context, requestJson []byte, storedRespFetcher stored_requests.Fetcher, bidderMap map[string]openrtb_ext.BidderName) (ImpsWithBidResponses, ImpBidderStoredResp, BidderImpReplaceImpID, []error) {
- impInfo, errs := parseImpInfo(requestJson)
- if len(errs) > 0 {
- return nil, nil, nil, errs
- }
- storedResponsesIds, impBidderToStoredBidResponseId, impIdToRespId, impBidderReplaceImp, err := extractStoredResponsesIds(impInfo, bidderMap)
+func ProcessStoredResponses(ctx context.Context, requestWrapper *openrtb_ext.RequestWrapper, storedRespFetcher stored_requests.Fetcher) (ImpsWithBidResponses, ImpBidderStoredResp, BidderImpReplaceImpID, []error) {
+
+ storedResponsesIds, impBidderToStoredBidResponseId, impIdToRespId, impBidderReplaceImp, err := extractStoredResponsesIds(requestWrapper.GetImp())
if err != nil {
- return nil, nil, nil, append(errs, err)
+ return nil, nil, nil, []error{err}
}
if len(storedResponsesIds) > 0 {
@@ -201,28 +205,3 @@ func buildStoredResponsesMaps(storedResponses StoredResponseIdToStoredResponse,
}
return impIdToStoredResp, impBidderToStoredBidResponse, errs
}
-
-// parseImpInfo parses the request JSON and returns the impressions with their unmarshalled imp.ext.prebid
-// copied from exchange to isolate stored responses code from auction dependencies
-func parseImpInfo(requestJson []byte) (impData []ImpExtPrebidData, errs []error) {
-
- if impArray, dataType, _, err := jsonparser.Get(requestJson, "imp"); err == nil && dataType == jsonparser.Array {
- _, err = jsonparser.ArrayEach(impArray, func(imp []byte, _ jsonparser.ValueType, _ int, err error) {
- impExtData, _, _, err := jsonparser.Get(imp, "ext", "prebid")
- var impExtPrebid openrtb_ext.ExtImpPrebid
- if impExtData != nil {
- if err := jsonutil.Unmarshal(impExtData, &impExtPrebid); err != nil {
- errs = append(errs, err)
- }
- }
- newImpData := ImpExtPrebidData{imp, impExtPrebid}
- impData = append(impData, newImpData)
- })
- }
- return
-}
-
-type ImpExtPrebidData struct {
- Imp json.RawMessage
- ImpExtPrebid openrtb_ext.ExtImpPrebid
-}
diff --git a/stored_responses/stored_responses_test.go b/stored_responses/stored_responses_test.go
index c4ddea278a7..209b34a650b 100644
--- a/stored_responses/stored_responses_test.go
+++ b/stored_responses/stored_responses_test.go
@@ -163,136 +163,109 @@ func TestBuildStoredBidResponses(t *testing.T) {
}
func TestProcessStoredAuctionAndBidResponsesErrors(t *testing.T) {
- bidderMap := map[string]openrtb_ext.BidderName{"testBidder": "testBidder"}
-
testCases := []struct {
description string
- requestJson []byte
+ request openrtb2.BidRequest
expectedErrorList []error
}{
{
description: "Invalid stored auction response format: empty stored Auction Response Id",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"prebid": {
- "storedauctionresponse": {
- }
- }
- }
- }
- ]}`),
+ "storedauctionresponse": {}
+ }}`)},
+ },
+ },
expectedErrorList: []error{errors.New("request.imp[0] has ext.prebid.storedauctionresponse specified, but \"id\" field is missing ")},
},
{
description: "Invalid stored bid response format: empty storedbidresponse.bidder",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"prebid": {
"storedbidresponse": [
{ "id": "123abc"}]
- }
- }
- }
- ]}`),
+ }}`)},
+ },
+ },
expectedErrorList: []error{errors.New("request.imp[0] has ext.prebid.storedbidresponse specified, but \"id\" or/and \"bidder\" fields are missing ")},
},
{
description: "Invalid stored bid response format: empty storedbidresponse.id",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"prebid": {
"storedbidresponse": [
{ "bidder": "testbidder"}]
- }
- }
- }
- ]}`),
+ }}`)},
+ },
+ },
expectedErrorList: []error{errors.New("request.imp[0] has ext.prebid.storedbidresponse specified, but \"id\" or/and \"bidder\" fields are missing ")},
},
- {
- description: "Invalid stored bid response: storedbidresponse.bidder not found",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "prebid": {
- "storedbidresponse": [
- { "bidder": "testBidder123", "id": "123abc"}]
- }
- }
- }
- ]}`),
- expectedErrorList: []error{errors.New("request.imp[impId: imp-id1].ext.prebid.bidder contains unknown bidder: testBidder123. Did you forget an alias in request.ext.prebid.aliases?")},
- },
{
description: "Invalid stored auction response format: empty stored Auction Response Id in second imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"prebid": {
"storedauctionresponse": {
"id":"123"
}
- }
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }}`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"prebid": {
- "storedauctionresponse": {
+ "storedauctionresponse": {
"id":""
}
- }
- }
- }
- ]}`),
+ }}`)},
+ },
+ },
expectedErrorList: []error{errors.New("request.imp[1] has ext.prebid.storedauctionresponse specified, but \"id\" field is missing ")},
},
{
description: "Invalid stored bid response format: empty stored bid Response Id in second imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"prebid": {
- "storedbidresponse": [
+ "storedbidresponse": [
{"bidder":"testBidder", "id": "123abc"}
]
- }
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }}`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"prebid": {
- "storedbidresponse": [
+ "storedbidresponse": [
{"bidder":"testBidder", "id": ""}
]
- }
- }
- }
- ]}`),
+ }}`)},
+ },
+ },
expectedErrorList: []error{errors.New("request.imp[1] has ext.prebid.storedbidresponse specified, but \"id\" or/and \"bidder\" fields are missing ")},
},
}
for _, test := range testCases {
- _, _, _, errorList := ProcessStoredResponses(nil, test.requestJson, nil, bidderMap)
- assert.Equalf(t, test.expectedErrorList, errorList, "Error doesn't match: %s\n", test.description)
+ t.Run(test.description, func(t *testing.T) {
+ rw := &openrtb_ext.RequestWrapper{BidRequest: &test.request}
+ _, _, _, errorList := ProcessStoredResponses(nil, rw, nil)
+ assert.Equalf(t, test.expectedErrorList, errorList, "Error doesn't match: %s\n", test.description)
+ })
}
}
func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
- bidderMap := map[string]openrtb_ext.BidderName{"bidderA": "bidderA", "bidderB": "bidderB"}
bidStoredResp1 := json.RawMessage(`[{"bid": [{"id": "bid_id1"],"seat": "bidderA"}]`)
bidStoredResp2 := json.RawMessage(`[{"bid": [{"id": "bid_id2"],"seat": "bidderB"}]`)
bidStoredResp3 := json.RawMessage(`[{"bid": [{"id": "bid_id3"],"seat": "bidderA"}]`)
@@ -305,33 +278,31 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
testCases := []struct {
description string
- requestJson []byte
+ request openrtb2.BidRequest
expectedStoredAuctionResponses ImpsWithBidResponses
expectedStoredBidResponses ImpBidderStoredResp
expectedBidderImpReplaceImpID BidderImpReplaceImpID
}{
{
description: "No stored responses",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "prebid": {
-
- }
- }
- }
- ]}`),
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "prebid": {}
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: nil,
expectedStoredBidResponses: nil,
expectedBidderImpReplaceImpID: nil,
},
{
description: "Stored auction response one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -340,9 +311,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "1"
}
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{
"imp-id1": bidStoredResp1,
},
@@ -351,11 +322,11 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
},
{
description: "Stored bid response one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
"placementId": 123
},
"prebid": {
@@ -363,9 +334,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
{"bidder":"bidderA", "id": "1"}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{},
expectedStoredBidResponses: ImpBidderStoredResp{
"imp-id1": {"bidderA": bidStoredResp1},
@@ -376,11 +347,14 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
},
{
description: "Stored bid responses two bidders one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -389,9 +363,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
{"bidder":"bidderB", "id": "2", "replaceimpid": false}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{},
expectedStoredBidResponses: ImpBidderStoredResp{
"imp-id1": {"bidderA": bidStoredResp1, "bidderB": bidStoredResp2},
@@ -401,14 +375,120 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"bidderB": map[string]bool{"imp-id1": false},
},
},
+ {
+ description: "Stored bid responses two same mixed case bidders one imp",
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "BIDDERa": {
+ "placementId": 123
+ },
+ "prebid": {
+ "storedbidresponse": [
+ {"bidder":"bidderA", "id": "1", "replaceimpid": true},
+ {"bidder":"bidderB", "id": "2", "replaceimpid": false}
+ ]
+ }
+ }`)},
+ },
+ },
+ expectedStoredAuctionResponses: ImpsWithBidResponses{},
+ expectedStoredBidResponses: ImpBidderStoredResp{
+ "imp-id1": {"bidderA": bidStoredResp1, "BIDDERa": bidStoredResp1},
+ },
+ expectedBidderImpReplaceImpID: BidderImpReplaceImpID{
+ "BIDDERa": map[string]bool{"imp-id1": true},
+ "bidderA": map[string]bool{"imp-id1": true},
+ },
+ },
+ {
+ description: "Stored bid responses 3 same mixed case bidders in imp.ext and imp.ext.prebid.bidders one imp",
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "BIDDERa": {
+ "placementId": 123
+ },
+ "prebid": {
+ "bidder": {
+ "BiddeRa": {
+ "placementId": 12883451
+ }
+ },
+ "storedbidresponse": [
+ {"bidder":"bidderA", "id": "1", "replaceimpid": true},
+ {"bidder":"bidderB", "id": "2", "replaceimpid": false}
+ ]
+ }
+ }`)},
+ },
+ },
+ expectedStoredAuctionResponses: ImpsWithBidResponses{},
+ expectedStoredBidResponses: ImpBidderStoredResp{
+ "imp-id1": {"bidderA": bidStoredResp1, "BIDDERa": bidStoredResp1, "BiddeRa": bidStoredResp1},
+ },
+ expectedBidderImpReplaceImpID: BidderImpReplaceImpID{
+ "BIDDERa": map[string]bool{"imp-id1": true},
+ "bidderA": map[string]bool{"imp-id1": true},
+ "BiddeRa": map[string]bool{"imp-id1": true},
+ },
+ },
+ {
+ description: "Stored bid responses 3 same mixed case bidders in imp.ext and imp.ext.prebid.bidders one imp, duplicated stored response",
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "BIDDERa": {
+ "placementId": 123
+ },
+ "prebid": {
+ "bidder": {
+ "BiddeRa": {
+ "placementId": 12883451
+ }
+ },
+ "storedbidresponse": [
+ {"bidder":"bidderA", "id": "1", "replaceimpid": true},
+ {"bidder":"bidderA", "id": "2", "replaceimpid": true},
+ {"bidder":"bidderB", "id": "2", "replaceimpid": false}
+ ]
+ }
+ }`)},
+ },
+ },
+ expectedStoredAuctionResponses: ImpsWithBidResponses{},
+ expectedStoredBidResponses: ImpBidderStoredResp{
+ "imp-id1": {"bidderA": bidStoredResp1, "BIDDERa": bidStoredResp1, "BiddeRa": bidStoredResp1},
+ },
+ expectedBidderImpReplaceImpID: BidderImpReplaceImpID{
+ "BIDDERa": map[string]bool{"imp-id1": true},
+ "bidderA": map[string]bool{"imp-id1": true},
+ "BiddeRa": map[string]bool{"imp-id1": true},
+ },
+ },
{
//This is not a valid scenario for real auction request, added for testing purposes
description: "Stored auction and bid responses one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -420,9 +500,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
{"bidder":"bidderB", "id": "2"}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{
"imp-id1": bidStoredResp1,
},
@@ -436,10 +516,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
},
{
description: "Stored auction response three imps",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -448,11 +528,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "1"
}
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -461,11 +539,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "2"
}
}
- }
- },
+ }`)},
{
- "id": "imp-id3",
- "ext": {
+ ID: "imp-id3",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -474,9 +551,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "3"
}
}
- }
- }
- ]}`),
+ }`),
+ },
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{
"imp-id1": bidStoredResp1,
"imp-id2": bidStoredResp2,
@@ -487,10 +565,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
},
{
description: "Stored auction response three imps duplicated stored auction response",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -499,11 +577,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "1"
}
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -512,11 +588,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "2"
}
}
- }
- },
+ }`)},
{
- "id": "imp-id3",
- "ext": {
+ ID: "imp-id3",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -525,9 +600,10 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
"id": "2"
}
}
- }
- }
- ]}`),
+ }`),
+ },
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{
"imp-id1": bidStoredResp1,
"imp-id2": bidStoredResp2,
@@ -538,11 +614,14 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
},
{
description: "Stored bid responses two bidders two imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -551,12 +630,13 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
{"bidder":"bidderB", "id": "2"}
]
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
- "appnexus": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
+ "bidderA": {
+ "placementId": 123
+ },
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -565,9 +645,9 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
{"bidder":"bidderB", "id": "2", "replaceimpid": false}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedStoredAuctionResponses: ImpsWithBidResponses{},
expectedStoredBidResponses: ImpBidderStoredResp{
"imp-id1": {"bidderA": bidStoredResp1, "bidderB": bidStoredResp2},
@@ -581,17 +661,19 @@ func TestProcessStoredAuctionAndBidResponses(t *testing.T) {
}
for _, test := range testCases {
- storedAuctionResponses, storedBidResponses, bidderImpReplaceImpId, errorList := ProcessStoredResponses(nil, test.requestJson, fetcher, bidderMap)
- assert.Equal(t, test.expectedStoredAuctionResponses, storedAuctionResponses, "storedAuctionResponses doesn't match: %s\n", test.description)
- assert.Equalf(t, test.expectedStoredBidResponses, storedBidResponses, "storedBidResponses doesn't match: %s\n", test.description)
- assert.Equal(t, test.expectedBidderImpReplaceImpID, bidderImpReplaceImpId, "bidderImpReplaceImpId doesn't match: %s\n", test.description)
- assert.Nil(t, errorList, "Error should be nil")
+ t.Run(test.description, func(t *testing.T) {
+ rw := openrtb_ext.RequestWrapper{BidRequest: &test.request}
+ storedAuctionResponses, storedBidResponses, bidderImpReplaceImpId, errorList := ProcessStoredResponses(nil, &rw, fetcher)
+ assert.Equal(t, test.expectedStoredAuctionResponses, storedAuctionResponses)
+ assert.Equal(t, test.expectedStoredBidResponses, storedBidResponses)
+ assert.Equal(t, test.expectedBidderImpReplaceImpID, bidderImpReplaceImpId)
+ assert.Nil(t, errorList, "Error should be nil")
+ })
}
}
func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
- bidderMap := map[string]openrtb_ext.BidderName{"bidderA": "bidderA", "bidderB": "bidderB"}
bidStoredResp1 := json.RawMessage(`[{"bid": [{"id": "bid_id1"],"seat": "bidderA"}]`)
bidStoredResp2 := json.RawMessage(`[{"bid": [{"id": "bid_id2"],"seat": "bidderB"}]`)
mockStoredResponses := map[string]json.RawMessage{
@@ -604,16 +686,16 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
testCases := []struct {
description string
- requestJson []byte
+ request openrtb2.BidRequest
expectedErrors []error
}{
{
description: "Stored bid response with nil data, one bidder one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -621,20 +703,20 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
{"bidder":"bidderB", "id": "3"}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored bid response for impId = imp-id1, bidder = bidderB and storedBidResponse id = 3"),
},
},
{
description: "Stored bid response with nil data, one bidder, two imps, one with correct stored response",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -642,12 +724,10 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
{"bidder":"bidderB", "id": "1"}
]
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
- "appnexus": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -655,20 +735,20 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
{"bidder":"bidderB", "id": "3"}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored bid response for impId = imp-id2, bidder = bidderB and storedBidResponse id = 3"),
},
},
{
description: "Stored bid response with nil data, one bidder, two imps, both with correct stored response",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
- "appnexus": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -676,12 +756,10 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
{"bidder":"bidderB", "id": "4"}
]
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
- "appnexus": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
+ "bidderB": {
"placementId": 123
},
"prebid": {
@@ -689,9 +767,9 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
{"bidder":"bidderB", "id": "3"}
]
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored bid response for impId = imp-id1, bidder = bidderB and storedBidResponse id = 4"),
errors.New("failed to fetch stored bid response for impId = imp-id2, bidder = bidderB and storedBidResponse id = 3"),
@@ -699,10 +777,10 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
},
{
description: "Stored auction response with nil data and one imp",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -711,19 +789,19 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
"id": "4"
}
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored auction response for impId = imp-id1 and storedAuctionResponse id = 4"),
},
},
{
description: "Stored auction response with nil data, and two imps with nil responses",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -732,11 +810,9 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
"id": "4"
}
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -745,9 +821,9 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
"id": "3"
}
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored auction response for impId = imp-id1 and storedAuctionResponse id = 4"),
errors.New("failed to fetch stored auction response for impId = imp-id2 and storedAuctionResponse id = 3"),
@@ -755,10 +831,10 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
},
{
description: "Stored auction response with nil data, two imps, one with nil responses",
- requestJson: []byte(`{"imp": [
- {
- "id": "imp-id1",
- "ext": {
+ request: openrtb2.BidRequest{
+ Imp: []openrtb2.Imp{
+ {ID: "imp-id1",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -767,11 +843,9 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
"id": "2"
}
}
- }
- },
- {
- "id": "imp-id2",
- "ext": {
+ }`)},
+ {ID: "imp-id2",
+ Ext: json.RawMessage(`{
"appnexus": {
"placementId": 123
},
@@ -780,9 +854,9 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
"id": "3"
}
}
- }
- }
- ]}`),
+ }`)},
+ },
+ },
expectedErrors: []error{
errors.New("failed to fetch stored auction response for impId = imp-id2 and storedAuctionResponse id = 3"),
},
@@ -790,10 +864,13 @@ func TestProcessStoredResponsesNotFoundResponse(t *testing.T) {
}
for _, test := range testCases {
- _, _, _, errorList := ProcessStoredResponses(nil, test.requestJson, fetcher, bidderMap)
- for _, err := range test.expectedErrors {
- assert.Contains(t, errorList, err, "incorrect errors returned: %s", test.description)
- }
+ t.Run(test.description, func(t *testing.T) {
+ rw := openrtb_ext.RequestWrapper{BidRequest: &test.request}
+ _, _, _, errorList := ProcessStoredResponses(nil, &rw, fetcher)
+ for _, err := range test.expectedErrors {
+ assert.Contains(t, errorList, err)
+ }
+ })
}
}
@@ -847,8 +924,10 @@ func TestFlipMap(t *testing.T) {
}
for _, test := range testCases {
- actualResult := flipMap(test.inImpBidderReplaceImpID)
- assert.Equal(t, test.outBidderImpReplaceImpID, actualResult, "Incorrect flipped map for test case %s\n", test.description)
+ t.Run(test.description, func(t *testing.T) {
+ actualResult := flipMap(test.inImpBidderReplaceImpID)
+ assert.Equal(t, test.outBidderImpReplaceImpID, actualResult)
+ })
}
}
From 6b98a812c2d8adf69e9ff45eaeb108f8097231f3 Mon Sep 17 00:00:00 2001
From: guscarreon
Date: Fri, 20 Oct 2023 14:26:41 -0400
Subject: [PATCH 33/34] Adapter Name Case Insensitive: alternate bidder codes
(#3229)
---
.../exchangetest/alternate-bidder-codes.json | 272 ++++++++++++++++++
exchange/utils.go | 30 +-
exchange/utils_test.go | 221 +++++++++++++-
openrtb_ext/alternatebiddercodes.go | 31 +-
openrtb_ext/alternatebiddercodes_test.go | 148 ++++++++++
5 files changed, 683 insertions(+), 19 deletions(-)
create mode 100644 exchange/exchangetest/alternate-bidder-codes.json
diff --git a/exchange/exchangetest/alternate-bidder-codes.json b/exchange/exchangetest/alternate-bidder-codes.json
new file mode 100644
index 00000000000..26a7a05d4e1
--- /dev/null
+++ b/exchange/exchangetest/alternate-bidder-codes.json
@@ -0,0 +1,272 @@
+{
+ "incomingRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "imp-id-1",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "prebid": {
+ "bidder": {
+ "pubmatic": {
+ "publisherId": 5890
+ },
+ "appnexus": {
+ "placementId": 1
+ }
+ }
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "alternatebiddercodes": {
+ "enabled": true,
+ "bidders": {
+ "PUBmatic": {
+ "enabled": true,
+ "allowedbiddercodes": [
+ "groupm"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "outgoingRequests": {
+ "pubmatic": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "imp-id-1",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "publisherId": 5890
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "alternatebiddercodes": {
+ "enabled": true,
+ "bidders": {
+ "pubmatic": {
+ "enabled": true,
+ "allowedbiddercodes": [
+ "groupm"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "pbsSeatBids": [
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "pubmatic-bid-1",
+ "impid": "imp-id-1",
+ "price": 0.71
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ }
+ ],
+ "seat": "pubmatic"
+ },
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "pubmatic-bid-2",
+ "impid": "imp-id-1",
+ "price": 0.51
+ },
+ "bidType": "video",
+ "bidMeta": {
+ "adaptercode": "pubmatic"
+ }
+ }
+ ],
+ "seat": "groupm"
+ }
+ ]
+ }
+ },
+ "appnexus": {
+ "expectRequest": {
+ "ortbRequest": {
+ "id": "some-request-id",
+ "site": {
+ "page": "test.somepage.com"
+ },
+ "imp": [
+ {
+ "id": "imp-id-1",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "alternatebiddercodes": {
+ "enabled": true,
+ "bidders": null
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "pbsSeatBids": [
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "appnexus-bid-1",
+ "impid": "imp-id-1",
+ "price": 0.3
+ },
+ "bidType": "banner",
+ "bidMeta": {
+ "adaptercode": "appnexus"
+ }
+ }
+ ],
+ "seat": "appnexus"
+ },
+ {
+ "pbsBids": [
+ {
+ "ortbBid": {
+ "id": "appnexus-bid-2",
+ "impid": "imp-id-1",
+ "price": 0.3
+ },
+ "bidType": "banner",
+ "bidMeta": {
+ "adaptercode": "appnexus"
+ }
+ }
+ ],
+ "seat": "groupm"
+ }
+ ]
+ }
+ }
+ },
+ "response": {
+ "bids": {
+ "id": "some-request-id",
+ "seatbid": [
+ {
+ "seat": "groupm",
+ "bid": [
+ {
+ "id": "pubmatic-bid-2",
+ "impid": "imp-id-1",
+ "price": 0.51,
+ "ext": {
+ "origbidcpm": 0.51,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video"
+ }
+ }
+ },
+ {
+ "id": "appnexus-bid-2",
+ "impid": "imp-id-1",
+ "price": 0.3,
+ "ext": {
+ "origbidcpm": 0.3,
+ "prebid": {
+ "meta": {
+ "adaptercode": "appnexus"
+ },
+ "type": "banner"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "seat": "pubmatic",
+ "bid": [
+ {
+ "id": "pubmatic-bid-1",
+ "impid": "imp-id-1",
+ "price": 0.71,
+ "ext": {
+ "origbidcpm": 0.71,
+ "prebid": {
+ "meta": {
+ "adaptercode": "pubmatic"
+ },
+ "type": "video"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "seat": "appnexus",
+ "bid": [
+ {
+ "id": "appnexus-bid-1",
+ "impid": "imp-id-1",
+ "price": 0.3,
+ "ext": {
+ "origbidcpm": 0.3,
+ "prebid": {
+ "meta": {
+ "adaptercode": "appnexus"
+ },
+ "type": "banner"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/exchange/utils.go b/exchange/utils.go
index ea6b317dae1..8b4774a36f4 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -442,30 +442,32 @@ func buildRequestExtForBidder(bidder string, requestExt json.RawMessage, request
}
func buildRequestExtAlternateBidderCodes(bidder string, accABC *openrtb_ext.ExtAlternateBidderCodes, reqABC *openrtb_ext.ExtAlternateBidderCodes) *openrtb_ext.ExtAlternateBidderCodes {
- if reqABC != nil {
- alternateBidderCodes := &openrtb_ext.ExtAlternateBidderCodes{
- Enabled: reqABC.Enabled,
- }
- if bidderCodes, ok := reqABC.Bidders[bidder]; ok {
- alternateBidderCodes.Bidders = map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
- bidder: bidderCodes,
- }
- }
- return alternateBidderCodes
+
+ if altBidderCodes := copyExtAlternateBidderCodes(bidder, reqABC); altBidderCodes != nil {
+ return altBidderCodes
}
- if accABC != nil {
+ if altBidderCodes := copyExtAlternateBidderCodes(bidder, accABC); altBidderCodes != nil {
+ return altBidderCodes
+ }
+
+ return nil
+}
+
+func copyExtAlternateBidderCodes(bidder string, altBidderCodes *openrtb_ext.ExtAlternateBidderCodes) *openrtb_ext.ExtAlternateBidderCodes {
+ if altBidderCodes != nil {
alternateBidderCodes := &openrtb_ext.ExtAlternateBidderCodes{
- Enabled: accABC.Enabled,
+ Enabled: altBidderCodes.Enabled,
}
- if bidderCodes, ok := accABC.Bidders[bidder]; ok {
+
+ if bidderCodes, ok := altBidderCodes.IsBidderInAlternateBidderCodes(bidder); ok {
alternateBidderCodes.Bidders = map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
bidder: bidderCodes,
}
}
+
return alternateBidderCodes
}
-
return nil
}
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index 3c28a43c33e..3a00c37c7b1 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -5,10 +5,11 @@ import (
"encoding/json"
"errors"
"fmt"
- "github.com/prebid/prebid-server/stored_responses"
"sort"
"testing"
+ "github.com/prebid/prebid-server/stored_responses"
+
gpplib "github.com/prebid/go-gpp"
"github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
@@ -4756,6 +4757,224 @@ func TestApplyBidAdjustmentToFloor(t *testing.T) {
}
}
+func TestBuildRequestExtAlternateBidderCodes(t *testing.T) {
+ type testInput struct {
+ bidderNameRaw string
+ accABC *openrtb_ext.ExtAlternateBidderCodes
+ reqABC *openrtb_ext.ExtAlternateBidderCodes
+ }
+ testCases := []struct {
+ desc string
+ in testInput
+ expected *openrtb_ext.ExtAlternateBidderCodes
+ }{
+ {
+ desc: "No biddername, nil reqABC and accABC",
+ in: testInput{},
+ expected: nil,
+ },
+ {
+ desc: "No biddername, non-nil reqABC",
+ in: testInput{
+ reqABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ {
+ desc: "No biddername, non-nil accABC",
+ in: testInput{
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ {
+ desc: "No biddername, non-nil reqABC nor accABC",
+ in: testInput{
+ reqABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ {
+ desc: "non-nil reqABC",
+ in: testInput{
+ bidderNameRaw: "pubmatic",
+ reqABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ {
+ desc: "non-nil accABC",
+ in: testInput{
+ bidderNameRaw: "pubmatic",
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{},
+ },
+ {
+ desc: "both reqABC and accABC enabled and bidder matches elements in accABC but reqABC comes first",
+ in: testInput{
+ bidderNameRaw: "PUBmatic",
+ reqABC: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"pubCode1"},
+ },
+ },
+ },
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "PubMatic": {
+ AllowedBidderCodes: []string{"pubCode2"},
+ },
+ },
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{Enabled: true},
+ },
+ {
+ desc: "both reqABC and accABC enabled and bidder matches elements in both but we prioritize reqABC",
+ in: testInput{
+ bidderNameRaw: "pubmatic",
+ reqABC: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "PubMatic": {
+ AllowedBidderCodes: []string{"pubCode"},
+ },
+ },
+ },
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"anxsCode"},
+ },
+ },
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "pubmatic": {
+ AllowedBidderCodes: []string{"pubCode"},
+ },
+ },
+ },
+ },
+ {
+ desc: "nil reqABC non-nil accABC enabled and bidder matches elements in accABC",
+ in: testInput{
+ bidderNameRaw: "APPnexus",
+ accABC: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"anxsCode"},
+ },
+ },
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "APPnexus": {
+ AllowedBidderCodes: []string{"anxsCode"},
+ },
+ },
+ },
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ alternateBidderCodes := buildRequestExtAlternateBidderCodes(tc.in.bidderNameRaw, tc.in.accABC, tc.in.reqABC)
+ assert.Equal(t, tc.expected, alternateBidderCodes)
+ })
+ }
+}
+
+func TestCopyExtAlternateBidderCodes(t *testing.T) {
+ type testInput struct {
+ bidder string
+ alternateBidderCodes *openrtb_ext.ExtAlternateBidderCodes
+ }
+ testCases := []struct {
+ desc string
+ in testInput
+ expected *openrtb_ext.ExtAlternateBidderCodes
+ }{
+ {
+ desc: "pass a nil alternateBidderCodes argument, expect nil output",
+ in: testInput{},
+ expected: nil,
+ },
+ {
+ desc: "non-nil alternateBidderCodes argument but bidder doesn't match",
+ in: testInput{
+ alternateBidderCodes: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ },
+ },
+ {
+ desc: "non-nil alternateBidderCodes argument bidder is identical to one element in map",
+ in: testInput{
+ bidder: "appnexus",
+ alternateBidderCodes: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"adnxs"},
+ },
+ },
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"adnxs"},
+ },
+ },
+ },
+ },
+ {
+ desc: "case insensitive match, keep bidder casing in output",
+ in: testInput{
+ bidder: "AppNexus",
+ alternateBidderCodes: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ AllowedBidderCodes: []string{"adnxs"},
+ },
+ },
+ },
+ },
+ expected: &openrtb_ext.ExtAlternateBidderCodes{
+ Enabled: true,
+ Bidders: map[string]openrtb_ext.ExtAdapterAlternateBidderCodes{
+ "AppNexus": {
+ AllowedBidderCodes: []string{"adnxs"},
+ },
+ },
+ },
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ alternateBidderCodes := copyExtAlternateBidderCodes(tc.in.bidder, tc.in.alternateBidderCodes)
+ assert.Equal(t, tc.expected, alternateBidderCodes)
+ })
+ }
+}
+
func TestBuildBidResponseRequestBidderName(t *testing.T) {
bidderImpResponses := stored_responses.BidderImpsWithBidResponses{
openrtb_ext.BidderName("appnexus"): {"impId1": json.RawMessage(`{}`), "impId2": json.RawMessage(`{}`)},
diff --git a/openrtb_ext/alternatebiddercodes.go b/openrtb_ext/alternatebiddercodes.go
index 49291a3e5e8..3dcb6c781fa 100644
--- a/openrtb_ext/alternatebiddercodes.go
+++ b/openrtb_ext/alternatebiddercodes.go
@@ -1,6 +1,9 @@
package openrtb_ext
-import "fmt"
+import (
+ "fmt"
+ "strings"
+)
// ExtAlternateBidderCodes defines list of alternate bidder codes allowed by adatpers. This overrides host level configs.
type ExtAlternateBidderCodes struct {
@@ -14,7 +17,7 @@ type ExtAdapterAlternateBidderCodes struct {
}
func (bidderCodes *ExtAlternateBidderCodes) IsValidBidderCode(bidder, alternateBidder string) (bool, error) {
- if alternateBidder == "" || bidder == alternateBidder {
+ if alternateBidder == "" || strings.EqualFold(bidder, alternateBidder) {
return true, nil
}
@@ -26,8 +29,8 @@ func (bidderCodes *ExtAlternateBidderCodes) IsValidBidderCode(bidder, alternateB
return false, alternateBidderNotDefinedError(bidder, alternateBidder)
}
- adapterCfg, ok := bidderCodes.Bidders[bidder]
- if !ok {
+ adapterCfg, found := bidderCodes.IsBidderInAlternateBidderCodes(bidder)
+ if !found {
return false, alternateBidderNotDefinedError(bidder, alternateBidder)
}
@@ -56,3 +59,23 @@ func alternateBidderDisabledError(bidder, alternateBidder string) error {
func alternateBidderNotDefinedError(bidder, alternateBidder string) error {
return fmt.Errorf("alternateBidderCodes not defined for adapter %q, rejecting bids for %q", bidder, alternateBidder)
}
+
+// IsBidderInAlternateBidderCodes tries to find bidder in the altBidderCodes.Bidders map in a case sensitive
+// manner first. If no match is found it'll try it in a case insensitive way in linear time
+func (bidderCodes *ExtAlternateBidderCodes) IsBidderInAlternateBidderCodes(bidder string) (ExtAdapterAlternateBidderCodes, bool) {
+ if len(bidder) > 0 && bidderCodes != nil && len(bidderCodes.Bidders) > 0 {
+ // try constant time exact match
+ if adapterCfg, found := bidderCodes.Bidders[bidder]; found {
+ return adapterCfg, true
+ }
+
+ // check if we can find with a case insensitive comparison
+ for bidderName, adapterCfg := range bidderCodes.Bidders {
+ if strings.EqualFold(bidder, bidderName) {
+ return adapterCfg, true
+ }
+ }
+ }
+
+ return ExtAdapterAlternateBidderCodes{}, false
+}
diff --git a/openrtb_ext/alternatebiddercodes_test.go b/openrtb_ext/alternatebiddercodes_test.go
index 438aebad559..f9229b13d2a 100644
--- a/openrtb_ext/alternatebiddercodes_test.go
+++ b/openrtb_ext/alternatebiddercodes_test.go
@@ -35,6 +35,14 @@ func TestAlternateBidderCodes_IsValidBidderCode(t *testing.T) {
},
wantIsValid: true,
},
+ {
+ name: "alternateBidder and bidder are the same under Unicode case-folding (default non-extra bid case with seat's alternateBidder explicitly set)",
+ args: args{
+ bidder: "pubmatic",
+ alternateBidder: "pubmatic",
+ },
+ wantIsValid: true,
+ },
{
name: "account.alternatebiddercodes config not defined (default, reject bid)",
args: args{
@@ -98,6 +106,20 @@ func TestAlternateBidderCodes_IsValidBidderCode(t *testing.T) {
},
wantIsValid: true,
},
+ {
+ name: "bidder is different in casing than the entry in account.alternatebiddercodes but they match because our case insensitive comparison",
+ args: args{
+ bidder: "PUBmatic",
+ alternateBidder: "groupm",
+ },
+ fields: fields{
+ Enabled: true,
+ Bidders: map[string]ExtAdapterAlternateBidderCodes{
+ "pubmatic": {Enabled: true},
+ },
+ },
+ wantIsValid: true,
+ },
{
name: "allowedBidderCodes is *",
args: args{
@@ -178,3 +200,129 @@ func TestAlternateBidderCodes_IsValidBidderCode(t *testing.T) {
})
}
}
+
+func TestIsBidderInAlternateBidderCodes(t *testing.T) {
+ type testInput struct {
+ bidder string
+ bidderCodes *ExtAlternateBidderCodes
+ }
+ type testOutput struct {
+ adapterCfg ExtAdapterAlternateBidderCodes
+ found bool
+ }
+ testCases := []struct {
+ desc string
+ in testInput
+ expected testOutput
+ }{
+ {
+ desc: "empty bidder",
+ in: testInput{
+ bidderCodes: &ExtAlternateBidderCodes{},
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{},
+ found: false,
+ },
+ },
+ {
+ desc: "nil ExtAlternateBidderCodes",
+ in: testInput{
+ bidder: "appnexus",
+ bidderCodes: nil,
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{},
+ found: false,
+ },
+ },
+ {
+ desc: "nil ExtAlternateBidderCodes.Bidder map",
+ in: testInput{
+ bidder: "appnexus",
+ bidderCodes: &ExtAlternateBidderCodes{},
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{},
+ found: false,
+ },
+ },
+ {
+ desc: "nil ExtAlternateBidderCodes.Bidder map",
+ in: testInput{
+ bidder: "appnexus",
+ bidderCodes: &ExtAlternateBidderCodes{
+ Bidders: nil,
+ },
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{},
+ found: false,
+ },
+ },
+ {
+ desc: "bidder arg identical to entry in Bidders map",
+ in: testInput{
+ bidder: "appnexus",
+ bidderCodes: &ExtAlternateBidderCodes{
+ Bidders: map[string]ExtAdapterAlternateBidderCodes{
+ "appnexus": {
+ Enabled: true,
+ AllowedBidderCodes: []string{"abcCode"},
+ },
+ },
+ },
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{
+ Enabled: true,
+ AllowedBidderCodes: []string{"abcCode"},
+ },
+ found: true,
+ },
+ },
+ {
+ desc: "bidder arg matches an entry in Bidders map with case insensitive comparisson",
+ in: testInput{
+ bidder: "appnexus",
+ bidderCodes: &ExtAlternateBidderCodes{
+ Bidders: map[string]ExtAdapterAlternateBidderCodes{
+ "AppNexus": {AllowedBidderCodes: []string{"adnxsCode"}},
+ "PubMatic": {AllowedBidderCodes: []string{"pubCode"}},
+ "Rubicon": {AllowedBidderCodes: []string{"rCode"}},
+ },
+ },
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{
+ AllowedBidderCodes: []string{"adnxsCode"},
+ },
+ found: true,
+ },
+ },
+ {
+ desc: "bidder arg doesn't match any entry in map",
+ in: testInput{
+ bidder: "unknown",
+ bidderCodes: &ExtAlternateBidderCodes{
+ Bidders: map[string]ExtAdapterAlternateBidderCodes{
+ "AppNexus": {AllowedBidderCodes: []string{"adnxsCode"}},
+ "PubMatic": {AllowedBidderCodes: []string{"pubCode"}},
+ "Rubicon": {AllowedBidderCodes: []string{"rCode"}},
+ },
+ },
+ },
+ expected: testOutput{
+ adapterCfg: ExtAdapterAlternateBidderCodes{},
+ found: false,
+ },
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ adapterCfg, found := tc.in.bidderCodes.IsBidderInAlternateBidderCodes(tc.in.bidder)
+ assert.Equal(t, tc.expected.adapterCfg, adapterCfg)
+ assert.Equal(t, tc.expected.found, found)
+ })
+ }
+}
From ec729e6e5d50a1306d76332fda52108b9d313c1d Mon Sep 17 00:00:00 2001
From: Scott Kay
Date: Fri, 20 Oct 2023 16:22:32 -0400
Subject: [PATCH 34/34] Increment Package Version To V2 (#3245)
---
.gitignore | 4 +-
account/account.go | 14 +-
account/account_test.go | 12 +-
adapters/33across/33across.go | 8 +-
adapters/33across/33across_test.go | 6 +-
adapters/33across/params_test.go | 2 +-
adapters/aax/aax.go | 8 +-
adapters/aax/aax_test.go | 6 +-
adapters/aax/params_test.go | 2 +-
adapters/aceex/aceex.go | 10 +-
adapters/aceex/aceex_test.go | 6 +-
adapters/aceex/params_test.go | 2 +-
adapters/acuityads/acuityads.go | 10 +-
adapters/acuityads/acuityads_test.go | 6 +-
adapters/acuityads/params_test.go | 2 +-
adapters/adapterstest/test_json.go | 6 +-
adapters/adf/adf.go | 8 +-
adapters/adf/adf_test.go | 6 +-
adapters/adf/params_test.go | 2 +-
adapters/adgeneration/adgeneration.go | 8 +-
adapters/adgeneration/adgeneration_test.go | 8 +-
adapters/adgeneration/params_test.go | 2 +-
adapters/adhese/adhese.go | 10 +-
adapters/adhese/adhese_test.go | 6 +-
adapters/adhese/params_test.go | 2 +-
adapters/adkernel/adkernel.go | 10 +-
adapters/adkernel/adkernel_test.go | 6 +-
adapters/adkernelAdn/adkernelAdn.go | 10 +-
adapters/adkernelAdn/adkernelAdn_test.go | 6 +-
adapters/adman/adman.go | 8 +-
adapters/adman/adman_test.go | 6 +-
adapters/adman/params_test.go | 2 +-
adapters/admixer/admixer.go | 8 +-
adapters/admixer/admixer_test.go | 6 +-
adapters/admixer/params_test.go | 2 +-
adapters/adnuntius/adnuntius.go | 10 +-
adapters/adnuntius/adnuntius_test.go | 8 +-
adapters/adnuntius/params_test.go | 2 +-
adapters/adocean/adocean.go | 10 +-
adapters/adocean/adocean_test.go | 6 +-
adapters/adocean/params_test.go | 2 +-
adapters/adoppler/adoppler.go | 10 +-
adapters/adoppler/adoppler_test.go | 6 +-
adapters/adot/adot.go | 8 +-
adapters/adot/adot_test.go | 8 +-
adapters/adot/params_test.go | 2 +-
adapters/adpone/adpone.go | 8 +-
adapters/adpone/adpone_test.go | 6 +-
adapters/adprime/adprime.go | 8 +-
adapters/adprime/adprime_test.go | 6 +-
adapters/adprime/params_test.go | 2 +-
adapters/adquery/adquery.go | 8 +-
adapters/adquery/adquery_test.go | 7 +-
adapters/adquery/params_test.go | 2 +-
adapters/adquery/types.go | 2 +-
adapters/adrino/adrino.go | 8 +-
adapters/adrino/adrino_test.go | 6 +-
adapters/adrino/params_test.go | 2 +-
adapters/adsinteractive/adsinteractive.go | 8 +-
.../adsinteractive/adsinteractive_test.go | 6 +-
adapters/adsinteractive/params_test.go | 2 +-
adapters/adtarget/adtarget.go | 8 +-
adapters/adtarget/adtarget_test.go | 6 +-
adapters/adtarget/params_test.go | 2 +-
adapters/adtelligent/adtelligent.go | 8 +-
adapters/adtelligent/adtelligent_test.go | 6 +-
adapters/adtelligent/params_test.go | 2 +-
adapters/adtrgtme/adtrgtme.go | 8 +-
adapters/adtrgtme/adtrgtme_test.go | 6 +-
adapters/adtrgtme/params_test.go | 2 +-
adapters/advangelists/advangelists.go | 10 +-
adapters/advangelists/advangelists_test.go | 6 +-
adapters/advangelists/params_test.go | 3 +-
adapters/adview/adview.go | 10 +-
adapters/adview/adview_test.go | 6 +-
adapters/adview/params_test.go | 2 +-
adapters/adxcg/adxcg.go | 8 +-
adapters/adxcg/adxcg_test.go | 6 +-
adapters/adyoulike/adyoulike.go | 8 +-
adapters/adyoulike/adyoulike_test.go | 6 +-
adapters/adyoulike/params_test.go | 2 +-
adapters/aidem/aidem.go | 8 +-
adapters/aidem/aidem_test.go | 6 +-
adapters/aidem/params_test.go | 2 +-
adapters/aja/aja.go | 8 +-
adapters/aja/aja_test.go | 6 +-
adapters/algorix/algorix.go | 10 +-
adapters/algorix/algorix_test.go | 6 +-
adapters/algorix/params_test.go | 3 +-
adapters/amx/amx.go | 8 +-
adapters/amx/amx_test.go | 8 +-
adapters/amx/params_test.go | 2 +-
adapters/apacdex/apacdex.go | 8 +-
adapters/apacdex/apacdex_test.go | 6 +-
adapters/apacdex/params_test.go | 2 +-
adapters/appnexus/appnexus.go | 18 +-
adapters/appnexus/appnexus_test.go | 6 +-
adapters/appnexus/params_test.go | 2 +-
adapters/appush/appush.go | 8 +-
adapters/appush/appush_test.go | 6 +-
adapters/appush/params_test.go | 2 +-
adapters/audienceNetwork/facebook.go | 12 +-
adapters/audienceNetwork/facebook_test.go | 8 +-
adapters/automatad/automatad.go | 8 +-
adapters/automatad/automatad_test.go | 6 +-
adapters/automatad/params_test.go | 2 +-
adapters/avocet/avocet.go | 8 +-
adapters/avocet/avocet_test.go | 10 +-
adapters/axis/axis.go | 8 +-
adapters/axis/axis_test.go | 6 +-
adapters/axis/params_test.go | 2 +-
adapters/axonix/axonix.go | 10 +-
adapters/axonix/axonix_test.go | 6 +-
adapters/axonix/params_test.go | 2 +-
adapters/beachfront/beachfront.go | 8 +-
adapters/beachfront/beachfront_test.go | 6 +-
adapters/beachfront/params_test.go | 2 +-
adapters/beintoo/beintoo.go | 8 +-
adapters/beintoo/beintoo_test.go | 6 +-
adapters/beintoo/params_test.go | 2 +-
adapters/bematterfull/bematterfull.go | 10 +-
.../bematterfull/bematterfulltest_test.go | 6 +-
adapters/bematterfull/params_test.go | 2 +-
adapters/between/between.go | 10 +-
adapters/between/between_test.go | 6 +-
adapters/between/params_test.go | 2 +-
adapters/beyondmedia/beyondmedia.go | 8 +-
adapters/beyondmedia/beyondmedia_test.go | 6 +-
adapters/beyondmedia/params_test.go | 2 +-
adapters/bidder.go | 8 +-
adapters/bidmachine/bidmachine.go | 10 +-
adapters/bidmachine/bidmachine_test.go | 6 +-
adapters/bidmachine/params_test.go | 2 +-
adapters/bidmyadz/bidmyadz.go | 8 +-
adapters/bidmyadz/bidmyadz_test.go | 6 +-
adapters/bidmyadz/params_test.go | 2 +-
adapters/bidscube/bidscube.go | 8 +-
adapters/bidscube/bidscube_test.go | 6 +-
adapters/bidscube/params_test.go | 2 +-
adapters/bidstack/bidstack.go | 6 +-
adapters/bidstack/bidstack_test.go | 6 +-
adapters/bidstack/params_test.go | 2 +-
adapters/bizzclick/bizzclick.go | 10 +-
adapters/bizzclick/bizzclick_test.go | 6 +-
adapters/bizzclick/params_test.go | 2 +-
adapters/bliink/bliink.go | 8 +-
adapters/bliink/bliink_test.go | 6 +-
adapters/bliink/params_test.go | 3 +-
adapters/blue/blue.go | 8 +-
adapters/blue/blue_test.go | 6 +-
adapters/bluesea/bluesea.go | 8 +-
adapters/bluesea/bluesea_test.go | 6 +-
adapters/bluesea/params_test.go | 2 +-
adapters/bmtm/brightmountainmedia.go | 8 +-
adapters/bmtm/brightmountainmedia_test.go | 6 +-
adapters/bmtm/params_test.go | 2 +-
adapters/boldwin/boldwin.go | 8 +-
adapters/boldwin/boldwin_test.go | 6 +-
adapters/boldwin/params_test.go | 2 +-
adapters/brave/brave.go | 10 +-
adapters/brave/brave_test.go | 6 +-
adapters/brave/params_test.go | 2 +-
.../cadent_aperture_mx/cadentaperturemx.go | 8 +-
.../cadentaperturemx_test.go | 8 +-
adapters/cadent_aperture_mx/params_test.go | 2 +-
adapters/ccx/ccx.go | 8 +-
adapters/ccx/ccx_test.go | 6 +-
adapters/ccx/params_test.go | 2 +-
adapters/coinzilla/coinzilla.go | 8 +-
adapters/coinzilla/coinzilla_test.go | 6 +-
adapters/coinzilla/params_test.go | 2 +-
adapters/colossus/colossus.go | 8 +-
adapters/colossus/colossus_test.go | 6 +-
adapters/colossus/params_test.go | 2 +-
adapters/compass/compass.go | 8 +-
adapters/compass/compass_test.go | 6 +-
adapters/compass/params_test.go | 2 +-
adapters/connectad/connectad.go | 8 +-
adapters/connectad/connectad_test.go | 6 +-
adapters/connectad/params_test.go | 2 +-
adapters/consumable/consumable.go | 10 +-
adapters/consumable/consumable_test.go | 8 +-
adapters/consumable/params_test.go | 2 +-
adapters/conversant/conversant.go | 8 +-
adapters/conversant/conversant_test.go | 6 +-
adapters/cpmstar/cpmstar.go | 8 +-
adapters/cpmstar/cpmstar_test.go | 6 +-
adapters/cpmstar/params_test.go | 2 +-
adapters/criteo/criteo.go | 8 +-
adapters/criteo/criteo_test.go | 7 +-
adapters/criteo/params_test.go | 2 +-
adapters/cwire/cwire.go | 8 +-
adapters/cwire/cwire_test.go | 6 +-
adapters/cwire/params_test.go | 2 +-
adapters/datablocks/datablocks.go | 10 +-
adapters/datablocks/datablocks_test.go | 6 +-
adapters/decenterads/decenterads.go | 8 +-
adapters/decenterads/decenterads_test.go | 6 +-
adapters/decenterads/params_test.go | 2 +-
adapters/deepintent/deepintent.go | 8 +-
adapters/deepintent/deepintent_test.go | 6 +-
adapters/deepintent/params_test.go | 2 +-
adapters/definemedia/definemedia.go | 8 +-
adapters/definemedia/definemedia_test.go | 6 +-
adapters/definemedia/params_test.go | 2 +-
adapters/dianomi/dianomi.go | 8 +-
adapters/dianomi/dianomi_test.go | 6 +-
adapters/dianomi/params_test.go | 2 +-
adapters/dmx/dmx.go | 8 +-
adapters/dmx/dmx_test.go | 8 +-
adapters/dmx/params_test.go | 3 +-
adapters/dxkulture/dxkulture.go | 8 +-
adapters/dxkulture/dxkulture_test.go | 4 +-
adapters/dxkulture/params_test.go | 2 +-
adapters/e_volution/evolution.go | 8 +-
adapters/e_volution/evolution_test.go | 6 +-
adapters/e_volution/params_test.go | 2 +-
adapters/edge226/edge226.go | 6 +-
adapters/edge226/edge226_test.go | 6 +-
adapters/edge226/params_test.go | 2 +-
adapters/emtv/emtv.go | 8 +-
adapters/emtv/emtv_test.go | 6 +-
adapters/emtv/params_test.go | 2 +-
adapters/eplanning/eplanning.go | 8 +-
adapters/eplanning/eplanning_test.go | 8 +-
adapters/epom/epom.go | 8 +-
adapters/epom/epom_test.go | 6 +-
adapters/flipp/flipp.go | 6 +-
adapters/flipp/flipp_params.go | 2 +-
adapters/flipp/flipp_test.go | 6 +-
adapters/flipp/params_test.go | 2 +-
adapters/freewheelssp/freewheelssp.go | 8 +-
adapters/freewheelssp/freewheelssp_test.go | 7 +-
adapters/frvradn/frvradn.go | 8 +-
adapters/frvradn/frvradn_test.go | 9 +-
adapters/frvradn/params_test.go | 2 +-
adapters/gamma/gamma.go | 8 +-
adapters/gamma/gamma_test.go | 6 +-
adapters/gamma/params_test.go | 2 +-
adapters/gamoshi/gamoshi.go | 8 +-
adapters/gamoshi/gamoshi_test.go | 6 +-
adapters/gamoshi/params_test.go | 2 +-
adapters/globalsun/globalsun.go | 8 +-
adapters/globalsun/globalsun_test.go | 6 +-
adapters/globalsun/params_test.go | 2 +-
adapters/gothamads/gothamads.go | 10 +-
adapters/gothamads/gothamads_test.go | 6 +-
adapters/gothamads/params_test.go | 2 +-
adapters/grid/grid.go | 10 +-
adapters/grid/grid_test.go | 6 +-
adapters/gumgum/gumgum.go | 8 +-
adapters/gumgum/gumgum_test.go | 6 +-
adapters/gumgum/params_test.go | 3 +-
adapters/huaweiads/huaweiads.go | 8 +-
adapters/huaweiads/huaweiads_test.go | 6 +-
adapters/huaweiads/params_test.go | 3 +-
adapters/imds/imds.go | 10 +-
adapters/imds/imds_test.go | 6 +-
adapters/imds/params_test.go | 2 +-
adapters/impactify/impactify.go | 8 +-
adapters/impactify/impactify_test.go | 6 +-
adapters/impactify/params_test.go | 2 +-
adapters/improvedigital/improvedigital.go | 11 +-
.../improvedigital/improvedigital_test.go | 6 +-
adapters/improvedigital/params_test.go | 3 +-
adapters/infoawarebidder.go | 6 +-
adapters/infoawarebidder_test.go | 8 +-
adapters/infytv/infytv.go | 8 +-
adapters/infytv/infytv_test.go | 6 +-
adapters/infytv/params_test.go | 2 +-
adapters/inmobi/inmobi.go | 8 +-
adapters/inmobi/inmobi_test.go | 6 +-
.../interactiveoffers/interactiveoffers.go | 10 +-
.../interactiveoffers_test.go | 6 +-
adapters/interactiveoffers/params_test.go | 3 +-
adapters/invibes/invibes.go | 12 +-
adapters/invibes/invibes_test.go | 6 +-
adapters/invibes/params_test.go | 2 +-
adapters/iqx/iqx.go | 10 +-
adapters/iqx/iqxtest_test.go | 6 +-
adapters/iqx/params_test.go | 2 +-
adapters/iqzone/iqzone.go | 8 +-
adapters/iqzone/iqzone_test.go | 6 +-
adapters/iqzone/params_test.go | 2 +-
adapters/ix/ix.go | 10 +-
adapters/ix/ix_test.go | 10 +-
adapters/ix/params_test.go | 2 +-
adapters/jixie/jixie.go | 8 +-
adapters/jixie/jixie_test.go | 6 +-
adapters/jixie/params_test.go | 2 +-
adapters/kargo/kargo.go | 8 +-
adapters/kargo/kargo_test.go | 6 +-
adapters/kargo/params_test.go | 2 +-
adapters/kayzen/kayzen.go | 10 +-
adapters/kayzen/kayzen_test.go | 6 +-
adapters/kayzen/params_test.go | 2 +-
adapters/kidoz/kidoz.go | 8 +-
adapters/kidoz/kidoz_test.go | 8 +-
adapters/kidoz/params_test.go | 2 +-
adapters/kiviads/kiviads.go | 8 +-
adapters/kiviads/kiviads_test.go | 6 +-
adapters/kiviads/params_test.go | 2 +-
adapters/krushmedia/krushmedia.go | 10 +-
adapters/krushmedia/krushmedia_test.go | 6 +-
adapters/krushmedia/params_test.go | 2 +-
adapters/lemmadigital/lemmadigital.go | 10 +-
adapters/lemmadigital/lemmadigital_test.go | 6 +-
adapters/lemmadigital/params_test.go | 2 +-
adapters/liftoff/liftoff.go | 6 +-
adapters/liftoff/liftoff_test.go | 6 +-
adapters/liftoff/param_test.go | 2 +-
adapters/limelightDigital/limelightDigital.go | 10 +-
.../limelightDigital/limelightDigital_test.go | 9 +-
adapters/limelightDigital/params_test.go | 2 +-
adapters/lm_kiviads/lmkiviads.go | 10 +-
adapters/lm_kiviads/lmkiviads_test.go | 6 +-
adapters/lm_kiviads/params_test.go | 2 +-
adapters/lockerdome/lockerdome.go | 8 +-
adapters/lockerdome/lockerdome_test.go | 6 +-
adapters/lockerdome/params_test.go | 2 +-
adapters/logan/logan.go | 8 +-
adapters/logan/logan_test.go | 6 +-
adapters/logan/params_test.go | 2 +-
adapters/logicad/logicad.go | 8 +-
adapters/logicad/logicad_test.go | 6 +-
adapters/logicad/params_test.go | 3 +-
adapters/lunamedia/lunamedia.go | 10 +-
adapters/lunamedia/lunamedia_test.go | 6 +-
adapters/lunamedia/params_test.go | 3 +-
adapters/mabidder/mabidder.go | 6 +-
adapters/mabidder/mabidder_test.go | 6 +-
adapters/mabidder/params_test.go | 2 +-
adapters/madvertise/madvertise.go | 10 +-
adapters/madvertise/madvertise_test.go | 6 +-
adapters/madvertise/params_test.go | 2 +-
adapters/marsmedia/marsmedia.go | 8 +-
adapters/marsmedia/marsmedia_test.go | 6 +-
adapters/marsmedia/params_test.go | 2 +-
adapters/medianet/medianet.go | 8 +-
adapters/medianet/medianet_test.go | 6 +-
adapters/medianet/params_test.go | 2 +-
adapters/mgid/mgid.go | 8 +-
adapters/mgid/mgid_test.go | 6 +-
adapters/mgidX/mgidX.go | 6 +-
adapters/mgidX/mgidX_test.go | 6 +-
adapters/mgidX/params_test.go | 2 +-
adapters/mobfoxpb/mobfoxpb.go | 8 +-
adapters/mobfoxpb/mobfoxpb_test.go | 6 +-
adapters/mobfoxpb/params_test.go | 2 +-
adapters/mobilefuse/mobilefuse.go | 10 +-
adapters/mobilefuse/mobilefuse_test.go | 6 +-
adapters/mobilefuse/params_test.go | 2 +-
adapters/motorik/motorik.go | 10 +-
adapters/motorik/motorik_test.go | 6 +-
adapters/motorik/params_test.go | 2 +-
adapters/nextmillennium/nextmillennium.go | 8 +-
.../nextmillennium/nextmillennium_test.go | 6 +-
adapters/nextmillennium/params_test.go | 2 +-
adapters/nobid/nobid.go | 8 +-
adapters/nobid/nobid_test.go | 6 +-
adapters/nobid/params_test.go | 2 +-
adapters/onetag/onetag.go | 10 +-
adapters/onetag/onetag_test.go | 6 +-
adapters/onetag/params_test.go | 2 +-
adapters/openweb/openweb.go | 8 +-
adapters/openweb/openweb_test.go | 6 +-
adapters/openweb/params_test.go | 2 +-
adapters/openx/openx.go | 8 +-
adapters/openx/openx_test.go | 8 +-
adapters/openx/params_test.go | 2 +-
adapters/operaads/operaads.go | 10 +-
adapters/operaads/operaads_test.go | 6 +-
adapters/operaads/params_test.go | 2 +-
adapters/orbidder/orbidder.go | 8 +-
adapters/orbidder/orbidder_test.go | 8 +-
adapters/orbidder/params_test.go | 2 +-
adapters/outbrain/outbrain.go | 8 +-
adapters/outbrain/outbrain_test.go | 6 +-
adapters/outbrain/params_test.go | 2 +-
adapters/ownadx/ownadx.go | 13 +-
adapters/ownadx/ownadx_test.go | 9 +-
adapters/pangle/pangle.go | 8 +-
adapters/pangle/pangle_test.go | 6 +-
adapters/pangle/param_test.go | 2 +-
adapters/pgamssp/params_test.go | 2 +-
adapters/pgamssp/pgamssp.go | 6 +-
adapters/pgamssp/pgamssp_test.go | 6 +-
adapters/pubmatic/params_test.go | 2 +-
adapters/pubmatic/pubmatic.go | 8 +-
adapters/pubmatic/pubmatic_test.go | 8 +-
adapters/pubnative/pubnative.go | 8 +-
adapters/pubnative/pubnative_test.go | 6 +-
adapters/pulsepoint/params_test.go | 2 +-
adapters/pulsepoint/pulsepoint.go | 8 +-
adapters/pulsepoint/pulsepoint_test.go | 6 +-
adapters/pwbid/params_test.go | 2 +-
adapters/pwbid/pwbid.go | 8 +-
adapters/pwbid/pwbid_test.go | 6 +-
adapters/response.go | 2 +-
adapters/response_test.go | 2 +-
adapters/revcontent/revcontent.go | 8 +-
adapters/revcontent/revcontent_test.go | 6 +-
adapters/richaudience/params_test.go | 2 +-
adapters/richaudience/richaudience.go | 8 +-
adapters/richaudience/richaudience_test.go | 8 +-
adapters/rise/rise.go | 6 +-
adapters/rise/rise_test.go | 6 +-
adapters/rtbhouse/rtbhouse.go | 8 +-
adapters/rtbhouse/rtbhouse_test.go | 6 +-
adapters/rubicon/rubicon.go | 10 +-
adapters/rubicon/rubicon_test.go | 10 +-
adapters/sa_lunamedia/params_test.go | 2 +-
adapters/sa_lunamedia/salunamedia.go | 8 +-
adapters/sa_lunamedia/salunamedia_test.go | 6 +-
adapters/screencore/params_test.go | 2 +-
adapters/screencore/screencore.go | 10 +-
adapters/screencore/screencore_test.go | 6 +-
adapters/seedingAlliance/params_test.go | 2 +-
adapters/seedingAlliance/seedingAlliance.go | 8 +-
.../seedingAlliance/seedingAlliance_test.go | 8 +-
adapters/sharethrough/params_test.go | 2 +-
adapters/sharethrough/sharethrough.go | 10 +-
adapters/sharethrough/sharethrough_test.go | 6 +-
adapters/silvermob/params_test.go | 2 +-
adapters/silvermob/silvermob.go | 10 +-
adapters/silvermob/silvermob_test.go | 6 +-
adapters/silverpush/params_test.go | 2 +-
adapters/silverpush/silverpush.go | 8 +-
adapters/silverpush/silverpush_test.go | 8 +-
adapters/smaato/image.go | 3 +-
adapters/smaato/native.go | 3 +-
adapters/smaato/params_test.go | 2 +-
adapters/smaato/richmedia.go | 3 +-
adapters/smaato/smaato.go | 12 +-
adapters/smaato/smaato_test.go | 8 +-
adapters/smartadserver/params_test.go | 2 +-
adapters/smartadserver/smartadserver.go | 8 +-
adapters/smartadserver/smartadserver_test.go | 6 +-
adapters/smarthub/params_test.go | 2 +-
adapters/smarthub/smarthub.go | 10 +-
adapters/smarthub/smarthub_test.go | 6 +-
adapters/smartrtb/smartrtb.go | 10 +-
adapters/smartrtb/smartrtb_test.go | 6 +-
adapters/smartx/params_test.go | 2 +-
adapters/smartx/smartx.go | 6 +-
adapters/smartx/smartx_test.go | 6 +-
adapters/smartyads/params_test.go | 2 +-
adapters/smartyads/smartyads.go | 10 +-
adapters/smartyads/smartyads_test.go | 6 +-
adapters/smilewanted/params_test.go | 2 +-
adapters/smilewanted/smilewanted.go | 8 +-
adapters/smilewanted/smilewanted_test.go | 6 +-
adapters/sonobi/params_test.go | 2 +-
adapters/sonobi/sonobi.go | 8 +-
adapters/sonobi/sonobi_test.go | 6 +-
adapters/sovrn/sovrn.go | 8 +-
adapters/sovrn/sovrn_test.go | 6 +-
adapters/sspBC/sspbc.go | 8 +-
adapters/sspBC/sspbc_test.go | 6 +-
adapters/stroeerCore/params_test.go | 3 +-
adapters/stroeerCore/stroeercore.go | 8 +-
adapters/stroeerCore/stroeercore_test.go | 6 +-
adapters/suntContent/params_test.go | 2 +-
adapters/suntContent/suntContent.go | 8 +-
adapters/suntContent/suntContent_test.go | 8 +-
adapters/taboola/params_test.go | 3 +-
adapters/taboola/taboola.go | 10 +-
adapters/taboola/taboola_test.go | 10 +-
adapters/tappx/params_test.go | 3 +-
adapters/tappx/tappx.go | 10 +-
adapters/tappx/tappx_test.go | 6 +-
adapters/teads/teads.go | 10 +-
adapters/teads/teads_test.go | 9 +-
adapters/telaria/params_test.go | 3 +-
adapters/telaria/telaria.go | 8 +-
adapters/telaria/telaria_test.go | 6 +-
adapters/tpmn/params_test.go | 3 +-
adapters/tpmn/tpmn.go | 6 +-
adapters/tpmn/tpmn_test.go | 6 +-
adapters/trafficgate/params_test.go | 2 +-
adapters/trafficgate/trafficgate.go | 10 +-
adapters/trafficgate/trafficgate_test.go | 6 +-
adapters/triplelift/triplelift.go | 8 +-
adapters/triplelift/triplelift_test.go | 6 +-
.../triplelift_native/triplelift_native.go | 8 +-
.../triplelift_native_test.go | 6 +-
adapters/ucfunnel/params_test.go | 2 +-
adapters/ucfunnel/ucfunnel.go | 8 +-
adapters/ucfunnel/ucfunnel_test.go | 6 +-
adapters/undertone/params_test.go | 3 +-
adapters/undertone/undertone.go | 8 +-
adapters/undertone/undertone_test.go | 7 +-
adapters/unicorn/params_test.go | 2 +-
adapters/unicorn/unicorn.go | 8 +-
adapters/unicorn/unicorn_test.go | 6 +-
adapters/unruly/params_test.go | 2 +-
adapters/unruly/unruly.go | 8 +-
adapters/unruly/unruly_test.go | 6 +-
adapters/videobyte/params_test.go | 2 +-
adapters/videobyte/videobyte.go | 8 +-
adapters/videobyte/videobyte_test.go | 4 +-
adapters/videoheroes/params_test.go | 2 +-
adapters/videoheroes/videoheroes.go | 10 +-
adapters/videoheroes/videoheroes_test.go | 6 +-
adapters/vidoomy/params_test.go | 2 +-
adapters/vidoomy/vidoomy.go | 8 +-
adapters/vidoomy/vidoomy_test.go | 6 +-
adapters/visiblemeasures/params_test.go | 2 +-
adapters/visiblemeasures/visiblemeasures.go | 8 +-
.../visiblemeasures/visiblemeasures_test.go | 6 +-
adapters/visx/params_test.go | 2 +-
adapters/visx/visx.go | 8 +-
adapters/visx/visx_test.go | 6 +-
adapters/vox/params_test.go | 2 +-
adapters/vox/vox.go | 7 +-
adapters/vox/vox_test.go | 6 +-
adapters/vrtcal/params_test.go | 2 +-
adapters/vrtcal/vrtcal.go | 8 +-
adapters/vrtcal/vrtcal_test.go | 6 +-
adapters/xeworks/params_test.go | 2 +-
adapters/xeworks/xeworks.go | 10 +-
adapters/xeworks/xeworks_test.go | 6 +-
adapters/yahooAds/params_test.go | 2 +-
adapters/yahooAds/yahooAds.go | 8 +-
adapters/yahooAds/yahooAds_test.go | 6 +-
adapters/yeahmobi/params_test.go | 3 +-
adapters/yeahmobi/yeahmobi.go | 10 +-
adapters/yeahmobi/yeahmobi_test.go | 6 +-
adapters/yieldlab/params_test.go | 2 +-
adapters/yieldlab/yieldlab.go | 8 +-
adapters/yieldlab/yieldlab_test.go | 6 +-
adapters/yieldmo/params_test.go | 2 +-
adapters/yieldmo/yieldmo.go | 8 +-
adapters/yieldmo/yieldmo_test.go | 6 +-
adapters/yieldone/params_test.go | 3 +-
adapters/yieldone/yieldone.go | 8 +-
adapters/yieldone/yieldone_test.go | 6 +-
adapters/zeroclickfraud/zeroclickfraud.go | 10 +-
.../zeroclickfraud/zeroclickfraud_test.go | 6 +-
adapters/zeta_global_ssp/zeta_global_ssp.go | 8 +-
.../zeta_global_ssp/zeta_global_ssp_test.go | 6 +-
adservertargeting/adservertargeting.go | 2 +-
adservertargeting/adservertargeting_test.go | 4 +-
adservertargeting/reqcache.go | 2 +-
adservertargeting/requestlookup.go | 7 +-
adservertargeting/requestlookup_test.go | 2 +-
adservertargeting/respdataprocessor.go | 4 +-
adservertargeting/respdataprocessor_test.go | 2 +-
adservertargeting/utils.go | 7 +-
amp/parse.go | 8 +-
amp/parse_test.go | 8 +-
analytics/build/build.go | 12 +-
analytics/build/build_test.go | 8 +-
analytics/core.go | 6 +-
analytics/filesystem/file_module.go | 4 +-
analytics/filesystem/file_module_test.go | 4 +-
analytics/filesystem/model.go | 8 +-
analytics/pubstack/configupdate.go | 2 +-
analytics/pubstack/helpers/json.go | 4 +-
analytics/pubstack/helpers/json_test.go | 2 +-
analytics/pubstack/helpers/model.go | 8 +-
analytics/pubstack/pubstack_module.go | 6 +-
analytics/pubstack/pubstack_module_test.go | 4 +-
analytics/runner.go | 2 +-
bidadjustment/apply.go | 4 +-
bidadjustment/apply_test.go | 4 +-
bidadjustment/build_rules.go | 4 +-
bidadjustment/build_rules_test.go | 4 +-
bidadjustment/validate.go | 2 +-
bidadjustment/validate_test.go | 2 +-
config/account.go | 4 +-
config/account_test.go | 2 +-
config/bidderinfo.go | 4 +-
config/bidderinfo_test.go | 2 +-
config/compression.go | 2 +-
config/compression_test.go | 2 +-
config/config.go | 6 +-
config/config_test.go | 2 +-
currency/rate_converter.go | 6 +-
currency/rate_converter_test.go | 2 +-
currency/rates_test.go | 2 +-
currency/validation.go | 4 +-
currency/validation_test.go | 4 +-
endpoints/cookie_sync.go | 30 +-
endpoints/cookie_sync_test.go | 22 +-
endpoints/currency_rates.go | 4 +-
endpoints/currency_rates_test.go | 2 +-
endpoints/events/account_test.go | 8 +-
endpoints/events/event.go | 19 +-
endpoints/events/event_test.go | 12 +-
endpoints/events/vtrack.go | 18 +-
endpoints/events/vtrack_test.go | 10 +-
endpoints/getuids.go | 4 +-
endpoints/getuids_test.go | 2 +-
endpoints/info/bidders.go | 4 +-
endpoints/info/bidders_detail.go | 6 +-
endpoints/info/bidders_detail_test.go | 4 +-
endpoints/info/bidders_test.go | 2 +-
endpoints/openrtb2/amp_auction.go | 42 +-
endpoints/openrtb2/amp_auction_test.go | 30 +-
endpoints/openrtb2/auction.go | 54 +--
endpoints/openrtb2/auction_benchmark_test.go | 22 +-
endpoints/openrtb2/auction_test.go | 32 +-
endpoints/openrtb2/interstitial.go | 6 +-
endpoints/openrtb2/interstitial_test.go | 2 +-
endpoints/openrtb2/test_utils.go | 44 +-
endpoints/openrtb2/video_auction.go | 40 +-
endpoints/openrtb2/video_auction_test.go | 28 +-
endpoints/setuid.go | 26 +-
endpoints/setuid_test.go | 20 +-
endpoints/version.go | 2 +-
exchange/adapter_builders.go | 376 +++++++++---------
exchange/adapter_util.go | 8 +-
exchange/adapter_util_test.go | 12 +-
exchange/auction.go | 10 +-
exchange/auction_response.go | 2 +-
exchange/auction_test.go | 12 +-
exchange/bidder.go | 26 +-
exchange/bidder_test.go | 24 +-
exchange/bidder_validate_bids.go | 12 +-
exchange/bidder_validate_bids_test.go | 12 +-
exchange/entities/entities.go | 2 +-
exchange/events.go | 12 +-
exchange/events_test.go | 4 +-
exchange/exchange.go | 46 +--
exchange/exchange_test.go | 44 +-
exchange/gdpr.go | 6 +-
exchange/gdpr_test.go | 4 +-
exchange/price_granularity.go | 5 +-
exchange/price_granularity_test.go | 4 +-
exchange/seat_non_bids.go | 4 +-
exchange/seat_non_bids_test.go | 4 +-
exchange/targeting.go | 2 +-
exchange/targeting_test.go | 20 +-
exchange/tmax_adjustments.go | 2 +-
exchange/tmax_adjustments_test.go | 2 +-
exchange/utils.go | 26 +-
exchange/utils_test.go | 20 +-
experiment/adscert/inprocesssigner.go | 5 +-
experiment/adscert/remotesigner.go | 5 +-
experiment/adscert/signer.go | 3 +-
experiment/adscert/signer_test.go | 5 +-
firstpartydata/extmerger.go | 2 +-
firstpartydata/extmerger_test.go | 2 +-
firstpartydata/first_party_data.go | 10 +-
firstpartydata/first_party_data_test.go | 6 +-
floors/enforce.go | 8 +-
floors/enforce_test.go | 10 +-
floors/floors.go | 6 +-
floors/floors_test.go | 8 +-
floors/rule.go | 4 +-
floors/rule_test.go | 4 +-
floors/validate.go | 4 +-
floors/validate_test.go | 4 +-
gdpr/aggregated_config.go | 4 +-
gdpr/aggregated_config_test.go | 4 +-
gdpr/basic_enforcement.go | 2 +-
gdpr/basic_enforcement_test.go | 2 +-
gdpr/full_enforcement.go | 2 +-
gdpr/full_enforcement_test.go | 4 +-
gdpr/gdpr.go | 4 +-
gdpr/gdpr_test.go | 4 +-
gdpr/impl.go | 2 +-
gdpr/impl_test.go | 4 +-
gdpr/purpose_config.go | 4 +-
gdpr/purpose_config_test.go | 2 +-
gdpr/purpose_enforcer.go | 4 +-
gdpr/purpose_enforcer_test.go | 4 +-
gdpr/signal.go | 2 +-
gdpr/vendorlist-fetching.go | 2 +-
gdpr/vendorlist-fetching_test.go | 4 +-
go.mod | 2 +-
hooks/empty_plan.go | 4 +-
hooks/hookanalytics/analytics_test.go | 2 +-
hooks/hookexecution/context.go | 4 +-
hooks/hookexecution/enricher.go | 4 +-
hooks/hookexecution/enricher_test.go | 8 +-
hooks/hookexecution/errors.go | 2 +-
hooks/hookexecution/execution.go | 6 +-
hooks/hookexecution/executor.go | 14 +-
hooks/hookexecution/executor_test.go | 18 +-
hooks/hookexecution/mocks_test.go | 4 +-
hooks/hookexecution/outcome.go | 2 +-
hooks/hookexecution/test_utils.go | 2 +-
hooks/hookstage/allprocessedbidresponses.go | 4 +-
hooks/hookstage/invocation.go | 2 +-
hooks/hookstage/processedauctionrequest.go | 2 +-
hooks/hookstage/rawbidderresponse.go | 2 +-
.../hookstage/rawbidderresponse_mutations.go | 2 +-
hooks/plan.go | 4 +-
hooks/plan_test.go | 6 +-
hooks/repo.go | 2 +-
hooks/repo_test.go | 2 +-
macros/provider.go | 4 +-
macros/provider_test.go | 4 +-
macros/string_index_based_replacer_test.go | 4 +-
main.go | 12 +-
main_test.go | 2 +-
metrics/config/metrics.go | 8 +-
metrics/config/metrics_test.go | 6 +-
metrics/go_metrics.go | 4 +-
metrics/go_metrics_test.go | 4 +-
metrics/metrics.go | 2 +-
metrics/metrics_mock.go | 2 +-
metrics/prometheus/preload.go | 4 +-
metrics/prometheus/prometheus.go | 6 +-
metrics/prometheus/prometheus_test.go | 6 +-
modules/builder.go | 2 +-
modules/generator/builder.tmpl | 2 +-
modules/helpers.go | 4 +-
modules/modules.go | 8 +-
modules/modules_test.go | 8 +-
modules/prebid/ortb2blocking/analytics.go | 4 +-
modules/prebid/ortb2blocking/config.go | 2 +-
.../ortb2blocking/hook_bidderrequest.go | 6 +-
.../ortb2blocking/hook_raw_bidder_response.go | 6 +-
modules/prebid/ortb2blocking/module.go | 4 +-
modules/prebid/ortb2blocking/module_test.go | 10 +-
openrtb_ext/convert_down_test.go | 2 +-
openrtb_ext/deal_tier.go | 2 +-
openrtb_ext/deal_tier_test.go | 2 +-
openrtb_ext/device.go | 2 +-
openrtb_ext/device_test.go | 2 +-
openrtb_ext/imp_appnexus.go | 2 +-
openrtb_ext/imp_appnexus_test.go | 2 +-
openrtb_ext/imp_freewheelssp.go | 2 +-
openrtb_ext/multibid_test.go | 2 +-
openrtb_ext/request.go | 8 +-
openrtb_ext/request_test.go | 4 +-
openrtb_ext/request_wrapper.go | 8 +-
openrtb_ext/request_wrapper_test.go | 4 +-
openrtb_ext/site_test.go | 4 +-
openrtb_ext/supplyChain.go | 2 +-
openrtb_ext/supplyChain_test.go | 2 +-
ortb/clone.go | 4 +-
ortb/clone_test.go | 2 +-
ortb/default.go | 4 +-
ortb/default_test.go | 8 +-
pbs/usersync.go | 6 +-
prebid_cache_client/client.go | 4 +-
prebid_cache_client/client_test.go | 8 +-
privacy/activitycontrol.go | 4 +-
privacy/activitycontrol_test.go | 6 +-
privacy/ccpa/consentwriter.go | 2 +-
privacy/ccpa/consentwriter_test.go | 2 +-
privacy/ccpa/parsedpolicy.go | 2 +-
privacy/ccpa/policy.go | 6 +-
privacy/ccpa/policy_test.go | 2 +-
privacy/enforcement.go | 2 +-
privacy/gdpr/consentwriter.go | 2 +-
privacy/lmt/ios.go | 4 +-
privacy/lmt/ios_test.go | 2 +-
privacy/rule_condition_test.go | 2 +-
privacy/scrubber.go | 8 +-
privacy/scrubber_test.go | 3 +-
router/admin.go | 6 +-
router/aspects/request_timeout_handler.go | 4 +-
.../aspects/request_timeout_handler_test.go | 4 +-
router/router.go | 54 +--
router/router_test.go | 6 +-
schain/schain.go | 2 +-
schain/schain_test.go | 2 +-
schain/schainwriter.go | 4 +-
schain/schainwriter_test.go | 4 +-
scripts/check_coverage.sh | 3 +-
server/listener.go | 2 +-
server/listener_test.go | 4 +-
server/prometheus.go | 4 +-
server/server.go | 6 +-
server/server_test.go | 4 +-
.../backends/db_fetcher/fetcher.go | 4 +-
.../backends/db_fetcher/fetcher_test.go | 2 +-
.../backends/db_provider/db_provider.go | 2 +-
.../backends/db_provider/db_provider_mock.go | 2 +-
.../backends/db_provider/mysql_dbprovider.go | 2 +-
.../db_provider/mysql_dbprovider_test.go | 2 +-
.../db_provider/postgres_dbprovider.go | 2 +-
.../db_provider/postgres_dbprovider_test.go | 2 +-
.../backends/empty_fetcher/fetcher.go | 2 +-
.../backends/file_fetcher/fetcher.go | 4 +-
.../backends/file_fetcher/fetcher_test.go | 4 +-
.../backends/http_fetcher/fetcher.go | 4 +-
.../backends/http_fetcher/fetcher_test.go | 2 +-
stored_requests/caches/cachestest/reliable.go | 2 +-
stored_requests/caches/memory/cache.go | 2 +-
stored_requests/caches/memory/cache_test.go | 4 +-
stored_requests/config/config.go | 30 +-
stored_requests/config/config_test.go | 16 +-
stored_requests/events/api/api.go | 4 +-
stored_requests/events/api/api_test.go | 6 +-
stored_requests/events/database/database.go | 10 +-
.../events/database/database_test.go | 8 +-
stored_requests/events/events.go | 2 +-
stored_requests/events/events_test.go | 4 +-
stored_requests/events/http/http.go | 4 +-
stored_requests/events/http/http_test.go | 2 +-
stored_requests/fetcher.go | 2 +-
stored_requests/fetcher_test.go | 4 +-
stored_responses/stored_responses.go | 4 +-
stored_responses/stored_responses_test.go | 2 +-
usersync/chooser.go | 3 +-
usersync/chooser_test.go | 9 +-
usersync/cookie.go | 6 +-
usersync/cookie_test.go | 4 +-
usersync/decoder.go | 2 +-
usersync/encoder.go | 2 +-
usersync/syncer.go | 4 +-
usersync/syncer_test.go | 4 +-
usersync/syncersbuilder.go | 2 +-
usersync/syncersbuilder_test.go | 4 +-
util/httputil/httputil.go | 2 +-
util/httputil/httputil_test.go | 2 +-
util/jsonutil/jsonutil.go | 2 +-
util/task/ticker_task_test.go | 2 +-
version/xprebidheader.go | 2 +-
version/xprebidheader_test.go | 4 +-
816 files changed, 2697 insertions(+), 2657 deletions(-)
diff --git a/.gitignore b/.gitignore
index 4e298f2a3d9..0df7cde54fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,8 +30,8 @@ vendor
# build artifacts
prebid-server
-build
-debug
+/build
+/debug
__debug_bin
# config files
diff --git a/account/account.go b/account/account.go
index 1f5a3feee14..2c243e0dd90 100644
--- a/account/account.go
+++ b/account/account.go
@@ -6,13 +6,13 @@ import (
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// GetAccount looks up the config.Account object referenced by the given accountID, with access rules applied
diff --git a/account/account_test.go b/account/account_test.go
index 7a242f21188..369c2d2c40d 100644
--- a/account/account_test.go
+++ b/account/account_test.go
@@ -6,12 +6,12 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/iputil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
diff --git a/adapters/33across/33across.go b/adapters/33across/33across.go
index 26349e8426b..c7c3300a648 100644
--- a/adapters/33across/33across.go
+++ b/adapters/33across/33across.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type TtxAdapter struct {
diff --git a/adapters/33across/33across_test.go b/adapters/33across/33across_test.go
index bdc546a9627..c84ca0ad1d2 100644
--- a/adapters/33across/33across_test.go
+++ b/adapters/33across/33across_test.go
@@ -3,9 +3,9 @@ package ttx
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/33across/params_test.go b/adapters/33across/params_test.go
index 2d488c4148c..ba985b2b250 100644
--- a/adapters/33across/params_test.go
+++ b/adapters/33across/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/33across.json
diff --git a/adapters/aax/aax.go b/adapters/aax/aax.go
index 86994c6dea2..a36bf3ad37e 100644
--- a/adapters/aax/aax.go
+++ b/adapters/aax/aax.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/aax/aax_test.go b/adapters/aax/aax_test.go
index 6a5eaed5dfe..c4fd1c392aa 100644
--- a/adapters/aax/aax_test.go
+++ b/adapters/aax/aax_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/aax/params_test.go b/adapters/aax/params_test.go
index edf9fb6fc48..bdfa46a9e63 100644
--- a/adapters/aax/params_test.go
+++ b/adapters/aax/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/aax.json
diff --git a/adapters/aceex/aceex.go b/adapters/aceex/aceex.go
index 61863f0b8a8..a87a2b11fcf 100644
--- a/adapters/aceex/aceex.go
+++ b/adapters/aceex/aceex.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/aceex/aceex_test.go b/adapters/aceex/aceex_test.go
index ec0e0fec710..71c26ed0bed 100644
--- a/adapters/aceex/aceex_test.go
+++ b/adapters/aceex/aceex_test.go
@@ -3,9 +3,9 @@ package aceex
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/aceex/params_test.go b/adapters/aceex/params_test.go
index 220adb23379..cb6445c491a 100644
--- a/adapters/aceex/params_test.go
+++ b/adapters/aceex/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/acuityads/acuityads.go b/adapters/acuityads/acuityads.go
index 4370beb72d1..9152e80b83f 100644
--- a/adapters/acuityads/acuityads.go
+++ b/adapters/acuityads/acuityads.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AcuityAdsAdapter struct {
diff --git a/adapters/acuityads/acuityads_test.go b/adapters/acuityads/acuityads_test.go
index ea9d4f24352..c426d02c533 100644
--- a/adapters/acuityads/acuityads_test.go
+++ b/adapters/acuityads/acuityads_test.go
@@ -3,9 +3,9 @@ package acuityads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/acuityads/params_test.go b/adapters/acuityads/params_test.go
index 892fe9a646d..3c7b3a97914 100644
--- a/adapters/acuityads/params_test.go
+++ b/adapters/acuityads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/adapterstest/test_json.go b/adapters/adapterstest/test_json.go
index 39b1e945f7d..d14ff015ced 100644
--- a/adapters/adapterstest/test_json.go
+++ b/adapters/adapterstest/test_json.go
@@ -12,9 +12,9 @@ import (
"github.com/mitchellh/copystructure"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/yudai/gojsondiff"
"github.com/yudai/gojsondiff/formatter"
diff --git a/adapters/adf/adf.go b/adapters/adf/adf.go
index 7ff817559cc..0f14a05e947 100644
--- a/adapters/adf/adf.go
+++ b/adapters/adf/adf.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adf/adf_test.go b/adapters/adf/adf_test.go
index bf8af8d6845..20e4f3dde32 100644
--- a/adapters/adf/adf_test.go
+++ b/adapters/adf/adf_test.go
@@ -3,9 +3,9 @@ package adf
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adf/params_test.go b/adapters/adf/params_test.go
index 0b05519df3b..dc0d84927bc 100644
--- a/adapters/adf/params_test.go
+++ b/adapters/adf/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adf.json
diff --git a/adapters/adgeneration/adgeneration.go b/adapters/adgeneration/adgeneration.go
index a2a10ed51f2..88166ec237d 100644
--- a/adapters/adgeneration/adgeneration.go
+++ b/adapters/adgeneration/adgeneration.go
@@ -11,10 +11,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdgenerationAdapter struct {
diff --git a/adapters/adgeneration/adgeneration_test.go b/adapters/adgeneration/adgeneration_test.go
index c204fbd320d..3e94ac6c382 100644
--- a/adapters/adgeneration/adgeneration_test.go
+++ b/adapters/adgeneration/adgeneration_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adgeneration/params_test.go b/adapters/adgeneration/params_test.go
index 062d122ac08..58400e96656 100644
--- a/adapters/adgeneration/params_test.go
+++ b/adapters/adgeneration/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adhese/adhese.go b/adapters/adhese/adhese.go
index 9c84676c379..56d60be2505 100644
--- a/adapters/adhese/adhese.go
+++ b/adapters/adhese/adhese.go
@@ -11,11 +11,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdheseAdapter struct {
diff --git a/adapters/adhese/adhese_test.go b/adapters/adhese/adhese_test.go
index d09a29ee9bd..2b70bb001a6 100644
--- a/adapters/adhese/adhese_test.go
+++ b/adapters/adhese/adhese_test.go
@@ -3,9 +3,9 @@ package adhese
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adhese/params_test.go b/adapters/adhese/params_test.go
index 45024749b2d..1a0aa381cb1 100644
--- a/adapters/adhese/params_test.go
+++ b/adapters/adhese/params_test.go
@@ -5,7 +5,7 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adkernel/adkernel.go b/adapters/adkernel/adkernel.go
index 5fae001d7dd..e8ccc360e0e 100644
--- a/adapters/adkernel/adkernel.go
+++ b/adapters/adkernel/adkernel.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adkernelAdapter struct {
diff --git a/adapters/adkernel/adkernel_test.go b/adapters/adkernel/adkernel_test.go
index ae35f712400..2639eb25624 100644
--- a/adapters/adkernel/adkernel_test.go
+++ b/adapters/adkernel/adkernel_test.go
@@ -3,9 +3,9 @@ package adkernel
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adkernelAdn/adkernelAdn.go b/adapters/adkernelAdn/adkernelAdn.go
index 45e9e41c10c..218708cb697 100644
--- a/adapters/adkernelAdn/adkernelAdn.go
+++ b/adapters/adkernelAdn/adkernelAdn.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adkernelAdnAdapter struct {
diff --git a/adapters/adkernelAdn/adkernelAdn_test.go b/adapters/adkernelAdn/adkernelAdn_test.go
index 651d82be3b6..e43d00bf0bf 100644
--- a/adapters/adkernelAdn/adkernelAdn_test.go
+++ b/adapters/adkernelAdn/adkernelAdn_test.go
@@ -3,9 +3,9 @@ package adkernelAdn
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adman/adman.go b/adapters/adman/adman.go
index 5350fa7cb86..48a4dff961c 100644
--- a/adapters/adman/adman.go
+++ b/adapters/adman/adman.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// AdmanAdapter struct
diff --git a/adapters/adman/adman_test.go b/adapters/adman/adman_test.go
index 608232cc4b8..5617035c713 100644
--- a/adapters/adman/adman_test.go
+++ b/adapters/adman/adman_test.go
@@ -3,9 +3,9 @@ package adman
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adman/params_test.go b/adapters/adman/params_test.go
index a80c2a44b8b..9d7e0c16d51 100644
--- a/adapters/adman/params_test.go
+++ b/adapters/adman/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the adman schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/admixer/admixer.go b/adapters/admixer/admixer.go
index 9a07a8922a9..5c68518ee52 100644
--- a/adapters/admixer/admixer.go
+++ b/adapters/admixer/admixer.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdmixerAdapter struct {
diff --git a/adapters/admixer/admixer_test.go b/adapters/admixer/admixer_test.go
index 766f890cdf7..5985d4303c9 100644
--- a/adapters/admixer/admixer_test.go
+++ b/adapters/admixer/admixer_test.go
@@ -3,9 +3,9 @@ package admixer
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/admixer/params_test.go b/adapters/admixer/params_test.go
index bfa75a4884f..af85569b460 100644
--- a/adapters/admixer/params_test.go
+++ b/adapters/admixer/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/admixer.json
diff --git a/adapters/adnuntius/adnuntius.go b/adapters/adnuntius/adnuntius.go
index fd667ddc506..cb8d876fb53 100644
--- a/adapters/adnuntius/adnuntius.go
+++ b/adapters/adnuntius/adnuntius.go
@@ -10,11 +10,11 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/timeutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/timeutil"
)
type QueryString map[string]string
diff --git a/adapters/adnuntius/adnuntius_test.go b/adapters/adnuntius/adnuntius_test.go
index 9c431c2a315..f6edb313708 100644
--- a/adapters/adnuntius/adnuntius_test.go
+++ b/adapters/adnuntius/adnuntius_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adnuntius/params_test.go b/adapters/adnuntius/params_test.go
index c3b42018340..259b5145801 100644
--- a/adapters/adnuntius/params_test.go
+++ b/adapters/adnuntius/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adnuntius.json
diff --git a/adapters/adocean/adocean.go b/adapters/adocean/adocean.go
index a4e6223be6d..aa9446d76f0 100644
--- a/adapters/adocean/adocean.go
+++ b/adapters/adocean/adocean.go
@@ -14,11 +14,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const adapterVersion = "1.3.0"
diff --git a/adapters/adocean/adocean_test.go b/adapters/adocean/adocean_test.go
index 8d646cb9ca0..d7fe33b8de5 100644
--- a/adapters/adocean/adocean_test.go
+++ b/adapters/adocean/adocean_test.go
@@ -3,9 +3,9 @@ package adocean
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adocean/params_test.go b/adapters/adocean/params_test.go
index 18625b5e85e..f35dc1aaf87 100644
--- a/adapters/adocean/params_test.go
+++ b/adapters/adocean/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adoppler/adoppler.go b/adapters/adoppler/adoppler.go
index 90070e8145d..42661206ea6 100644
--- a/adapters/adoppler/adoppler.go
+++ b/adapters/adoppler/adoppler.go
@@ -9,11 +9,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const DefaultClient = "app"
diff --git a/adapters/adoppler/adoppler_test.go b/adapters/adoppler/adoppler_test.go
index 9f026b2f29c..d05118c4800 100644
--- a/adapters/adoppler/adoppler_test.go
+++ b/adapters/adoppler/adoppler_test.go
@@ -3,9 +3,9 @@ package adoppler
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adot/adot.go b/adapters/adot/adot.go
index fbba9fee467..39c665b4f12 100644
--- a/adapters/adot/adot.go
+++ b/adapters/adot/adot.go
@@ -8,10 +8,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adot/adot_test.go b/adapters/adot/adot_test.go
index 2f35f2a85fa..1d2de9fa8ea 100644
--- a/adapters/adot/adot_test.go
+++ b/adapters/adot/adot_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adot/params_test.go b/adapters/adot/params_test.go
index 6760419b470..a47ff2ff4eb 100644
--- a/adapters/adot/params_test.go
+++ b/adapters/adot/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adot.json
diff --git a/adapters/adpone/adpone.go b/adapters/adpone/adpone.go
index bf7ffb93992..77c7c8e0858 100644
--- a/adapters/adpone/adpone.go
+++ b/adapters/adpone/adpone.go
@@ -6,11 +6,11 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
// Builder builds a new instance of the Adpone adapter for the given bidder with the given config.
diff --git a/adapters/adpone/adpone_test.go b/adapters/adpone/adpone_test.go
index 7b01a382587..bd4f5ed514e 100644
--- a/adapters/adpone/adpone_test.go
+++ b/adapters/adpone/adpone_test.go
@@ -3,9 +3,9 @@ package adpone
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "adponetest"
diff --git a/adapters/adprime/adprime.go b/adapters/adprime/adprime.go
index 836abe26d83..56193c9133b 100644
--- a/adapters/adprime/adprime.go
+++ b/adapters/adprime/adprime.go
@@ -7,10 +7,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// AdprimeAdapter struct
diff --git a/adapters/adprime/adprime_test.go b/adapters/adprime/adprime_test.go
index e5cf7df8df5..34dde15d1ba 100644
--- a/adapters/adprime/adprime_test.go
+++ b/adapters/adprime/adprime_test.go
@@ -3,9 +3,9 @@ package adprime
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adprime/params_test.go b/adapters/adprime/params_test.go
index b466c658ede..67bbebf0086 100644
--- a/adapters/adprime/params_test.go
+++ b/adapters/adprime/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the adprime schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/adquery/adquery.go b/adapters/adquery/adquery.go
index 6a7dafa0ccb..92a1733dae6 100644
--- a/adapters/adquery/adquery.go
+++ b/adapters/adquery/adquery.go
@@ -9,10 +9,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/adquery/adquery_test.go b/adapters/adquery/adquery_test.go
index 228d835d6c4..2b88c3b82c7 100644
--- a/adapters/adquery/adquery_test.go
+++ b/adapters/adquery/adquery_test.go
@@ -1,10 +1,11 @@
package adquery
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adquery/params_test.go b/adapters/adquery/params_test.go
index cba021007d3..e72b0b02ea3 100644
--- a/adapters/adquery/params_test.go
+++ b/adapters/adquery/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adquery/types.go b/adapters/adquery/types.go
index e46afaea63e..5013ecf488a 100644
--- a/adapters/adquery/types.go
+++ b/adapters/adquery/types.go
@@ -1,6 +1,6 @@
package adquery
-import "github.com/prebid/prebid-server/openrtb_ext"
+import "github.com/prebid/prebid-server/v2/openrtb_ext"
type BidderRequest struct {
V string `json:"v"`
diff --git a/adapters/adrino/adrino.go b/adapters/adrino/adrino.go
index a63ad9beef6..44de44f5cf8 100644
--- a/adapters/adrino/adrino.go
+++ b/adapters/adrino/adrino.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adrino/adrino_test.go b/adapters/adrino/adrino_test.go
index 7566f3ed499..e969868c135 100644
--- a/adapters/adrino/adrino_test.go
+++ b/adapters/adrino/adrino_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adrino/params_test.go b/adapters/adrino/params_test.go
index f82f08ce9e0..0ad36e6e4d6 100644
--- a/adapters/adrino/params_test.go
+++ b/adapters/adrino/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adrino.json
diff --git a/adapters/adsinteractive/adsinteractive.go b/adapters/adsinteractive/adsinteractive.go
index 04edf774b80..d50dad0aabd 100644
--- a/adapters/adsinteractive/adsinteractive.go
+++ b/adapters/adsinteractive/adsinteractive.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adsinteractive/adsinteractive_test.go b/adapters/adsinteractive/adsinteractive_test.go
index 9a1397b799f..bed577c6003 100644
--- a/adapters/adsinteractive/adsinteractive_test.go
+++ b/adapters/adsinteractive/adsinteractive_test.go
@@ -3,9 +3,9 @@ package adsinteractive
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "adsinteractivetest"
diff --git a/adapters/adsinteractive/params_test.go b/adapters/adsinteractive/params_test.go
index 2561fc864da..caff03a2697 100644
--- a/adapters/adsinteractive/params_test.go
+++ b/adapters/adsinteractive/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adsinteractive.json
diff --git a/adapters/adtarget/adtarget.go b/adapters/adtarget/adtarget.go
index 00f797eccf8..ccd362830fc 100644
--- a/adapters/adtarget/adtarget.go
+++ b/adapters/adtarget/adtarget.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdtargetAdapter struct {
diff --git a/adapters/adtarget/adtarget_test.go b/adapters/adtarget/adtarget_test.go
index 2ee45041b09..2813ea2c195 100644
--- a/adapters/adtarget/adtarget_test.go
+++ b/adapters/adtarget/adtarget_test.go
@@ -3,9 +3,9 @@ package adtarget
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adtarget/params_test.go b/adapters/adtarget/params_test.go
index 4c39639fb7b..d0993215086 100644
--- a/adapters/adtarget/params_test.go
+++ b/adapters/adtarget/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adtarget.json
diff --git a/adapters/adtelligent/adtelligent.go b/adapters/adtelligent/adtelligent.go
index e2f5ef82cab..281d79233a0 100644
--- a/adapters/adtelligent/adtelligent.go
+++ b/adapters/adtelligent/adtelligent.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdtelligentAdapter struct {
diff --git a/adapters/adtelligent/adtelligent_test.go b/adapters/adtelligent/adtelligent_test.go
index 948710387b3..905ce013840 100644
--- a/adapters/adtelligent/adtelligent_test.go
+++ b/adapters/adtelligent/adtelligent_test.go
@@ -3,9 +3,9 @@ package adtelligent
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adtelligent/params_test.go b/adapters/adtelligent/params_test.go
index 227920b25b4..f86a7641af9 100644
--- a/adapters/adtelligent/params_test.go
+++ b/adapters/adtelligent/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adtelligent.json
diff --git a/adapters/adtrgtme/adtrgtme.go b/adapters/adtrgtme/adtrgtme.go
index 254bf5051e9..47feaceefa7 100644
--- a/adapters/adtrgtme/adtrgtme.go
+++ b/adapters/adtrgtme/adtrgtme.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adtrgtme/adtrgtme_test.go b/adapters/adtrgtme/adtrgtme_test.go
index 91d9b233ffe..07bfea3c652 100644
--- a/adapters/adtrgtme/adtrgtme_test.go
+++ b/adapters/adtrgtme/adtrgtme_test.go
@@ -3,9 +3,9 @@ package adtrgtme
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/adtrgtme/params_test.go b/adapters/adtrgtme/params_test.go
index e89f8423ed4..4745c323887 100644
--- a/adapters/adtrgtme/params_test.go
+++ b/adapters/adtrgtme/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/advangelists/advangelists.go b/adapters/advangelists/advangelists.go
index 19bb4c326e2..c779483d64a 100644
--- a/adapters/advangelists/advangelists.go
+++ b/adapters/advangelists/advangelists.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AdvangelistsAdapter struct {
diff --git a/adapters/advangelists/advangelists_test.go b/adapters/advangelists/advangelists_test.go
index e4c5debaa79..5165ef1f3a7 100644
--- a/adapters/advangelists/advangelists_test.go
+++ b/adapters/advangelists/advangelists_test.go
@@ -3,9 +3,9 @@ package advangelists
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/advangelists/params_test.go b/adapters/advangelists/params_test.go
index a58217a0ffd..966967ba312 100644
--- a/adapters/advangelists/params_test.go
+++ b/adapters/advangelists/params_test.go
@@ -2,8 +2,9 @@ package advangelists
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adview/adview.go b/adapters/adview/adview.go
index d2181b6591a..9937b6ae3ee 100644
--- a/adapters/adview/adview.go
+++ b/adapters/adview/adview.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/adview/adview_test.go b/adapters/adview/adview_test.go
index d0c993cfb56..2045586e97d 100644
--- a/adapters/adview/adview_test.go
+++ b/adapters/adview/adview_test.go
@@ -3,9 +3,9 @@ package adview
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/adview/params_test.go b/adapters/adview/params_test.go
index 6d124e9b556..d5e498645e0 100644
--- a/adapters/adview/params_test.go
+++ b/adapters/adview/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/adxcg/adxcg.go b/adapters/adxcg/adxcg.go
index 6b489d322b0..a8cb380f6c0 100644
--- a/adapters/adxcg/adxcg.go
+++ b/adapters/adxcg/adxcg.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Builder builds a new instance of the Adxcg adapter for the given bidder with the given config.
diff --git a/adapters/adxcg/adxcg_test.go b/adapters/adxcg/adxcg_test.go
index aa5f955c372..f117f7b2ba1 100644
--- a/adapters/adxcg/adxcg_test.go
+++ b/adapters/adxcg/adxcg_test.go
@@ -3,9 +3,9 @@ package adxcg
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "adxcgtest"
diff --git a/adapters/adyoulike/adyoulike.go b/adapters/adyoulike/adyoulike.go
index e00e95dccb5..72e6612b675 100644
--- a/adapters/adyoulike/adyoulike.go
+++ b/adapters/adyoulike/adyoulike.go
@@ -8,10 +8,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
diff --git a/adapters/adyoulike/adyoulike_test.go b/adapters/adyoulike/adyoulike_test.go
index d3000f673fc..2cf7a2b49ec 100644
--- a/adapters/adyoulike/adyoulike_test.go
+++ b/adapters/adyoulike/adyoulike_test.go
@@ -3,9 +3,9 @@ package adyoulike
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsBidderEndpoint = "https://localhost/bid/4"
diff --git a/adapters/adyoulike/params_test.go b/adapters/adyoulike/params_test.go
index 8aebaf2844e..6eb9e09a3cb 100644
--- a/adapters/adyoulike/params_test.go
+++ b/adapters/adyoulike/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/adyoulike.json
diff --git a/adapters/aidem/aidem.go b/adapters/aidem/aidem.go
index 9748f32c957..dc8d42a07ed 100644
--- a/adapters/aidem/aidem.go
+++ b/adapters/aidem/aidem.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/aidem/aidem_test.go b/adapters/aidem/aidem_test.go
index 03bcc7e0fb5..8cf6e3d16a2 100644
--- a/adapters/aidem/aidem_test.go
+++ b/adapters/aidem/aidem_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/aidem/params_test.go b/adapters/aidem/params_test.go
index 36190c0bc9f..4d2c5c14cbc 100644
--- a/adapters/aidem/params_test.go
+++ b/adapters/aidem/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/aidem.json TODO: MUST BE CREATED
diff --git a/adapters/aja/aja.go b/adapters/aja/aja.go
index 5a8afb00045..178c7f6ca68 100644
--- a/adapters/aja/aja.go
+++ b/adapters/aja/aja.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type AJAAdapter struct {
diff --git a/adapters/aja/aja_test.go b/adapters/aja/aja_test.go
index 75e35bedeb0..de4f1d13dab 100644
--- a/adapters/aja/aja_test.go
+++ b/adapters/aja/aja_test.go
@@ -3,9 +3,9 @@ package aja
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsBidderEndpoint = "https://localhost/bid/4"
diff --git a/adapters/algorix/algorix.go b/adapters/algorix/algorix.go
index 07f2b123389..e646467f744 100644
--- a/adapters/algorix/algorix.go
+++ b/adapters/algorix/algorix.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/algorix/algorix_test.go b/adapters/algorix/algorix_test.go
index 762b00dcee4..a401713d290 100644
--- a/adapters/algorix/algorix_test.go
+++ b/adapters/algorix/algorix_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/algorix/params_test.go b/adapters/algorix/params_test.go
index 227b9e0a6d4..7017a43c730 100644
--- a/adapters/algorix/params_test.go
+++ b/adapters/algorix/params_test.go
@@ -2,8 +2,9 @@ package algorix
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/amx/amx.go b/adapters/amx/amx.go
index 6b4ba20b4fd..8ff30baef79 100644
--- a/adapters/amx/amx.go
+++ b/adapters/amx/amx.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const nbrHeaderName = "x-nbr"
diff --git a/adapters/amx/amx_test.go b/adapters/amx/amx_test.go
index 9b068e5aa82..7286f221997 100644
--- a/adapters/amx/amx_test.go
+++ b/adapters/amx/amx_test.go
@@ -6,12 +6,12 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
)
const (
diff --git a/adapters/amx/params_test.go b/adapters/amx/params_test.go
index 89e9a3adeb4..4d9d646e426 100644
--- a/adapters/amx/params_test.go
+++ b/adapters/amx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/apacdex/apacdex.go b/adapters/apacdex/apacdex.go
index fdf30f4061f..ee10247638c 100644
--- a/adapters/apacdex/apacdex.go
+++ b/adapters/apacdex/apacdex.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/apacdex/apacdex_test.go b/adapters/apacdex/apacdex_test.go
index 1435850e3eb..ba5f1e7a3e6 100644
--- a/adapters/apacdex/apacdex_test.go
+++ b/adapters/apacdex/apacdex_test.go
@@ -3,9 +3,9 @@ package apacdex
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/apacdex/params_test.go b/adapters/apacdex/params_test.go
index 07d846506e5..a7dcf7bcb04 100644
--- a/adapters/apacdex/params_test.go
+++ b/adapters/apacdex/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/apacdex.json
diff --git a/adapters/appnexus/appnexus.go b/adapters/appnexus/appnexus.go
index ddba6a58de7..ad3be2dbb2d 100644
--- a/adapters/appnexus/appnexus.go
+++ b/adapters/appnexus/appnexus.go
@@ -12,15 +12,15 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/util/maputil"
- "github.com/prebid/prebid-server/util/ptrutil"
- "github.com/prebid/prebid-server/util/randomutil"
-
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/util/maputil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/randomutil"
+
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/appnexus/appnexus_test.go b/adapters/appnexus/appnexus_test.go
index bb04b61bb97..72937b25927 100644
--- a/adapters/appnexus/appnexus_test.go
+++ b/adapters/appnexus/appnexus_test.go
@@ -4,9 +4,9 @@ import (
"net/url"
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/adapters/appnexus/params_test.go b/adapters/appnexus/params_test.go
index ed9adedcc6b..12e43f8659b 100644
--- a/adapters/appnexus/params_test.go
+++ b/adapters/appnexus/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/appnexus.json
diff --git a/adapters/appush/appush.go b/adapters/appush/appush.go
index 18b294be7f0..36eccef0a0c 100644
--- a/adapters/appush/appush.go
+++ b/adapters/appush/appush.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/appush/appush_test.go b/adapters/appush/appush_test.go
index 65be1c32f0a..92f458f1525 100644
--- a/adapters/appush/appush_test.go
+++ b/adapters/appush/appush_test.go
@@ -3,9 +3,9 @@ package appush
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/appush/params_test.go b/adapters/appush/params_test.go
index a471c3f0300..725882cb2ac 100644
--- a/adapters/appush/params_test.go
+++ b/adapters/appush/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/audienceNetwork/facebook.go b/adapters/audienceNetwork/facebook.go
index 753b8a2cf70..8a288bb0338 100644
--- a/adapters/audienceNetwork/facebook.go
+++ b/adapters/audienceNetwork/facebook.go
@@ -13,12 +13,12 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/maputil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/maputil"
)
var supportedBannerHeights = map[int64]struct{}{
diff --git a/adapters/audienceNetwork/facebook_test.go b/adapters/audienceNetwork/facebook_test.go
index 27af5506ab4..e2320c1eaea 100644
--- a/adapters/audienceNetwork/facebook_test.go
+++ b/adapters/audienceNetwork/facebook_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/automatad/automatad.go b/adapters/automatad/automatad.go
index 75f1dcf3b5a..3f74d290245 100644
--- a/adapters/automatad/automatad.go
+++ b/adapters/automatad/automatad.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/automatad/automatad_test.go b/adapters/automatad/automatad_test.go
index 914692741d1..790b2b42c67 100644
--- a/adapters/automatad/automatad_test.go
+++ b/adapters/automatad/automatad_test.go
@@ -3,9 +3,9 @@ package automatad
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/automatad/params_test.go b/adapters/automatad/params_test.go
index df7f676b70a..468624c1eb3 100644
--- a/adapters/automatad/params_test.go
+++ b/adapters/automatad/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/avocet/avocet.go b/adapters/avocet/avocet.go
index 888fcab0fe2..b50b626792e 100644
--- a/adapters/avocet/avocet.go
+++ b/adapters/avocet/avocet.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// AvocetAdapter implements a adapters.Bidder compatible with the Avocet advertising platform.
diff --git a/adapters/avocet/avocet_test.go b/adapters/avocet/avocet_test.go
index 1dcf81c7d78..a7e01cdb65d 100644
--- a/adapters/avocet/avocet_test.go
+++ b/adapters/avocet/avocet_test.go
@@ -8,11 +8,11 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/axis/axis.go b/adapters/axis/axis.go
index f03a572e625..afda6045a1e 100644
--- a/adapters/axis/axis.go
+++ b/adapters/axis/axis.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/axis/axis_test.go b/adapters/axis/axis_test.go
index 56cb7f0b6e8..451141d8458 100644
--- a/adapters/axis/axis_test.go
+++ b/adapters/axis/axis_test.go
@@ -3,9 +3,9 @@ package axis
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/axis/params_test.go b/adapters/axis/params_test.go
index ba374c80b0f..1c0391d6954 100644
--- a/adapters/axis/params_test.go
+++ b/adapters/axis/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/axonix/axonix.go b/adapters/axonix/axonix.go
index 2289050b462..d5d0b0a41ee 100644
--- a/adapters/axonix/axonix.go
+++ b/adapters/axonix/axonix.go
@@ -10,11 +10,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/axonix/axonix_test.go b/adapters/axonix/axonix_test.go
index aa7fdf96b7c..9634a54fe65 100644
--- a/adapters/axonix/axonix_test.go
+++ b/adapters/axonix/axonix_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/axonix/params_test.go b/adapters/axonix/params_test.go
index d44fcd15e88..59b62220746 100644
--- a/adapters/axonix/params_test.go
+++ b/adapters/axonix/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/axonix.json
diff --git a/adapters/beachfront/beachfront.go b/adapters/beachfront/beachfront.go
index 51e1d02d026..2eba35b91cb 100644
--- a/adapters/beachfront/beachfront.go
+++ b/adapters/beachfront/beachfront.go
@@ -10,10 +10,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const Seat = "beachfront"
diff --git a/adapters/beachfront/beachfront_test.go b/adapters/beachfront/beachfront_test.go
index 3e1f75d6c41..23c4dcf6a9e 100644
--- a/adapters/beachfront/beachfront_test.go
+++ b/adapters/beachfront/beachfront_test.go
@@ -3,9 +3,9 @@ package beachfront
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/beachfront/params_test.go b/adapters/beachfront/params_test.go
index a387a2f0af3..23e9ae7f492 100644
--- a/adapters/beachfront/params_test.go
+++ b/adapters/beachfront/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/beintoo/beintoo.go b/adapters/beintoo/beintoo.go
index 9fc51d6a3df..b4e7626a6f6 100644
--- a/adapters/beintoo/beintoo.go
+++ b/adapters/beintoo/beintoo.go
@@ -8,10 +8,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type BeintooAdapter struct {
diff --git a/adapters/beintoo/beintoo_test.go b/adapters/beintoo/beintoo_test.go
index f95be60169b..11ef7ec9e7b 100644
--- a/adapters/beintoo/beintoo_test.go
+++ b/adapters/beintoo/beintoo_test.go
@@ -3,9 +3,9 @@ package beintoo
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/beintoo/params_test.go b/adapters/beintoo/params_test.go
index b92b2a108dd..0392e08bb9b 100644
--- a/adapters/beintoo/params_test.go
+++ b/adapters/beintoo/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/bematterfull/bematterfull.go b/adapters/bematterfull/bematterfull.go
index bf63e7c8c8b..61b98d771ba 100644
--- a/adapters/bematterfull/bematterfull.go
+++ b/adapters/bematterfull/bematterfull.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type bidType struct {
diff --git a/adapters/bematterfull/bematterfulltest_test.go b/adapters/bematterfull/bematterfulltest_test.go
index f3d1f412761..36198bc4f2a 100644
--- a/adapters/bematterfull/bematterfulltest_test.go
+++ b/adapters/bematterfull/bematterfulltest_test.go
@@ -3,9 +3,9 @@ package bematterfull
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/bematterfull/params_test.go b/adapters/bematterfull/params_test.go
index 5983dd3e375..a093edbe6ac 100644
--- a/adapters/bematterfull/params_test.go
+++ b/adapters/bematterfull/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/between/between.go b/adapters/between/between.go
index 6e313374c86..9629f747657 100644
--- a/adapters/between/between.go
+++ b/adapters/between/between.go
@@ -9,11 +9,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type BetweenAdapter struct {
diff --git a/adapters/between/between_test.go b/adapters/between/between_test.go
index 453a331794f..332ba00b5d0 100644
--- a/adapters/between/between_test.go
+++ b/adapters/between/between_test.go
@@ -3,9 +3,9 @@ package between
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/between/params_test.go b/adapters/between/params_test.go
index 1907084f9be..5772c218bc0 100644
--- a/adapters/between/params_test.go
+++ b/adapters/between/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/between.json
diff --git a/adapters/beyondmedia/beyondmedia.go b/adapters/beyondmedia/beyondmedia.go
index 57674d58d52..50091aba03b 100644
--- a/adapters/beyondmedia/beyondmedia.go
+++ b/adapters/beyondmedia/beyondmedia.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/beyondmedia/beyondmedia_test.go b/adapters/beyondmedia/beyondmedia_test.go
index 9b22d1bb5d1..1f828e50b3a 100644
--- a/adapters/beyondmedia/beyondmedia_test.go
+++ b/adapters/beyondmedia/beyondmedia_test.go
@@ -3,9 +3,9 @@ package beyondmedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/beyondmedia/params_test.go b/adapters/beyondmedia/params_test.go
index 9b0f8e8f6bb..8796b200ede 100644
--- a/adapters/beyondmedia/params_test.go
+++ b/adapters/beyondmedia/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/bidder.go b/adapters/bidder.go
index bb7424f3e00..b56f02e5156 100644
--- a/adapters/bidder.go
+++ b/adapters/bidder.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Bidder describes how to connect to external demand.
diff --git a/adapters/bidmachine/bidmachine.go b/adapters/bidmachine/bidmachine.go
index 3b760a3d530..da46a784625 100644
--- a/adapters/bidmachine/bidmachine.go
+++ b/adapters/bidmachine/bidmachine.go
@@ -12,11 +12,11 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bidmachine/bidmachine_test.go b/adapters/bidmachine/bidmachine_test.go
index 8f32a2fc60d..282241c3d72 100644
--- a/adapters/bidmachine/bidmachine_test.go
+++ b/adapters/bidmachine/bidmachine_test.go
@@ -3,9 +3,9 @@ package bidmachine
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/bidmachine/params_test.go b/adapters/bidmachine/params_test.go
index 15ebbcbf128..d396ee09cd3 100644
--- a/adapters/bidmachine/params_test.go
+++ b/adapters/bidmachine/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/bidmyadz/bidmyadz.go b/adapters/bidmyadz/bidmyadz.go
index 42af572c391..55b2da54e44 100644
--- a/adapters/bidmyadz/bidmyadz.go
+++ b/adapters/bidmyadz/bidmyadz.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bidmyadz/bidmyadz_test.go b/adapters/bidmyadz/bidmyadz_test.go
index 1eb3ef67328..41badb559af 100644
--- a/adapters/bidmyadz/bidmyadz_test.go
+++ b/adapters/bidmyadz/bidmyadz_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bidmyadz/params_test.go b/adapters/bidmyadz/params_test.go
index 857cde86d22..262dcf0880d 100644
--- a/adapters/bidmyadz/params_test.go
+++ b/adapters/bidmyadz/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/bidscube/bidscube.go b/adapters/bidscube/bidscube.go
index e654abb5564..a1bd72c171b 100644
--- a/adapters/bidscube/bidscube.go
+++ b/adapters/bidscube/bidscube.go
@@ -9,10 +9,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bidscube/bidscube_test.go b/adapters/bidscube/bidscube_test.go
index 137ba061f65..e64ccdbef63 100644
--- a/adapters/bidscube/bidscube_test.go
+++ b/adapters/bidscube/bidscube_test.go
@@ -3,9 +3,9 @@ package bidscube
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bidscube/params_test.go b/adapters/bidscube/params_test.go
index ff8ade9283c..9337c4dfb40 100644
--- a/adapters/bidscube/params_test.go
+++ b/adapters/bidscube/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the bidscube schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/bidstack/bidstack.go b/adapters/bidstack/bidstack.go
index c5c7f5b4865..a88b503a0f8 100644
--- a/adapters/bidstack/bidstack.go
+++ b/adapters/bidstack/bidstack.go
@@ -9,9 +9,9 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/bidstack/bidstack_test.go b/adapters/bidstack/bidstack_test.go
index f1d476459bc..d6050bdad96 100644
--- a/adapters/bidstack/bidstack_test.go
+++ b/adapters/bidstack/bidstack_test.go
@@ -7,9 +7,9 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bidstack/params_test.go b/adapters/bidstack/params_test.go
index 832d6000f4c..d7dc18e4a03 100644
--- a/adapters/bidstack/params_test.go
+++ b/adapters/bidstack/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/bizzclick/bizzclick.go b/adapters/bizzclick/bizzclick.go
index 7f65f903b4b..fee2829dd6f 100644
--- a/adapters/bizzclick/bizzclick.go
+++ b/adapters/bizzclick/bizzclick.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bizzclick/bizzclick_test.go b/adapters/bizzclick/bizzclick_test.go
index 91a9fcd1da4..971f06ae70f 100644
--- a/adapters/bizzclick/bizzclick_test.go
+++ b/adapters/bizzclick/bizzclick_test.go
@@ -3,9 +3,9 @@ package bizzclick
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/bizzclick/params_test.go b/adapters/bizzclick/params_test.go
index 34211b006f5..496643a506f 100644
--- a/adapters/bizzclick/params_test.go
+++ b/adapters/bizzclick/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/bliink/bliink.go b/adapters/bliink/bliink.go
index 017b69bc683..bfd8aeb1dcc 100644
--- a/adapters/bliink/bliink.go
+++ b/adapters/bliink/bliink.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bliink/bliink_test.go b/adapters/bliink/bliink_test.go
index a57a82e1765..02cafb37a4b 100644
--- a/adapters/bliink/bliink_test.go
+++ b/adapters/bliink/bliink_test.go
@@ -3,9 +3,9 @@ package bliink
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bliink/params_test.go b/adapters/bliink/params_test.go
index dc45a3249fe..d1066e8c4ed 100644
--- a/adapters/bliink/params_test.go
+++ b/adapters/bliink/params_test.go
@@ -2,8 +2,9 @@ package bliink
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/blue/blue.go b/adapters/blue/blue.go
index ae896d00760..d1743378c0b 100644
--- a/adapters/blue/blue.go
+++ b/adapters/blue/blue.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/blue/blue_test.go b/adapters/blue/blue_test.go
index d9febec66af..695984a3383 100644
--- a/adapters/blue/blue_test.go
+++ b/adapters/blue/blue_test.go
@@ -3,9 +3,9 @@ package blue
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestBidderBlue(t *testing.T) {
diff --git a/adapters/bluesea/bluesea.go b/adapters/bluesea/bluesea.go
index 44745ef00e8..7d8ff7d92b2 100644
--- a/adapters/bluesea/bluesea.go
+++ b/adapters/bluesea/bluesea.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bluesea/bluesea_test.go b/adapters/bluesea/bluesea_test.go
index 6b5ad16eb85..8bfe42ce150 100644
--- a/adapters/bluesea/bluesea_test.go
+++ b/adapters/bluesea/bluesea_test.go
@@ -3,9 +3,9 @@ package bluesea
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bluesea/params_test.go b/adapters/bluesea/params_test.go
index 62f14ee8c57..e1f7661ac09 100644
--- a/adapters/bluesea/params_test.go
+++ b/adapters/bluesea/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the bluesea schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/bmtm/brightmountainmedia.go b/adapters/bmtm/brightmountainmedia.go
index 591f03b4c1c..90bac4ac8ae 100644
--- a/adapters/bmtm/brightmountainmedia.go
+++ b/adapters/bmtm/brightmountainmedia.go
@@ -7,10 +7,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/bmtm/brightmountainmedia_test.go b/adapters/bmtm/brightmountainmedia_test.go
index 0455c8b99b6..f98cbde0063 100644
--- a/adapters/bmtm/brightmountainmedia_test.go
+++ b/adapters/bmtm/brightmountainmedia_test.go
@@ -3,9 +3,9 @@ package bmtm
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/bmtm/params_test.go b/adapters/bmtm/params_test.go
index 8b196f1eec8..d4a07e5a294 100644
--- a/adapters/bmtm/params_test.go
+++ b/adapters/bmtm/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/boldwin/boldwin.go b/adapters/boldwin/boldwin.go
index 4d88ff01458..9425cd80fbb 100644
--- a/adapters/boldwin/boldwin.go
+++ b/adapters/boldwin/boldwin.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/boldwin/boldwin_test.go b/adapters/boldwin/boldwin_test.go
index 33d5c68f8de..a8921a9d27f 100644
--- a/adapters/boldwin/boldwin_test.go
+++ b/adapters/boldwin/boldwin_test.go
@@ -3,9 +3,9 @@ package boldwin
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/boldwin/params_test.go b/adapters/boldwin/params_test.go
index f3855746160..2cef0d59cd6 100644
--- a/adapters/boldwin/params_test.go
+++ b/adapters/boldwin/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/brave/brave.go b/adapters/brave/brave.go
index b1270b6a866..bde07b66641 100755
--- a/adapters/brave/brave.go
+++ b/adapters/brave/brave.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/brave/brave_test.go b/adapters/brave/brave_test.go
index e8d0a474be9..e4f58252425 100644
--- a/adapters/brave/brave_test.go
+++ b/adapters/brave/brave_test.go
@@ -3,9 +3,9 @@ package brave
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/brave/params_test.go b/adapters/brave/params_test.go
index 1120a13c2f9..c4bcd99959b 100644
--- a/adapters/brave/params_test.go
+++ b/adapters/brave/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/cadent_aperture_mx/cadentaperturemx.go b/adapters/cadent_aperture_mx/cadentaperturemx.go
index 5df000bf547..4b4ccc6b2e4 100644
--- a/adapters/cadent_aperture_mx/cadentaperturemx.go
+++ b/adapters/cadent_aperture_mx/cadentaperturemx.go
@@ -11,10 +11,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/cadent_aperture_mx/cadentaperturemx_test.go b/adapters/cadent_aperture_mx/cadentaperturemx_test.go
index 60034322797..961459a2ea8 100644
--- a/adapters/cadent_aperture_mx/cadentaperturemx_test.go
+++ b/adapters/cadent_aperture_mx/cadentaperturemx_test.go
@@ -3,10 +3,10 @@ package cadentaperturemx
import (
"testing"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/cadent_aperture_mx/params_test.go b/adapters/cadent_aperture_mx/params_test.go
index b5b7355376f..6691537d02c 100644
--- a/adapters/cadent_aperture_mx/params_test.go
+++ b/adapters/cadent_aperture_mx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/ccx/ccx.go b/adapters/ccx/ccx.go
index 09b89b2c9af..ef5a6a17a9a 100644
--- a/adapters/ccx/ccx.go
+++ b/adapters/ccx/ccx.go
@@ -6,11 +6,11 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
type adapter struct {
diff --git a/adapters/ccx/ccx_test.go b/adapters/ccx/ccx_test.go
index 4d02c9848fd..86f85dc6eb7 100644
--- a/adapters/ccx/ccx_test.go
+++ b/adapters/ccx/ccx_test.go
@@ -3,9 +3,9 @@ package ccx
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/ccx/params_test.go b/adapters/ccx/params_test.go
index ecd9421333b..cb500fec509 100644
--- a/adapters/ccx/params_test.go
+++ b/adapters/ccx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/coinzilla/coinzilla.go b/adapters/coinzilla/coinzilla.go
index 039f3ecaf25..bc04758e537 100644
--- a/adapters/coinzilla/coinzilla.go
+++ b/adapters/coinzilla/coinzilla.go
@@ -6,11 +6,11 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
func Builder(bidderName openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
diff --git a/adapters/coinzilla/coinzilla_test.go b/adapters/coinzilla/coinzilla_test.go
index 6c79a2b12d1..39b3bb1f6e5 100644
--- a/adapters/coinzilla/coinzilla_test.go
+++ b/adapters/coinzilla/coinzilla_test.go
@@ -3,9 +3,9 @@ package coinzilla
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "coinzillatest"
diff --git a/adapters/coinzilla/params_test.go b/adapters/coinzilla/params_test.go
index fa24b144769..dd2cd757496 100644
--- a/adapters/coinzilla/params_test.go
+++ b/adapters/coinzilla/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/colossus/colossus.go b/adapters/colossus/colossus.go
index 65dd5c5dc9d..bc9836984ce 100644
--- a/adapters/colossus/colossus.go
+++ b/adapters/colossus/colossus.go
@@ -7,10 +7,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type ColossusAdapter struct {
diff --git a/adapters/colossus/colossus_test.go b/adapters/colossus/colossus_test.go
index 3b0f0fc5efe..6298b7f3958 100644
--- a/adapters/colossus/colossus_test.go
+++ b/adapters/colossus/colossus_test.go
@@ -3,9 +3,9 @@ package colossus
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/colossus/params_test.go b/adapters/colossus/params_test.go
index 09fea5981c6..ebafd637d6a 100644
--- a/adapters/colossus/params_test.go
+++ b/adapters/colossus/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the colossus schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/compass/compass.go b/adapters/compass/compass.go
index 460d5307b45..3edf9b6f157 100644
--- a/adapters/compass/compass.go
+++ b/adapters/compass/compass.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/compass/compass_test.go b/adapters/compass/compass_test.go
index ad7a4ecf61b..08d9d1bb46e 100644
--- a/adapters/compass/compass_test.go
+++ b/adapters/compass/compass_test.go
@@ -3,9 +3,9 @@ package compass
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/compass/params_test.go b/adapters/compass/params_test.go
index fca398b06fb..37074bb40f7 100644
--- a/adapters/compass/params_test.go
+++ b/adapters/compass/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/connectad/connectad.go b/adapters/connectad/connectad.go
index 1c33d6bf3c6..ee2e8eeb699 100644
--- a/adapters/connectad/connectad.go
+++ b/adapters/connectad/connectad.go
@@ -8,10 +8,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type ConnectAdAdapter struct {
diff --git a/adapters/connectad/connectad_test.go b/adapters/connectad/connectad_test.go
index 037ccbb0a3d..6ce9dd3eade 100644
--- a/adapters/connectad/connectad_test.go
+++ b/adapters/connectad/connectad_test.go
@@ -3,9 +3,9 @@ package connectad
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/connectad/params_test.go b/adapters/connectad/params_test.go
index 6d55b1ce7d9..2ab3c4902e7 100644
--- a/adapters/connectad/params_test.go
+++ b/adapters/connectad/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/consumable/consumable.go b/adapters/consumable/consumable.go
index 0e16497774c..635bc7058ed 100644
--- a/adapters/consumable/consumable.go
+++ b/adapters/consumable/consumable.go
@@ -9,11 +9,11 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
)
type ConsumableAdapter struct {
diff --git a/adapters/consumable/consumable_test.go b/adapters/consumable/consumable_test.go
index 5cfe3fe2824..e3bedce5e2f 100644
--- a/adapters/consumable/consumable_test.go
+++ b/adapters/consumable/consumable_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/consumable/params_test.go b/adapters/consumable/params_test.go
index 570b4128339..fdb3edec41b 100644
--- a/adapters/consumable/params_test.go
+++ b/adapters/consumable/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/consumable.json
diff --git a/adapters/conversant/conversant.go b/adapters/conversant/conversant.go
index ec4d2078df8..56ed4b0865c 100644
--- a/adapters/conversant/conversant.go
+++ b/adapters/conversant/conversant.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type ConversantAdapter struct {
diff --git a/adapters/conversant/conversant_test.go b/adapters/conversant/conversant_test.go
index ac3f5a2b633..1c08ea557ed 100644
--- a/adapters/conversant/conversant_test.go
+++ b/adapters/conversant/conversant_test.go
@@ -3,9 +3,9 @@ package conversant
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/cpmstar/cpmstar.go b/adapters/cpmstar/cpmstar.go
index ecb963311b9..f337c1477c5 100644
--- a/adapters/cpmstar/cpmstar.go
+++ b/adapters/cpmstar/cpmstar.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type Adapter struct {
diff --git a/adapters/cpmstar/cpmstar_test.go b/adapters/cpmstar/cpmstar_test.go
index 9218ef4ce2c..2a08258358b 100644
--- a/adapters/cpmstar/cpmstar_test.go
+++ b/adapters/cpmstar/cpmstar_test.go
@@ -3,9 +3,9 @@ package cpmstar
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/cpmstar/params_test.go b/adapters/cpmstar/params_test.go
index 45b1fbefd96..e0dcb9ced52 100644
--- a/adapters/cpmstar/params_test.go
+++ b/adapters/cpmstar/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/cpmstar.json
diff --git a/adapters/criteo/criteo.go b/adapters/criteo/criteo.go
index 11d8d166ba6..cef79d46756 100644
--- a/adapters/criteo/criteo.go
+++ b/adapters/criteo/criteo.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/criteo/criteo_test.go b/adapters/criteo/criteo_test.go
index 28654acd310..ae538246444 100644
--- a/adapters/criteo/criteo_test.go
+++ b/adapters/criteo/criteo_test.go
@@ -1,10 +1,11 @@
package criteo
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/criteo/params_test.go b/adapters/criteo/params_test.go
index c373de0a83f..aa17aa87e2e 100644
--- a/adapters/criteo/params_test.go
+++ b/adapters/criteo/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/criteo.json
diff --git a/adapters/cwire/cwire.go b/adapters/cwire/cwire.go
index 97a51ed764b..0c51fed908d 100644
--- a/adapters/cwire/cwire.go
+++ b/adapters/cwire/cwire.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
/*
diff --git a/adapters/cwire/cwire_test.go b/adapters/cwire/cwire_test.go
index b51b4e1b007..bd5f32e99ff 100644
--- a/adapters/cwire/cwire_test.go
+++ b/adapters/cwire/cwire_test.go
@@ -3,9 +3,9 @@ package cwire
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/cwire/params_test.go b/adapters/cwire/params_test.go
index 99689977530..d8c8b117069 100644
--- a/adapters/cwire/params_test.go
+++ b/adapters/cwire/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/cwire.json
diff --git a/adapters/datablocks/datablocks.go b/adapters/datablocks/datablocks.go
index a39721a44a3..22bf67bdbbe 100644
--- a/adapters/datablocks/datablocks.go
+++ b/adapters/datablocks/datablocks.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type DatablocksAdapter struct {
diff --git a/adapters/datablocks/datablocks_test.go b/adapters/datablocks/datablocks_test.go
index 3d4d746d357..d97560ce332 100644
--- a/adapters/datablocks/datablocks_test.go
+++ b/adapters/datablocks/datablocks_test.go
@@ -3,9 +3,9 @@ package datablocks
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/decenterads/decenterads.go b/adapters/decenterads/decenterads.go
index d959c9b41ca..bf673ee1691 100644
--- a/adapters/decenterads/decenterads.go
+++ b/adapters/decenterads/decenterads.go
@@ -8,10 +8,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/decenterads/decenterads_test.go b/adapters/decenterads/decenterads_test.go
index 3c1ed971833..dfb5161b9c4 100644
--- a/adapters/decenterads/decenterads_test.go
+++ b/adapters/decenterads/decenterads_test.go
@@ -3,9 +3,9 @@ package decenterads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/decenterads/params_test.go b/adapters/decenterads/params_test.go
index 3d3708be789..ef8b47cce41 100644
--- a/adapters/decenterads/params_test.go
+++ b/adapters/decenterads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the decenterads schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/deepintent/deepintent.go b/adapters/deepintent/deepintent.go
index 765c43e5c13..1bda503ae32 100644
--- a/adapters/deepintent/deepintent.go
+++ b/adapters/deepintent/deepintent.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const displayManager string = "di_prebid"
diff --git a/adapters/deepintent/deepintent_test.go b/adapters/deepintent/deepintent_test.go
index 97f685d2f7e..9b2c92967b4 100644
--- a/adapters/deepintent/deepintent_test.go
+++ b/adapters/deepintent/deepintent_test.go
@@ -3,10 +3,10 @@ package deepintent
import (
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
- "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/deepintent/params_test.go b/adapters/deepintent/params_test.go
index 8f37e5a9bd6..4cd43b73ebe 100644
--- a/adapters/deepintent/params_test.go
+++ b/adapters/deepintent/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the deepintent schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/definemedia/definemedia.go b/adapters/definemedia/definemedia.go
index 3e014e3c16d..789902d0485 100644
--- a/adapters/definemedia/definemedia.go
+++ b/adapters/definemedia/definemedia.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/definemedia/definemedia_test.go b/adapters/definemedia/definemedia_test.go
index 3ed0cb938b8..8a2a860d0c0 100644
--- a/adapters/definemedia/definemedia_test.go
+++ b/adapters/definemedia/definemedia_test.go
@@ -3,9 +3,9 @@ package definemedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/definemedia/params_test.go b/adapters/definemedia/params_test.go
index 63ef5272669..45b5be4eae5 100644
--- a/adapters/definemedia/params_test.go
+++ b/adapters/definemedia/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/dianomi/dianomi.go b/adapters/dianomi/dianomi.go
index 10605ef24a7..f7b97748c5b 100644
--- a/adapters/dianomi/dianomi.go
+++ b/adapters/dianomi/dianomi.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/dianomi/dianomi_test.go b/adapters/dianomi/dianomi_test.go
index 95c94a02f14..1baa4b591b3 100644
--- a/adapters/dianomi/dianomi_test.go
+++ b/adapters/dianomi/dianomi_test.go
@@ -3,9 +3,9 @@ package dianomi
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/dianomi/params_test.go b/adapters/dianomi/params_test.go
index 462d6d75edd..43a9bf6f4f5 100644
--- a/adapters/dianomi/params_test.go
+++ b/adapters/dianomi/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/dianomi.json
diff --git a/adapters/dmx/dmx.go b/adapters/dmx/dmx.go
index 4f1f23a625c..488c3d46453 100644
--- a/adapters/dmx/dmx.go
+++ b/adapters/dmx/dmx.go
@@ -10,10 +10,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type DmxAdapter struct {
diff --git a/adapters/dmx/dmx_test.go b/adapters/dmx/dmx_test.go
index 1634e6b5956..c709d5b1617 100644
--- a/adapters/dmx/dmx_test.go
+++ b/adapters/dmx/dmx_test.go
@@ -6,11 +6,11 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
- "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
)
func TestFetchParams(t *testing.T) {
diff --git a/adapters/dmx/params_test.go b/adapters/dmx/params_test.go
index 0e5250b173e..4470fb23057 100644
--- a/adapters/dmx/params_test.go
+++ b/adapters/dmx/params_test.go
@@ -2,8 +2,9 @@ package dmx
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/dxkulture/dxkulture.go b/adapters/dxkulture/dxkulture.go
index 5347c71a303..8155f59a203 100644
--- a/adapters/dxkulture/dxkulture.go
+++ b/adapters/dxkulture/dxkulture.go
@@ -6,10 +6,10 @@ import (
"net/http"
"net/url"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/adapters/dxkulture/dxkulture_test.go b/adapters/dxkulture/dxkulture_test.go
index 9b2da4f27ab..fb14c2b3c6a 100644
--- a/adapters/dxkulture/dxkulture_test.go
+++ b/adapters/dxkulture/dxkulture_test.go
@@ -3,9 +3,9 @@ package dxkulture
import (
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
- "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/dxkulture/params_test.go b/adapters/dxkulture/params_test.go
index 838d092df8f..d1c2f91a7ce 100644
--- a/adapters/dxkulture/params_test.go
+++ b/adapters/dxkulture/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/dxkulture.json
diff --git a/adapters/e_volution/evolution.go b/adapters/e_volution/evolution.go
index af2c680f99c..4beb488f801 100644
--- a/adapters/e_volution/evolution.go
+++ b/adapters/e_volution/evolution.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/e_volution/evolution_test.go b/adapters/e_volution/evolution_test.go
index 9752a4c7587..4529a742077 100644
--- a/adapters/e_volution/evolution_test.go
+++ b/adapters/e_volution/evolution_test.go
@@ -3,9 +3,9 @@ package evolution
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/e_volution/params_test.go b/adapters/e_volution/params_test.go
index 2d3602fd72b..6049bce7780 100644
--- a/adapters/e_volution/params_test.go
+++ b/adapters/e_volution/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/edge226/edge226.go b/adapters/edge226/edge226.go
index a124cb47eca..2196006b766 100644
--- a/adapters/edge226/edge226.go
+++ b/adapters/edge226/edge226.go
@@ -6,9 +6,9 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/edge226/edge226_test.go b/adapters/edge226/edge226_test.go
index c5e40ce726d..fea4abff1a9 100644
--- a/adapters/edge226/edge226_test.go
+++ b/adapters/edge226/edge226_test.go
@@ -3,9 +3,9 @@ package edge226
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/edge226/params_test.go b/adapters/edge226/params_test.go
index 3191bc62136..21a83bd65fd 100644
--- a/adapters/edge226/params_test.go
+++ b/adapters/edge226/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/emtv/emtv.go b/adapters/emtv/emtv.go
index 5dbd1e1bde7..0f0cae04f1f 100644
--- a/adapters/emtv/emtv.go
+++ b/adapters/emtv/emtv.go
@@ -7,10 +7,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/emtv/emtv_test.go b/adapters/emtv/emtv_test.go
index b1287357681..238e463a0d5 100644
--- a/adapters/emtv/emtv_test.go
+++ b/adapters/emtv/emtv_test.go
@@ -3,9 +3,9 @@ package emtv
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/emtv/params_test.go b/adapters/emtv/params_test.go
index 966dd7dd460..40769b97942 100644
--- a/adapters/emtv/params_test.go
+++ b/adapters/emtv/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/eplanning/eplanning.go b/adapters/eplanning/eplanning.go
index 8342da63ec2..16c30296b83 100644
--- a/adapters/eplanning/eplanning.go
+++ b/adapters/eplanning/eplanning.go
@@ -13,10 +13,10 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"strconv"
)
diff --git a/adapters/eplanning/eplanning_test.go b/adapters/eplanning/eplanning_test.go
index c4a33e54c3d..44ab91413d4 100644
--- a/adapters/eplanning/eplanning_test.go
+++ b/adapters/eplanning/eplanning_test.go
@@ -3,10 +3,10 @@ package eplanning
import (
"testing"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/epom/epom.go b/adapters/epom/epom.go
index a4e3040f079..37ef9543979 100644
--- a/adapters/epom/epom.go
+++ b/adapters/epom/epom.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/epom/epom_test.go b/adapters/epom/epom_test.go
index 6769ff6beb1..4e31c2ab982 100644
--- a/adapters/epom/epom_test.go
+++ b/adapters/epom/epom_test.go
@@ -3,9 +3,9 @@ package epom
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/flipp/flipp.go b/adapters/flipp/flipp.go
index 14f31a91efb..c119ec078cc 100644
--- a/adapters/flipp/flipp.go
+++ b/adapters/flipp/flipp.go
@@ -10,9 +10,9 @@ import (
"github.com/buger/jsonparser"
"github.com/gofrs/uuid"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/flipp/flipp_params.go b/adapters/flipp/flipp_params.go
index 0eef61b4b89..11f00560ba4 100644
--- a/adapters/flipp/flipp_params.go
+++ b/adapters/flipp/flipp_params.go
@@ -1,6 +1,6 @@
package flipp
-import "github.com/prebid/prebid-server/openrtb_ext"
+import "github.com/prebid/prebid-server/v2/openrtb_ext"
type CampaignRequestBodyUser struct {
Key *string `json:"key"`
diff --git a/adapters/flipp/flipp_test.go b/adapters/flipp/flipp_test.go
index 79b79e20769..e9ba0d138fd 100644
--- a/adapters/flipp/flipp_test.go
+++ b/adapters/flipp/flipp_test.go
@@ -3,9 +3,9 @@ package flipp
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/flipp/params_test.go b/adapters/flipp/params_test.go
index 56f2fadbbdd..37f1fda6324 100644
--- a/adapters/flipp/params_test.go
+++ b/adapters/flipp/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/freewheelssp/freewheelssp.go b/adapters/freewheelssp/freewheelssp.go
index 06f975b3501..1a1738a4ef7 100644
--- a/adapters/freewheelssp/freewheelssp.go
+++ b/adapters/freewheelssp/freewheelssp.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/freewheelssp/freewheelssp_test.go b/adapters/freewheelssp/freewheelssp_test.go
index 5f06a29c2fd..ea1b5b7c980 100644
--- a/adapters/freewheelssp/freewheelssp_test.go
+++ b/adapters/freewheelssp/freewheelssp_test.go
@@ -1,10 +1,11 @@
package freewheelssp
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/frvradn/frvradn.go b/adapters/frvradn/frvradn.go
index 4088bf9cdf6..6781dbc50cf 100644
--- a/adapters/frvradn/frvradn.go
+++ b/adapters/frvradn/frvradn.go
@@ -7,10 +7,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/frvradn/frvradn_test.go b/adapters/frvradn/frvradn_test.go
index f50f319b04f..89f3dc50b42 100644
--- a/adapters/frvradn/frvradn_test.go
+++ b/adapters/frvradn/frvradn_test.go
@@ -1,12 +1,13 @@
package frvradn
import (
- "github.com/stretchr/testify/assert"
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/frvradn/params_test.go b/adapters/frvradn/params_test.go
index 2d4836c1e13..74a51b26fa2 100644
--- a/adapters/frvradn/params_test.go
+++ b/adapters/frvradn/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/gamma/gamma.go b/adapters/gamma/gamma.go
index 37862424ac7..fac38735507 100644
--- a/adapters/gamma/gamma.go
+++ b/adapters/gamma/gamma.go
@@ -9,10 +9,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type GammaAdapter struct {
diff --git a/adapters/gamma/gamma_test.go b/adapters/gamma/gamma_test.go
index 08709364ce9..78cde32984e 100644
--- a/adapters/gamma/gamma_test.go
+++ b/adapters/gamma/gamma_test.go
@@ -3,9 +3,9 @@ package gamma
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/gamma/params_test.go b/adapters/gamma/params_test.go
index c6a149c23bc..7d2d211b054 100644
--- a/adapters/gamma/params_test.go
+++ b/adapters/gamma/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/gamma.json
diff --git a/adapters/gamoshi/gamoshi.go b/adapters/gamoshi/gamoshi.go
index 10c5127e613..db066364bf0 100644
--- a/adapters/gamoshi/gamoshi.go
+++ b/adapters/gamoshi/gamoshi.go
@@ -7,10 +7,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type GamoshiAdapter struct {
diff --git a/adapters/gamoshi/gamoshi_test.go b/adapters/gamoshi/gamoshi_test.go
index 979f54cddab..4c787aeb700 100644
--- a/adapters/gamoshi/gamoshi_test.go
+++ b/adapters/gamoshi/gamoshi_test.go
@@ -3,9 +3,9 @@ package gamoshi
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamplesWithConfiguredURI(t *testing.T) {
diff --git a/adapters/gamoshi/params_test.go b/adapters/gamoshi/params_test.go
index b9659aaa68a..6fb5d9ee08b 100644
--- a/adapters/gamoshi/params_test.go
+++ b/adapters/gamoshi/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/gamoshi.json
diff --git a/adapters/globalsun/globalsun.go b/adapters/globalsun/globalsun.go
index 6c381fbc0e4..3406f36b704 100644
--- a/adapters/globalsun/globalsun.go
+++ b/adapters/globalsun/globalsun.go
@@ -7,10 +7,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/globalsun/globalsun_test.go b/adapters/globalsun/globalsun_test.go
index 0237422dc84..a2f33770486 100644
--- a/adapters/globalsun/globalsun_test.go
+++ b/adapters/globalsun/globalsun_test.go
@@ -3,9 +3,9 @@ package globalsun
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/globalsun/params_test.go b/adapters/globalsun/params_test.go
index af71ad516c2..87d6427ad8b 100644
--- a/adapters/globalsun/params_test.go
+++ b/adapters/globalsun/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/gothamads/gothamads.go b/adapters/gothamads/gothamads.go
index e486585c958..301a4613677 100644
--- a/adapters/gothamads/gothamads.go
+++ b/adapters/gothamads/gothamads.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/gothamads/gothamads_test.go b/adapters/gothamads/gothamads_test.go
index 82e34dde1b3..5dde1527f3f 100644
--- a/adapters/gothamads/gothamads_test.go
+++ b/adapters/gothamads/gothamads_test.go
@@ -3,9 +3,9 @@ package gothamads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/gothamads/params_test.go b/adapters/gothamads/params_test.go
index 1290216d28e..1db984321e1 100644
--- a/adapters/gothamads/params_test.go
+++ b/adapters/gothamads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/grid/grid.go b/adapters/grid/grid.go
index 4f44f90ab11..0d6bdd76d9b 100644
--- a/adapters/grid/grid.go
+++ b/adapters/grid/grid.go
@@ -8,11 +8,11 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/maputil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/maputil"
)
type GridAdapter struct {
diff --git a/adapters/grid/grid_test.go b/adapters/grid/grid_test.go
index 38e9341cdaf..f35f0c66582 100644
--- a/adapters/grid/grid_test.go
+++ b/adapters/grid/grid_test.go
@@ -3,9 +3,9 @@ package grid
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/gumgum/gumgum.go b/adapters/gumgum/gumgum.go
index a500376e72a..3b954bf5837 100644
--- a/adapters/gumgum/gumgum.go
+++ b/adapters/gumgum/gumgum.go
@@ -8,10 +8,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// GumGumAdapter implements Bidder interface.
diff --git a/adapters/gumgum/gumgum_test.go b/adapters/gumgum/gumgum_test.go
index fa78eb10e11..621b4a96b04 100644
--- a/adapters/gumgum/gumgum_test.go
+++ b/adapters/gumgum/gumgum_test.go
@@ -3,9 +3,9 @@ package gumgum
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/gumgum/params_test.go b/adapters/gumgum/params_test.go
index a578ce65762..afee017be03 100644
--- a/adapters/gumgum/params_test.go
+++ b/adapters/gumgum/params_test.go
@@ -2,8 +2,9 @@ package gumgum
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/huaweiads/huaweiads.go b/adapters/huaweiads/huaweiads.go
index d156c2f750f..68622bf9f9e 100644
--- a/adapters/huaweiads/huaweiads.go
+++ b/adapters/huaweiads/huaweiads.go
@@ -19,10 +19,10 @@ import (
nativeRequests "github.com/prebid/openrtb/v19/native1/request"
nativeResponse "github.com/prebid/openrtb/v19/native1/response"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const huaweiAdxApiVersion = "3.4"
diff --git a/adapters/huaweiads/huaweiads_test.go b/adapters/huaweiads/huaweiads_test.go
index f523f0b9d94..9e7d0b55364 100644
--- a/adapters/huaweiads/huaweiads_test.go
+++ b/adapters/huaweiads/huaweiads_test.go
@@ -3,9 +3,9 @@ package huaweiads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/huaweiads/params_test.go b/adapters/huaweiads/params_test.go
index 7347725b299..c93c3c3ac55 100644
--- a/adapters/huaweiads/params_test.go
+++ b/adapters/huaweiads/params_test.go
@@ -2,8 +2,9 @@ package huaweiads
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/imds/imds.go b/adapters/imds/imds.go
index 02d30828966..c5ef45176ab 100644
--- a/adapters/imds/imds.go
+++ b/adapters/imds/imds.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const adapterVersion string = "pbs-go/1.0.0"
diff --git a/adapters/imds/imds_test.go b/adapters/imds/imds_test.go
index 5fab0509c1d..6e8165fbe6a 100644
--- a/adapters/imds/imds_test.go
+++ b/adapters/imds/imds_test.go
@@ -3,9 +3,9 @@ package imds
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/imds/params_test.go b/adapters/imds/params_test.go
index e2052b4c262..740105c3183 100644
--- a/adapters/imds/params_test.go
+++ b/adapters/imds/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/imds.json
diff --git a/adapters/impactify/impactify.go b/adapters/impactify/impactify.go
index bfbcdfbf8a2..73dc9450a3b 100644
--- a/adapters/impactify/impactify.go
+++ b/adapters/impactify/impactify.go
@@ -8,10 +8,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/impactify/impactify_test.go b/adapters/impactify/impactify_test.go
index 550ea7ad498..b9518d5e2a3 100644
--- a/adapters/impactify/impactify_test.go
+++ b/adapters/impactify/impactify_test.go
@@ -3,9 +3,9 @@ package impactify
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/impactify/params_test.go b/adapters/impactify/params_test.go
index 845ea29f00b..2fa8b24d627 100644
--- a/adapters/impactify/params_test.go
+++ b/adapters/impactify/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/improvedigital/improvedigital.go b/adapters/improvedigital/improvedigital.go
index c26a200a486..2cad15fa033 100644
--- a/adapters/improvedigital/improvedigital.go
+++ b/adapters/improvedigital/improvedigital.go
@@ -3,15 +3,16 @@ package improvedigital
import (
"encoding/json"
"fmt"
- "github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
"net/http"
"regexp"
"strconv"
"strings"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/improvedigital/improvedigital_test.go b/adapters/improvedigital/improvedigital_test.go
index 15ca5d5f033..b89e03320fa 100644
--- a/adapters/improvedigital/improvedigital_test.go
+++ b/adapters/improvedigital/improvedigital_test.go
@@ -3,9 +3,9 @@ package improvedigital
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/improvedigital/params_test.go b/adapters/improvedigital/params_test.go
index 13bdd807560..3767c0316a5 100644
--- a/adapters/improvedigital/params_test.go
+++ b/adapters/improvedigital/params_test.go
@@ -2,8 +2,9 @@ package improvedigital
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/infoawarebidder.go b/adapters/infoawarebidder.go
index 538a46ae05c..3131a6404b1 100644
--- a/adapters/infoawarebidder.go
+++ b/adapters/infoawarebidder.go
@@ -4,9 +4,9 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// InfoAwareBidder wraps a Bidder to ensure all requests abide by the capabilities and
diff --git a/adapters/infoawarebidder_test.go b/adapters/infoawarebidder_test.go
index 87d9d4d442a..38570e262d4 100644
--- a/adapters/infoawarebidder_test.go
+++ b/adapters/infoawarebidder_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/adapters/infytv/infytv.go b/adapters/infytv/infytv.go
index b403e710911..7e93a7296a5 100644
--- a/adapters/infytv/infytv.go
+++ b/adapters/infytv/infytv.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/infytv/infytv_test.go b/adapters/infytv/infytv_test.go
index 6834e99fa36..80527bbc4ae 100644
--- a/adapters/infytv/infytv_test.go
+++ b/adapters/infytv/infytv_test.go
@@ -3,9 +3,9 @@ package infytv
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/infytv/params_test.go b/adapters/infytv/params_test.go
index 6719b102622..53230cbf263 100644
--- a/adapters/infytv/params_test.go
+++ b/adapters/infytv/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/inmobi/inmobi.go b/adapters/inmobi/inmobi.go
index a5773c83be9..54d644cdc7d 100644
--- a/adapters/inmobi/inmobi.go
+++ b/adapters/inmobi/inmobi.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type InMobiAdapter struct {
diff --git a/adapters/inmobi/inmobi_test.go b/adapters/inmobi/inmobi_test.go
index 0b6f5ffbd0e..40e77f5fbc3 100644
--- a/adapters/inmobi/inmobi_test.go
+++ b/adapters/inmobi/inmobi_test.go
@@ -3,9 +3,9 @@ package inmobi
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/interactiveoffers/interactiveoffers.go b/adapters/interactiveoffers/interactiveoffers.go
index 2f90b707244..2e1a6417f14 100644
--- a/adapters/interactiveoffers/interactiveoffers.go
+++ b/adapters/interactiveoffers/interactiveoffers.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/interactiveoffers/interactiveoffers_test.go b/adapters/interactiveoffers/interactiveoffers_test.go
index 7805ae665bb..daf83869a95 100644
--- a/adapters/interactiveoffers/interactiveoffers_test.go
+++ b/adapters/interactiveoffers/interactiveoffers_test.go
@@ -3,9 +3,9 @@ package interactiveoffers
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/interactiveoffers/params_test.go b/adapters/interactiveoffers/params_test.go
index 193c1b84839..8f14a51b512 100644
--- a/adapters/interactiveoffers/params_test.go
+++ b/adapters/interactiveoffers/params_test.go
@@ -2,8 +2,9 @@ package interactiveoffers
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/invibes/invibes.go b/adapters/invibes/invibes.go
index b1272415d93..e1b978831b8 100644
--- a/adapters/invibes/invibes.go
+++ b/adapters/invibes/invibes.go
@@ -10,12 +10,12 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const adapterVersion = "prebid_1.0.0"
diff --git a/adapters/invibes/invibes_test.go b/adapters/invibes/invibes_test.go
index 1ade5d276cd..e09837764f9 100644
--- a/adapters/invibes/invibes_test.go
+++ b/adapters/invibes/invibes_test.go
@@ -3,9 +3,9 @@ package invibes
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/invibes/params_test.go b/adapters/invibes/params_test.go
index 8c3a26b4eac..88e08d1dc80 100644
--- a/adapters/invibes/params_test.go
+++ b/adapters/invibes/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/iqx/iqx.go b/adapters/iqx/iqx.go
index 543d988bce5..edfefa1895e 100644
--- a/adapters/iqx/iqx.go
+++ b/adapters/iqx/iqx.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type bidType struct {
diff --git a/adapters/iqx/iqxtest_test.go b/adapters/iqx/iqxtest_test.go
index 18eaf5fa5ba..7385d37af91 100644
--- a/adapters/iqx/iqxtest_test.go
+++ b/adapters/iqx/iqxtest_test.go
@@ -3,9 +3,9 @@ package iqx
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/iqx/params_test.go b/adapters/iqx/params_test.go
index 94bfb1d0926..23c4d007acb 100644
--- a/adapters/iqx/params_test.go
+++ b/adapters/iqx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/iqzone/iqzone.go b/adapters/iqzone/iqzone.go
index 9c36a021e21..ce095c97009 100644
--- a/adapters/iqzone/iqzone.go
+++ b/adapters/iqzone/iqzone.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/iqzone/iqzone_test.go b/adapters/iqzone/iqzone_test.go
index 3e1afbe1909..c5713953f40 100644
--- a/adapters/iqzone/iqzone_test.go
+++ b/adapters/iqzone/iqzone_test.go
@@ -3,9 +3,9 @@ package iqzone
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/iqzone/params_test.go b/adapters/iqzone/params_test.go
index c06f5e7fab4..2c6bb223845 100644
--- a/adapters/iqzone/params_test.go
+++ b/adapters/iqzone/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/ix/ix.go b/adapters/ix/ix.go
index 300858e3205..f000cbc1625 100644
--- a/adapters/ix/ix.go
+++ b/adapters/ix/ix.go
@@ -7,11 +7,11 @@ import (
"sort"
"strings"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/version"
"github.com/prebid/openrtb/v19/native1"
native1response "github.com/prebid/openrtb/v19/native1/response"
diff --git a/adapters/ix/ix_test.go b/adapters/ix/ix_test.go
index a64e3d0c661..e2651ca523e 100644
--- a/adapters/ix/ix_test.go
+++ b/adapters/ix/ix_test.go
@@ -4,11 +4,11 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/version"
"github.com/stretchr/testify/assert"
"github.com/prebid/openrtb/v19/adcom1"
diff --git a/adapters/ix/params_test.go b/adapters/ix/params_test.go
index 8ba937c12f4..ba426c0b27b 100644
--- a/adapters/ix/params_test.go
+++ b/adapters/ix/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/jixie/jixie.go b/adapters/jixie/jixie.go
index 6018b73709b..fa87bd5da03 100644
--- a/adapters/jixie/jixie.go
+++ b/adapters/jixie/jixie.go
@@ -7,10 +7,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/jixie/jixie_test.go b/adapters/jixie/jixie_test.go
index 56260a6c04d..dff2b3574d3 100644
--- a/adapters/jixie/jixie_test.go
+++ b/adapters/jixie/jixie_test.go
@@ -3,9 +3,9 @@ package jixie
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/jixie/params_test.go b/adapters/jixie/params_test.go
index 4bc2e3080c1..cbcdbe959de 100644
--- a/adapters/jixie/params_test.go
+++ b/adapters/jixie/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/kargo/kargo.go b/adapters/kargo/kargo.go
index e10bbbe466b..003275c51d3 100644
--- a/adapters/kargo/kargo.go
+++ b/adapters/kargo/kargo.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/kargo/kargo_test.go b/adapters/kargo/kargo_test.go
index 482ef2361cf..f2ceb46f643 100644
--- a/adapters/kargo/kargo_test.go
+++ b/adapters/kargo/kargo_test.go
@@ -3,9 +3,9 @@ package kargo
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/kargo/params_test.go b/adapters/kargo/params_test.go
index cb9ffaf1028..9907d67116c 100644
--- a/adapters/kargo/params_test.go
+++ b/adapters/kargo/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/kayzen/kayzen.go b/adapters/kayzen/kayzen.go
index 3dac0a50e86..a4c459ac2a2 100644
--- a/adapters/kayzen/kayzen.go
+++ b/adapters/kayzen/kayzen.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/kayzen/kayzen_test.go b/adapters/kayzen/kayzen_test.go
index dc6a7db4735..a2cc98a7798 100644
--- a/adapters/kayzen/kayzen_test.go
+++ b/adapters/kayzen/kayzen_test.go
@@ -3,9 +3,9 @@ package kayzen
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/kayzen/params_test.go b/adapters/kayzen/params_test.go
index 07bd0851a97..bd03e23df5b 100644
--- a/adapters/kayzen/params_test.go
+++ b/adapters/kayzen/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/kidoz/kidoz.go b/adapters/kidoz/kidoz.go
index b2637768bb1..f18ed98c07b 100644
--- a/adapters/kidoz/kidoz.go
+++ b/adapters/kidoz/kidoz.go
@@ -7,10 +7,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type KidozAdapter struct {
diff --git a/adapters/kidoz/kidoz_test.go b/adapters/kidoz/kidoz_test.go
index ffde298ee0e..0a5e21fd62d 100644
--- a/adapters/kidoz/kidoz_test.go
+++ b/adapters/kidoz/kidoz_test.go
@@ -6,10 +6,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/kidoz/params_test.go b/adapters/kidoz/params_test.go
index 073d7382d68..fad4e681288 100644
--- a/adapters/kidoz/params_test.go
+++ b/adapters/kidoz/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/kiviads/kiviads.go b/adapters/kiviads/kiviads.go
index 88d245a5db2..8bdf72145d4 100644
--- a/adapters/kiviads/kiviads.go
+++ b/adapters/kiviads/kiviads.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/kiviads/kiviads_test.go b/adapters/kiviads/kiviads_test.go
index 41e9bcbcdee..a6725234e6a 100644
--- a/adapters/kiviads/kiviads_test.go
+++ b/adapters/kiviads/kiviads_test.go
@@ -3,9 +3,9 @@ package kiviads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/kiviads/params_test.go b/adapters/kiviads/params_test.go
index 177e2f149b3..09ee3e24265 100644
--- a/adapters/kiviads/params_test.go
+++ b/adapters/kiviads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/krushmedia/krushmedia.go b/adapters/krushmedia/krushmedia.go
index 71a869a42a1..e809960db8c 100644
--- a/adapters/krushmedia/krushmedia.go
+++ b/adapters/krushmedia/krushmedia.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type KrushmediaAdapter struct {
diff --git a/adapters/krushmedia/krushmedia_test.go b/adapters/krushmedia/krushmedia_test.go
index 7ffbc0a9361..e7d71422dfe 100644
--- a/adapters/krushmedia/krushmedia_test.go
+++ b/adapters/krushmedia/krushmedia_test.go
@@ -3,9 +3,9 @@ package krushmedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/krushmedia/params_test.go b/adapters/krushmedia/params_test.go
index 26daa56e10b..4129fa1bd29 100644
--- a/adapters/krushmedia/params_test.go
+++ b/adapters/krushmedia/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/lemmadigital/lemmadigital.go b/adapters/lemmadigital/lemmadigital.go
index 3b77de52984..d09793fa4e8 100644
--- a/adapters/lemmadigital/lemmadigital.go
+++ b/adapters/lemmadigital/lemmadigital.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/lemmadigital/lemmadigital_test.go b/adapters/lemmadigital/lemmadigital_test.go
index 0372fa81d6b..e0062c0b565 100644
--- a/adapters/lemmadigital/lemmadigital_test.go
+++ b/adapters/lemmadigital/lemmadigital_test.go
@@ -3,9 +3,9 @@ package lemmadigital
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/lemmadigital/params_test.go b/adapters/lemmadigital/params_test.go
index 57bc7d83e79..4ba61319b33 100644
--- a/adapters/lemmadigital/params_test.go
+++ b/adapters/lemmadigital/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Tests for static/bidder-params/lemmadigital.json
diff --git a/adapters/liftoff/liftoff.go b/adapters/liftoff/liftoff.go
index b649da6f631..538e6aa1cda 100644
--- a/adapters/liftoff/liftoff.go
+++ b/adapters/liftoff/liftoff.go
@@ -8,9 +8,9 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const SupportedCurrency = "USD"
diff --git a/adapters/liftoff/liftoff_test.go b/adapters/liftoff/liftoff_test.go
index 0cb717dcc5a..4003bd21171 100644
--- a/adapters/liftoff/liftoff_test.go
+++ b/adapters/liftoff/liftoff_test.go
@@ -3,9 +3,9 @@ package liftoff
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/liftoff/param_test.go b/adapters/liftoff/param_test.go
index d7cd5d73c09..a5e5a61fb9a 100644
--- a/adapters/liftoff/param_test.go
+++ b/adapters/liftoff/param_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/limelightDigital/limelightDigital.go b/adapters/limelightDigital/limelightDigital.go
index 86d8df94233..d9920c72383 100644
--- a/adapters/limelightDigital/limelightDigital.go
+++ b/adapters/limelightDigital/limelightDigital.go
@@ -10,11 +10,11 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/limelightDigital/limelightDigital_test.go b/adapters/limelightDigital/limelightDigital_test.go
index 0c4105b59c9..beb4222f5c8 100644
--- a/adapters/limelightDigital/limelightDigital_test.go
+++ b/adapters/limelightDigital/limelightDigital_test.go
@@ -1,12 +1,13 @@
package limelightDigital
import (
- "github.com/stretchr/testify/assert"
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/limelightDigital/params_test.go b/adapters/limelightDigital/params_test.go
index 4ccef77c338..9a61e9ba7c9 100644
--- a/adapters/limelightDigital/params_test.go
+++ b/adapters/limelightDigital/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/lm_kiviads/lmkiviads.go b/adapters/lm_kiviads/lmkiviads.go
index c121be3b24b..03c17e6439c 100644
--- a/adapters/lm_kiviads/lmkiviads.go
+++ b/adapters/lm_kiviads/lmkiviads.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type bidType struct {
diff --git a/adapters/lm_kiviads/lmkiviads_test.go b/adapters/lm_kiviads/lmkiviads_test.go
index dfc8a5db0c4..01bf47ef8a7 100644
--- a/adapters/lm_kiviads/lmkiviads_test.go
+++ b/adapters/lm_kiviads/lmkiviads_test.go
@@ -3,9 +3,9 @@ package lmkiviads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/lm_kiviads/params_test.go b/adapters/lm_kiviads/params_test.go
index f40ad516684..1f3361b2581 100644
--- a/adapters/lm_kiviads/params_test.go
+++ b/adapters/lm_kiviads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/lockerdome/lockerdome.go b/adapters/lockerdome/lockerdome.go
index 7aa46080c73..c52a51a1003 100644
--- a/adapters/lockerdome/lockerdome.go
+++ b/adapters/lockerdome/lockerdome.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const unexpectedStatusCodeMessage = "Unexpected status code: %d. Run with request.debug = 1 for more info"
diff --git a/adapters/lockerdome/lockerdome_test.go b/adapters/lockerdome/lockerdome_test.go
index 1f807044b27..892fce2183a 100644
--- a/adapters/lockerdome/lockerdome_test.go
+++ b/adapters/lockerdome/lockerdome_test.go
@@ -3,9 +3,9 @@ package lockerdome
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/lockerdome/params_test.go b/adapters/lockerdome/params_test.go
index c2c9185e374..9b90ec0b888 100644
--- a/adapters/lockerdome/params_test.go
+++ b/adapters/lockerdome/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file tests static/bidder-params/lockerdome.json
diff --git a/adapters/logan/logan.go b/adapters/logan/logan.go
index db0888f8905..e5e76bca75b 100644
--- a/adapters/logan/logan.go
+++ b/adapters/logan/logan.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/logan/logan_test.go b/adapters/logan/logan_test.go
index da3a8741cff..219fbb50fe0 100644
--- a/adapters/logan/logan_test.go
+++ b/adapters/logan/logan_test.go
@@ -3,9 +3,9 @@ package logan
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/logan/params_test.go b/adapters/logan/params_test.go
index 48da1912e61..55633b47c36 100644
--- a/adapters/logan/params_test.go
+++ b/adapters/logan/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/logicad/logicad.go b/adapters/logicad/logicad.go
index ffbb783bafb..2bd60077ae0 100644
--- a/adapters/logicad/logicad.go
+++ b/adapters/logicad/logicad.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type LogicadAdapter struct {
diff --git a/adapters/logicad/logicad_test.go b/adapters/logicad/logicad_test.go
index 98295cc4a28..551bd133a9c 100644
--- a/adapters/logicad/logicad_test.go
+++ b/adapters/logicad/logicad_test.go
@@ -3,9 +3,9 @@ package logicad
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/logicad/params_test.go b/adapters/logicad/params_test.go
index eb34452811b..c45297d15c2 100644
--- a/adapters/logicad/params_test.go
+++ b/adapters/logicad/params_test.go
@@ -2,8 +2,9 @@ package logicad
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/lunamedia/lunamedia.go b/adapters/lunamedia/lunamedia.go
index 24717e6ba52..99a54deb82f 100644
--- a/adapters/lunamedia/lunamedia.go
+++ b/adapters/lunamedia/lunamedia.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type LunaMediaAdapter struct {
diff --git a/adapters/lunamedia/lunamedia_test.go b/adapters/lunamedia/lunamedia_test.go
index 961cd545303..c950ce4d25f 100644
--- a/adapters/lunamedia/lunamedia_test.go
+++ b/adapters/lunamedia/lunamedia_test.go
@@ -3,9 +3,9 @@ package lunamedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/lunamedia/params_test.go b/adapters/lunamedia/params_test.go
index b4faeea1f77..12ecc65f420 100644
--- a/adapters/lunamedia/params_test.go
+++ b/adapters/lunamedia/params_test.go
@@ -2,8 +2,9 @@ package lunamedia
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/mabidder/mabidder.go b/adapters/mabidder/mabidder.go
index 184f068b333..9f7323c005d 100644
--- a/adapters/mabidder/mabidder.go
+++ b/adapters/mabidder/mabidder.go
@@ -4,9 +4,9 @@ import (
"encoding/json"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type serverResponse struct {
diff --git a/adapters/mabidder/mabidder_test.go b/adapters/mabidder/mabidder_test.go
index 89cfd31633e..31c28788ad2 100644
--- a/adapters/mabidder/mabidder_test.go
+++ b/adapters/mabidder/mabidder_test.go
@@ -3,9 +3,9 @@ package mabidder
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/mabidder/params_test.go b/adapters/mabidder/params_test.go
index b0f3762d843..878e278438d 100644
--- a/adapters/mabidder/params_test.go
+++ b/adapters/mabidder/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/madvertise/madvertise.go b/adapters/madvertise/madvertise.go
index 32b84c6e65a..41097f62ab6 100644
--- a/adapters/madvertise/madvertise.go
+++ b/adapters/madvertise/madvertise.go
@@ -8,11 +8,11 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/madvertise/madvertise_test.go b/adapters/madvertise/madvertise_test.go
index 1d48b6dab3c..3d412b1e154 100644
--- a/adapters/madvertise/madvertise_test.go
+++ b/adapters/madvertise/madvertise_test.go
@@ -3,9 +3,9 @@ package madvertise
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/madvertise/params_test.go b/adapters/madvertise/params_test.go
index 4b73d57d43e..55454399155 100644
--- a/adapters/madvertise/params_test.go
+++ b/adapters/madvertise/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/Madvertise.json
diff --git a/adapters/marsmedia/marsmedia.go b/adapters/marsmedia/marsmedia.go
index 6bba910aee0..c75b4f7ad6b 100644
--- a/adapters/marsmedia/marsmedia.go
+++ b/adapters/marsmedia/marsmedia.go
@@ -7,10 +7,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type MarsmediaAdapter struct {
diff --git a/adapters/marsmedia/marsmedia_test.go b/adapters/marsmedia/marsmedia_test.go
index 8fe01a72f73..6c75ef76c37 100644
--- a/adapters/marsmedia/marsmedia_test.go
+++ b/adapters/marsmedia/marsmedia_test.go
@@ -3,9 +3,9 @@ package marsmedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/marsmedia/params_test.go b/adapters/marsmedia/params_test.go
index f78ad1c3dc4..ee79015b05c 100644
--- a/adapters/marsmedia/params_test.go
+++ b/adapters/marsmedia/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/marsmedia.json
diff --git a/adapters/medianet/medianet.go b/adapters/medianet/medianet.go
index a5bf8e60df4..f84705aaa28 100644
--- a/adapters/medianet/medianet.go
+++ b/adapters/medianet/medianet.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/medianet/medianet_test.go b/adapters/medianet/medianet_test.go
index 6403b3f2eb0..097e8e48727 100644
--- a/adapters/medianet/medianet_test.go
+++ b/adapters/medianet/medianet_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/medianet/params_test.go b/adapters/medianet/params_test.go
index a1e5e834ba6..7c999a66428 100644
--- a/adapters/medianet/params_test.go
+++ b/adapters/medianet/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/medianet.json
diff --git a/adapters/mgid/mgid.go b/adapters/mgid/mgid.go
index 99d1946d3f1..712c6cd8928 100644
--- a/adapters/mgid/mgid.go
+++ b/adapters/mgid/mgid.go
@@ -7,10 +7,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type MgidAdapter struct {
diff --git a/adapters/mgid/mgid_test.go b/adapters/mgid/mgid_test.go
index fba3d8b09c3..21311f5477d 100644
--- a/adapters/mgid/mgid_test.go
+++ b/adapters/mgid/mgid_test.go
@@ -3,9 +3,9 @@ package mgid
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/mgidX/mgidX.go b/adapters/mgidX/mgidX.go
index 29d2df4617c..084fdaebca9 100644
--- a/adapters/mgidX/mgidX.go
+++ b/adapters/mgidX/mgidX.go
@@ -7,9 +7,9 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/mgidX/mgidX_test.go b/adapters/mgidX/mgidX_test.go
index 5a71750788a..7ff4eb93627 100644
--- a/adapters/mgidX/mgidX_test.go
+++ b/adapters/mgidX/mgidX_test.go
@@ -3,9 +3,9 @@ package mgidX
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/mgidX/params_test.go b/adapters/mgidX/params_test.go
index 85779ec6e8c..b3d80207811 100644
--- a/adapters/mgidX/params_test.go
+++ b/adapters/mgidX/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/mobfoxpb/mobfoxpb.go b/adapters/mobfoxpb/mobfoxpb.go
index 6684d0c3fc2..24e13e26584 100644
--- a/adapters/mobfoxpb/mobfoxpb.go
+++ b/adapters/mobfoxpb/mobfoxpb.go
@@ -8,10 +8,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/mobfoxpb/mobfoxpb_test.go b/adapters/mobfoxpb/mobfoxpb_test.go
index 401396adc8d..b3aa4ae4b2c 100644
--- a/adapters/mobfoxpb/mobfoxpb_test.go
+++ b/adapters/mobfoxpb/mobfoxpb_test.go
@@ -3,9 +3,9 @@ package mobfoxpb
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/mobfoxpb/params_test.go b/adapters/mobfoxpb/params_test.go
index 799fdcfa61b..ea785163609 100644
--- a/adapters/mobfoxpb/params_test.go
+++ b/adapters/mobfoxpb/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the mobfoxpb schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/mobilefuse/mobilefuse.go b/adapters/mobilefuse/mobilefuse.go
index c13dbe8a6ae..24461ade471 100644
--- a/adapters/mobilefuse/mobilefuse.go
+++ b/adapters/mobilefuse/mobilefuse.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type MobileFuseAdapter struct {
diff --git a/adapters/mobilefuse/mobilefuse_test.go b/adapters/mobilefuse/mobilefuse_test.go
index 09d46faff66..e1a3a018bb9 100644
--- a/adapters/mobilefuse/mobilefuse_test.go
+++ b/adapters/mobilefuse/mobilefuse_test.go
@@ -3,9 +3,9 @@ package mobilefuse
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/mobilefuse/params_test.go b/adapters/mobilefuse/params_test.go
index dbfd8894e70..8599af5ece0 100644
--- a/adapters/mobilefuse/params_test.go
+++ b/adapters/mobilefuse/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(test *testing.T) {
diff --git a/adapters/motorik/motorik.go b/adapters/motorik/motorik.go
index c804c0951fc..95bb4837c9a 100644
--- a/adapters/motorik/motorik.go
+++ b/adapters/motorik/motorik.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/motorik/motorik_test.go b/adapters/motorik/motorik_test.go
index 1a14fedac7b..5bdd102ddd3 100644
--- a/adapters/motorik/motorik_test.go
+++ b/adapters/motorik/motorik_test.go
@@ -3,9 +3,9 @@ package motorik
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/motorik/params_test.go b/adapters/motorik/params_test.go
index 9ee05b58e07..2cfdf0f965b 100644
--- a/adapters/motorik/params_test.go
+++ b/adapters/motorik/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/nextmillennium/nextmillennium.go b/adapters/nextmillennium/nextmillennium.go
index f24bb6f7df8..5d10cac2d9e 100644
--- a/adapters/nextmillennium/nextmillennium.go
+++ b/adapters/nextmillennium/nextmillennium.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/nextmillennium/nextmillennium_test.go b/adapters/nextmillennium/nextmillennium_test.go
index bd75596691f..ec813ba2412 100644
--- a/adapters/nextmillennium/nextmillennium_test.go
+++ b/adapters/nextmillennium/nextmillennium_test.go
@@ -3,9 +3,9 @@ package nextmillennium
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/nextmillennium/params_test.go b/adapters/nextmillennium/params_test.go
index 50a9c377f70..d8ae93d2c5a 100644
--- a/adapters/nextmillennium/params_test.go
+++ b/adapters/nextmillennium/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/nobid/nobid.go b/adapters/nobid/nobid.go
index 6ea76e1283e..63d20d87fc0 100644
--- a/adapters/nobid/nobid.go
+++ b/adapters/nobid/nobid.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// NoBidAdapter - NoBid Adapter definition
diff --git a/adapters/nobid/nobid_test.go b/adapters/nobid/nobid_test.go
index a8775b74d18..8b48a303053 100644
--- a/adapters/nobid/nobid_test.go
+++ b/adapters/nobid/nobid_test.go
@@ -3,9 +3,9 @@ package nobid
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/nobid/params_test.go b/adapters/nobid/params_test.go
index 75d69943d35..395230df797 100644
--- a/adapters/nobid/params_test.go
+++ b/adapters/nobid/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/onetag/onetag.go b/adapters/onetag/onetag.go
index 6e642ef1979..9036de80ced 100644
--- a/adapters/onetag/onetag.go
+++ b/adapters/onetag/onetag.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/onetag/onetag_test.go b/adapters/onetag/onetag_test.go
index 5550f076a99..7a1e539ca29 100644
--- a/adapters/onetag/onetag_test.go
+++ b/adapters/onetag/onetag_test.go
@@ -3,9 +3,9 @@ package onetag
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/onetag/params_test.go b/adapters/onetag/params_test.go
index 4c7326ac9f0..bfc7c6ac27a 100644
--- a/adapters/onetag/params_test.go
+++ b/adapters/onetag/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/openweb/openweb.go b/adapters/openweb/openweb.go
index 8ef4007f959..45fd2853aec 100644
--- a/adapters/openweb/openweb.go
+++ b/adapters/openweb/openweb.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/openweb/openweb_test.go b/adapters/openweb/openweb_test.go
index 6332c409623..a63dafd06c2 100644
--- a/adapters/openweb/openweb_test.go
+++ b/adapters/openweb/openweb_test.go
@@ -3,9 +3,9 @@ package openweb
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/openweb/params_test.go b/adapters/openweb/params_test.go
index df614df715f..7a53124fa30 100644
--- a/adapters/openweb/params_test.go
+++ b/adapters/openweb/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/openweb.json
diff --git a/adapters/openx/openx.go b/adapters/openx/openx.go
index bd5e5555a40..f86b7b143fb 100644
--- a/adapters/openx/openx.go
+++ b/adapters/openx/openx.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const hbconfig = "hb_pbs_1.0.0"
diff --git a/adapters/openx/openx_test.go b/adapters/openx/openx_test.go
index c25bd02e52c..d998148da87 100644
--- a/adapters/openx/openx_test.go
+++ b/adapters/openx/openx_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/openx/params_test.go b/adapters/openx/params_test.go
index 94775b57cb0..4e081dba7e5 100644
--- a/adapters/openx/params_test.go
+++ b/adapters/openx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/openx.json
diff --git a/adapters/operaads/operaads.go b/adapters/operaads/operaads.go
index 4fad9fe0894..f6af4039fb6 100644
--- a/adapters/operaads/operaads.go
+++ b/adapters/operaads/operaads.go
@@ -8,11 +8,11 @@ import (
"strings"
"text/template"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/adapters/operaads/operaads_test.go b/adapters/operaads/operaads_test.go
index fca277fa937..4e51c8393aa 100644
--- a/adapters/operaads/operaads_test.go
+++ b/adapters/operaads/operaads_test.go
@@ -3,9 +3,9 @@ package operaads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/operaads/params_test.go b/adapters/operaads/params_test.go
index 57a60ce9c53..1da80aa8ce3 100644
--- a/adapters/operaads/params_test.go
+++ b/adapters/operaads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/operaads.json
diff --git a/adapters/orbidder/orbidder.go b/adapters/orbidder/orbidder.go
index b4f1a16c114..8f1c582afe7 100644
--- a/adapters/orbidder/orbidder.go
+++ b/adapters/orbidder/orbidder.go
@@ -8,10 +8,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type OrbidderAdapter struct {
diff --git a/adapters/orbidder/orbidder_test.go b/adapters/orbidder/orbidder_test.go
index 5a80514ccae..39919da06e0 100644
--- a/adapters/orbidder/orbidder_test.go
+++ b/adapters/orbidder/orbidder_test.go
@@ -8,10 +8,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/mock"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/orbidder/params_test.go b/adapters/orbidder/params_test.go
index 2e130f7a9bd..cd95e222aee 100644
--- a/adapters/orbidder/params_test.go
+++ b/adapters/orbidder/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/orbidder.json
diff --git a/adapters/outbrain/outbrain.go b/adapters/outbrain/outbrain.go
index a7d727a57c6..1d07c082507 100644
--- a/adapters/outbrain/outbrain.go
+++ b/adapters/outbrain/outbrain.go
@@ -8,10 +8,10 @@ import (
"github.com/prebid/openrtb/v19/native1"
nativeResponse "github.com/prebid/openrtb/v19/native1/response"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/outbrain/outbrain_test.go b/adapters/outbrain/outbrain_test.go
index 9e667dae83a..4a42679f660 100644
--- a/adapters/outbrain/outbrain_test.go
+++ b/adapters/outbrain/outbrain_test.go
@@ -3,9 +3,9 @@ package outbrain
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/outbrain/params_test.go b/adapters/outbrain/params_test.go
index a8d81d6234d..666724cd6eb 100644
--- a/adapters/outbrain/params_test.go
+++ b/adapters/outbrain/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/ownadx/ownadx.go b/adapters/ownadx/ownadx.go
index c19343ba47f..77baa63b4cd 100644
--- a/adapters/ownadx/ownadx.go
+++ b/adapters/ownadx/ownadx.go
@@ -3,14 +3,15 @@ package ownadx
import (
"encoding/json"
"fmt"
- "github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
"net/http"
"text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/ownadx/ownadx_test.go b/adapters/ownadx/ownadx_test.go
index 9bd7ba70353..07dc928b9b0 100644
--- a/adapters/ownadx/ownadx_test.go
+++ b/adapters/ownadx/ownadx_test.go
@@ -1,11 +1,12 @@
package ownadx
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/stretchr/testify/assert"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/stretchr/testify/assert"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/pangle/pangle.go b/adapters/pangle/pangle.go
index fcdc0264935..7c18a840025 100644
--- a/adapters/pangle/pangle.go
+++ b/adapters/pangle/pangle.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/pangle/pangle_test.go b/adapters/pangle/pangle_test.go
index 3653a60c81c..243bbadc90a 100644
--- a/adapters/pangle/pangle_test.go
+++ b/adapters/pangle/pangle_test.go
@@ -3,9 +3,9 @@ package pangle
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/pangle/param_test.go b/adapters/pangle/param_test.go
index 5e1d30b3c7b..e25b7d740c4 100644
--- a/adapters/pangle/param_test.go
+++ b/adapters/pangle/param_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/pgamssp/params_test.go b/adapters/pgamssp/params_test.go
index 3e603237535..d2f06cbcfa8 100644
--- a/adapters/pgamssp/params_test.go
+++ b/adapters/pgamssp/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/pgamssp/pgamssp.go b/adapters/pgamssp/pgamssp.go
index 378b8e5cbf6..3e315fedc95 100644
--- a/adapters/pgamssp/pgamssp.go
+++ b/adapters/pgamssp/pgamssp.go
@@ -6,9 +6,9 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/pgamssp/pgamssp_test.go b/adapters/pgamssp/pgamssp_test.go
index 596b813c888..10e72f5d093 100644
--- a/adapters/pgamssp/pgamssp_test.go
+++ b/adapters/pgamssp/pgamssp_test.go
@@ -3,9 +3,9 @@ package pgamssp
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/pubmatic/params_test.go b/adapters/pubmatic/params_test.go
index a5a7773f7af..d5d1d46842f 100644
--- a/adapters/pubmatic/params_test.go
+++ b/adapters/pubmatic/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/pubmatic.json
diff --git a/adapters/pubmatic/pubmatic.go b/adapters/pubmatic/pubmatic.go
index bd406d68631..17f43ea0f0a 100644
--- a/adapters/pubmatic/pubmatic.go
+++ b/adapters/pubmatic/pubmatic.go
@@ -11,10 +11,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const MAX_IMPRESSIONS_PUBMATIC = 30
diff --git a/adapters/pubmatic/pubmatic_test.go b/adapters/pubmatic/pubmatic_test.go
index 7553519f990..b40bf2d4fb2 100644
--- a/adapters/pubmatic/pubmatic_test.go
+++ b/adapters/pubmatic/pubmatic_test.go
@@ -8,10 +8,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/pubnative/pubnative.go b/adapters/pubnative/pubnative.go
index 35265c8a4c3..da3cab34dae 100644
--- a/adapters/pubnative/pubnative.go
+++ b/adapters/pubnative/pubnative.go
@@ -8,10 +8,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type PubnativeAdapter struct {
diff --git a/adapters/pubnative/pubnative_test.go b/adapters/pubnative/pubnative_test.go
index 338575a51b0..b1b1bf85e05 100644
--- a/adapters/pubnative/pubnative_test.go
+++ b/adapters/pubnative/pubnative_test.go
@@ -3,9 +3,9 @@ package pubnative
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/pulsepoint/params_test.go b/adapters/pulsepoint/params_test.go
index ac2b314b96f..4b3c6c017db 100644
--- a/adapters/pulsepoint/params_test.go
+++ b/adapters/pulsepoint/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/pulsepoint/pulsepoint.go b/adapters/pulsepoint/pulsepoint.go
index 6c17a6c30f4..f65e010341e 100644
--- a/adapters/pulsepoint/pulsepoint.go
+++ b/adapters/pulsepoint/pulsepoint.go
@@ -6,10 +6,10 @@ import (
"net/http"
"strconv"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/adapters/pulsepoint/pulsepoint_test.go b/adapters/pulsepoint/pulsepoint_test.go
index d30f49cabcf..20f73c89ecb 100644
--- a/adapters/pulsepoint/pulsepoint_test.go
+++ b/adapters/pulsepoint/pulsepoint_test.go
@@ -3,9 +3,9 @@ package pulsepoint
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/pwbid/params_test.go b/adapters/pwbid/params_test.go
index e16fd13c4dc..44d36379cca 100644
--- a/adapters/pwbid/params_test.go
+++ b/adapters/pwbid/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/pwbid/pwbid.go b/adapters/pwbid/pwbid.go
index 21b564ff124..2452c08a863 100644
--- a/adapters/pwbid/pwbid.go
+++ b/adapters/pwbid/pwbid.go
@@ -5,10 +5,10 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/pwbid/pwbid_test.go b/adapters/pwbid/pwbid_test.go
index 194e4bdea02..9abad59d97c 100644
--- a/adapters/pwbid/pwbid_test.go
+++ b/adapters/pwbid/pwbid_test.go
@@ -3,9 +3,9 @@ package pwbid
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/response.go b/adapters/response.go
index 8b7d59bd2c0..747b6ddf9c0 100644
--- a/adapters/response.go
+++ b/adapters/response.go
@@ -4,7 +4,7 @@ import (
"fmt"
"net/http"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
func CheckResponseStatusCodeForErrors(response *ResponseData) error {
diff --git a/adapters/response_test.go b/adapters/response_test.go
index 0651ff2646f..11ef1abcc5a 100644
--- a/adapters/response_test.go
+++ b/adapters/response_test.go
@@ -3,7 +3,7 @@ package adapters
import (
"testing"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/revcontent/revcontent.go b/adapters/revcontent/revcontent.go
index b825708a72b..b53f8962d4d 100644
--- a/adapters/revcontent/revcontent.go
+++ b/adapters/revcontent/revcontent.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/revcontent/revcontent_test.go b/adapters/revcontent/revcontent_test.go
index c4816a09a0c..a39a78a81dd 100644
--- a/adapters/revcontent/revcontent_test.go
+++ b/adapters/revcontent/revcontent_test.go
@@ -3,9 +3,9 @@ package revcontent
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/richaudience/params_test.go b/adapters/richaudience/params_test.go
index 038936f3cbf..4f7ede9bd55 100644
--- a/adapters/richaudience/params_test.go
+++ b/adapters/richaudience/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/richaudience/richaudience.go b/adapters/richaudience/richaudience.go
index 16fbe229acf..2d976cc7c7b 100644
--- a/adapters/richaudience/richaudience.go
+++ b/adapters/richaudience/richaudience.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/richaudience/richaudience_test.go b/adapters/richaudience/richaudience_test.go
index 30d04775c44..ee1ece29a91 100644
--- a/adapters/richaudience/richaudience_test.go
+++ b/adapters/richaudience/richaudience_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/rise/rise.go b/adapters/rise/rise.go
index e18b7c93852..56fdc4a8fff 100644
--- a/adapters/rise/rise.go
+++ b/adapters/rise/rise.go
@@ -9,9 +9,9 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// adapter is a Rise implementation of the adapters.Bidder interface.
diff --git a/adapters/rise/rise_test.go b/adapters/rise/rise_test.go
index 1ba3f8a865d..79d34bde64f 100644
--- a/adapters/rise/rise_test.go
+++ b/adapters/rise/rise_test.go
@@ -3,9 +3,9 @@ package rise
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "risetest"
diff --git a/adapters/rtbhouse/rtbhouse.go b/adapters/rtbhouse/rtbhouse.go
index dc67df9aa2b..089634cbd86 100644
--- a/adapters/rtbhouse/rtbhouse.go
+++ b/adapters/rtbhouse/rtbhouse.go
@@ -7,10 +7,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/rtbhouse/rtbhouse_test.go b/adapters/rtbhouse/rtbhouse_test.go
index e367b921957..7bccfa36266 100644
--- a/adapters/rtbhouse/rtbhouse_test.go
+++ b/adapters/rtbhouse/rtbhouse_test.go
@@ -3,9 +3,9 @@ package rtbhouse
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "rtbhousetest"
diff --git a/adapters/rubicon/rubicon.go b/adapters/rubicon/rubicon.go
index 635f6e14b42..7d09224e8b4 100644
--- a/adapters/rubicon/rubicon.go
+++ b/adapters/rubicon/rubicon.go
@@ -8,11 +8,11 @@ import (
"strconv"
"strings"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/maputil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/maputil"
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/adcom1"
diff --git a/adapters/rubicon/rubicon_test.go b/adapters/rubicon/rubicon_test.go
index 893cceb8cf7..334a5e269c0 100644
--- a/adapters/rubicon/rubicon_test.go
+++ b/adapters/rubicon/rubicon_test.go
@@ -8,11 +8,11 @@ import (
"strconv"
"testing"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/adcom1"
diff --git a/adapters/sa_lunamedia/params_test.go b/adapters/sa_lunamedia/params_test.go
index 070c97741b0..568ac83d9cf 100644
--- a/adapters/sa_lunamedia/params_test.go
+++ b/adapters/sa_lunamedia/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/sa_lunamedia/salunamedia.go b/adapters/sa_lunamedia/salunamedia.go
index 9c9c34a6bf3..0d7d253114b 100644
--- a/adapters/sa_lunamedia/salunamedia.go
+++ b/adapters/sa_lunamedia/salunamedia.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/sa_lunamedia/salunamedia_test.go b/adapters/sa_lunamedia/salunamedia_test.go
index 9aa15187ab1..4bcfb96f28e 100644
--- a/adapters/sa_lunamedia/salunamedia_test.go
+++ b/adapters/sa_lunamedia/salunamedia_test.go
@@ -3,9 +3,9 @@ package salunamedia
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/screencore/params_test.go b/adapters/screencore/params_test.go
index faa2f854928..7220f9945cf 100644
--- a/adapters/screencore/params_test.go
+++ b/adapters/screencore/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/screencore/screencore.go b/adapters/screencore/screencore.go
index 668e8b5e131..d5c2899af20 100644
--- a/adapters/screencore/screencore.go
+++ b/adapters/screencore/screencore.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/screencore/screencore_test.go b/adapters/screencore/screencore_test.go
index 6ee7f3ad554..4dc22b3cd6a 100644
--- a/adapters/screencore/screencore_test.go
+++ b/adapters/screencore/screencore_test.go
@@ -3,9 +3,9 @@ package screencore
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/seedingAlliance/params_test.go b/adapters/seedingAlliance/params_test.go
index cdf29aed9e7..03817cf2d8f 100644
--- a/adapters/seedingAlliance/params_test.go
+++ b/adapters/seedingAlliance/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/seedingAlliance/seedingAlliance.go b/adapters/seedingAlliance/seedingAlliance.go
index 683cb6db8b7..b470dc757a5 100644
--- a/adapters/seedingAlliance/seedingAlliance.go
+++ b/adapters/seedingAlliance/seedingAlliance.go
@@ -8,10 +8,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/seedingAlliance/seedingAlliance_test.go b/adapters/seedingAlliance/seedingAlliance_test.go
index 6946ead03ca..9d061e5feb6 100644
--- a/adapters/seedingAlliance/seedingAlliance_test.go
+++ b/adapters/seedingAlliance/seedingAlliance_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/sharethrough/params_test.go b/adapters/sharethrough/params_test.go
index 4edae1246d9..3c2d80dfa8b 100644
--- a/adapters/sharethrough/params_test.go
+++ b/adapters/sharethrough/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/sharethrough/sharethrough.go b/adapters/sharethrough/sharethrough.go
index 009ce0aa1d5..7287ca6b86e 100644
--- a/adapters/sharethrough/sharethrough.go
+++ b/adapters/sharethrough/sharethrough.go
@@ -7,11 +7,11 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/version"
)
var adapterVersion = "10.0"
diff --git a/adapters/sharethrough/sharethrough_test.go b/adapters/sharethrough/sharethrough_test.go
index 4aab8fc56cc..2983487ac40 100644
--- a/adapters/sharethrough/sharethrough_test.go
+++ b/adapters/sharethrough/sharethrough_test.go
@@ -3,9 +3,9 @@ package sharethrough
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/silvermob/params_test.go b/adapters/silvermob/params_test.go
index 13009f6a08b..d69171ed78d 100644
--- a/adapters/silvermob/params_test.go
+++ b/adapters/silvermob/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the silvermob schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/silvermob/silvermob.go b/adapters/silvermob/silvermob.go
index d4a1b55b45f..eaa45cb4be0 100644
--- a/adapters/silvermob/silvermob.go
+++ b/adapters/silvermob/silvermob.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type SilverMobAdapter struct {
diff --git a/adapters/silvermob/silvermob_test.go b/adapters/silvermob/silvermob_test.go
index 5b7d60e2ead..ce08651ff59 100644
--- a/adapters/silvermob/silvermob_test.go
+++ b/adapters/silvermob/silvermob_test.go
@@ -3,9 +3,9 @@ package silvermob
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/silverpush/params_test.go b/adapters/silverpush/params_test.go
index 8003b49ac3d..2a20aa2ff71 100644
--- a/adapters/silverpush/params_test.go
+++ b/adapters/silverpush/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file intends to test static/bidder-params/silverpush.json
diff --git a/adapters/silverpush/silverpush.go b/adapters/silverpush/silverpush.go
index b5726cb28b7..805ef96657a 100644
--- a/adapters/silverpush/silverpush.go
+++ b/adapters/silverpush/silverpush.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/silverpush/silverpush_test.go b/adapters/silverpush/silverpush_test.go
index 87aa2867061..630539c0697 100644
--- a/adapters/silverpush/silverpush_test.go
+++ b/adapters/silverpush/silverpush_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/smaato/image.go b/adapters/smaato/image.go
index a4dad157bd1..8e601187ccd 100644
--- a/adapters/smaato/image.go
+++ b/adapters/smaato/image.go
@@ -3,9 +3,10 @@ package smaato
import (
"encoding/json"
"fmt"
- "github.com/prebid/prebid-server/errortypes"
"net/url"
"strings"
+
+ "github.com/prebid/prebid-server/v2/errortypes"
)
type imageAd struct {
diff --git a/adapters/smaato/native.go b/adapters/smaato/native.go
index d0d40d35c57..b18a5fc4490 100644
--- a/adapters/smaato/native.go
+++ b/adapters/smaato/native.go
@@ -3,7 +3,8 @@ package smaato
import (
"encoding/json"
"fmt"
- "github.com/prebid/prebid-server/errortypes"
+
+ "github.com/prebid/prebid-server/v2/errortypes"
)
type nativeAd struct {
diff --git a/adapters/smaato/params_test.go b/adapters/smaato/params_test.go
index 2e29550a394..d1c334acbfa 100644
--- a/adapters/smaato/params_test.go
+++ b/adapters/smaato/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file intends to test static/bidder-params/smaato.json
diff --git a/adapters/smaato/richmedia.go b/adapters/smaato/richmedia.go
index a8865361d38..09e1f2bf3d6 100644
--- a/adapters/smaato/richmedia.go
+++ b/adapters/smaato/richmedia.go
@@ -3,9 +3,10 @@ package smaato
import (
"encoding/json"
"fmt"
- "github.com/prebid/prebid-server/errortypes"
"net/url"
"strings"
+
+ "github.com/prebid/prebid-server/v2/errortypes"
)
type richMediaAd struct {
diff --git a/adapters/smaato/smaato.go b/adapters/smaato/smaato.go
index e0892ef50fb..ffdeca06d7a 100644
--- a/adapters/smaato/smaato.go
+++ b/adapters/smaato/smaato.go
@@ -9,12 +9,12 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/timeutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/timeutil"
)
const clientVersion = "prebid_server_0.6"
diff --git a/adapters/smaato/smaato_test.go b/adapters/smaato/smaato_test.go
index a9caf86fe65..0d7d39027ea 100644
--- a/adapters/smaato/smaato_test.go
+++ b/adapters/smaato/smaato_test.go
@@ -9,10 +9,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/smartadserver/params_test.go b/adapters/smartadserver/params_test.go
index ec4a7f7ec6c..fcd07278be6 100644
--- a/adapters/smartadserver/params_test.go
+++ b/adapters/smartadserver/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/smartadserver.json
diff --git a/adapters/smartadserver/smartadserver.go b/adapters/smartadserver/smartadserver.go
index ecc26f9a1cc..ce14533f78b 100644
--- a/adapters/smartadserver/smartadserver.go
+++ b/adapters/smartadserver/smartadserver.go
@@ -9,10 +9,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type SmartAdserverAdapter struct {
diff --git a/adapters/smartadserver/smartadserver_test.go b/adapters/smartadserver/smartadserver_test.go
index f0a4ae8b48c..be5c13d54e2 100644
--- a/adapters/smartadserver/smartadserver_test.go
+++ b/adapters/smartadserver/smartadserver_test.go
@@ -3,9 +3,9 @@ package smartadserver
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/smarthub/params_test.go b/adapters/smarthub/params_test.go
index 7797d4a82c9..3d9a6c351bc 100644
--- a/adapters/smarthub/params_test.go
+++ b/adapters/smarthub/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/smarthub/smarthub.go b/adapters/smarthub/smarthub.go
index 018f51aabc7..877987dd2e0 100644
--- a/adapters/smarthub/smarthub.go
+++ b/adapters/smarthub/smarthub.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/smarthub/smarthub_test.go b/adapters/smarthub/smarthub_test.go
index 837d219c9fd..d231f77703a 100644
--- a/adapters/smarthub/smarthub_test.go
+++ b/adapters/smarthub/smarthub_test.go
@@ -3,9 +3,9 @@ package smarthub
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/smartrtb/smartrtb.go b/adapters/smartrtb/smartrtb.go
index ffc9854670c..875d9fc2aac 100644
--- a/adapters/smartrtb/smartrtb.go
+++ b/adapters/smartrtb/smartrtb.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Base adapter structure.
diff --git a/adapters/smartrtb/smartrtb_test.go b/adapters/smartrtb/smartrtb_test.go
index b80955e6401..c0e83d3b826 100644
--- a/adapters/smartrtb/smartrtb_test.go
+++ b/adapters/smartrtb/smartrtb_test.go
@@ -3,9 +3,9 @@ package smartrtb
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/smartx/params_test.go b/adapters/smartx/params_test.go
index fd28f4ead9b..81ee269a5ef 100644
--- a/adapters/smartx/params_test.go
+++ b/adapters/smartx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/smartx/smartx.go b/adapters/smartx/smartx.go
index 6fbc94968ca..7b928ec198c 100644
--- a/adapters/smartx/smartx.go
+++ b/adapters/smartx/smartx.go
@@ -7,9 +7,9 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/smartx/smartx_test.go b/adapters/smartx/smartx_test.go
index ba6f6ba7762..503a547d2fc 100644
--- a/adapters/smartx/smartx_test.go
+++ b/adapters/smartx/smartx_test.go
@@ -3,9 +3,9 @@ package smartx
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testsDir = "smartxtest"
diff --git a/adapters/smartyads/params_test.go b/adapters/smartyads/params_test.go
index 3aa5c0e837d..0e1b7186397 100644
--- a/adapters/smartyads/params_test.go
+++ b/adapters/smartyads/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/smartyads/smartyads.go b/adapters/smartyads/smartyads.go
index c4455a62ccf..ce50e926444 100644
--- a/adapters/smartyads/smartyads.go
+++ b/adapters/smartyads/smartyads.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type SmartyAdsAdapter struct {
diff --git a/adapters/smartyads/smartyads_test.go b/adapters/smartyads/smartyads_test.go
index b7edf2cadd2..6a697c1d5f4 100644
--- a/adapters/smartyads/smartyads_test.go
+++ b/adapters/smartyads/smartyads_test.go
@@ -3,9 +3,9 @@ package smartyads
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/smilewanted/params_test.go b/adapters/smilewanted/params_test.go
index 3217cafabab..ac055542417 100644
--- a/adapters/smilewanted/params_test.go
+++ b/adapters/smilewanted/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/smilewanted.json
diff --git a/adapters/smilewanted/smilewanted.go b/adapters/smilewanted/smilewanted.go
index 34ffdf20711..93278c2c25e 100644
--- a/adapters/smilewanted/smilewanted.go
+++ b/adapters/smilewanted/smilewanted.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/smilewanted/smilewanted_test.go b/adapters/smilewanted/smilewanted_test.go
index 73fe15387c6..3df23f42911 100644
--- a/adapters/smilewanted/smilewanted_test.go
+++ b/adapters/smilewanted/smilewanted_test.go
@@ -3,9 +3,9 @@ package smilewanted
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/sonobi/params_test.go b/adapters/sonobi/params_test.go
index 46c31015dae..c84a99edfdf 100644
--- a/adapters/sonobi/params_test.go
+++ b/adapters/sonobi/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/sonobi.json
diff --git a/adapters/sonobi/sonobi.go b/adapters/sonobi/sonobi.go
index 2b2a04c27da..f85e6959464 100644
--- a/adapters/sonobi/sonobi.go
+++ b/adapters/sonobi/sonobi.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// SonobiAdapter - Sonobi SonobiAdapter definition
diff --git a/adapters/sonobi/sonobi_test.go b/adapters/sonobi/sonobi_test.go
index 8e9790bd6f0..3123781323d 100644
--- a/adapters/sonobi/sonobi_test.go
+++ b/adapters/sonobi/sonobi_test.go
@@ -3,9 +3,9 @@ package sonobi
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/sovrn/sovrn.go b/adapters/sovrn/sovrn.go
index 15b07800b78..849e9c0b5d0 100644
--- a/adapters/sovrn/sovrn.go
+++ b/adapters/sovrn/sovrn.go
@@ -8,10 +8,10 @@ import (
"strconv"
"strings"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/adapters/sovrn/sovrn_test.go b/adapters/sovrn/sovrn_test.go
index 4a382d9b58e..1e041933e6c 100644
--- a/adapters/sovrn/sovrn_test.go
+++ b/adapters/sovrn/sovrn_test.go
@@ -3,9 +3,9 @@ package sovrn
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/sspBC/sspbc.go b/adapters/sspBC/sspbc.go
index 6b601c120e0..f1a91322999 100644
--- a/adapters/sspBC/sspbc.go
+++ b/adapters/sspBC/sspbc.go
@@ -11,10 +11,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/adapters/sspBC/sspbc_test.go b/adapters/sspBC/sspbc_test.go
index 47a8ae5d183..3c1f931bfb3 100644
--- a/adapters/sspBC/sspbc_test.go
+++ b/adapters/sspBC/sspbc_test.go
@@ -3,9 +3,9 @@ package sspBC
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/stroeerCore/params_test.go b/adapters/stroeerCore/params_test.go
index 92586189b6f..ac8075c2251 100644
--- a/adapters/stroeerCore/params_test.go
+++ b/adapters/stroeerCore/params_test.go
@@ -2,8 +2,9 @@ package stroeerCore
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/stroeerCore/stroeercore.go b/adapters/stroeerCore/stroeercore.go
index 08ba83a9544..5f0194061a8 100644
--- a/adapters/stroeerCore/stroeercore.go
+++ b/adapters/stroeerCore/stroeercore.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/stroeerCore/stroeercore_test.go b/adapters/stroeerCore/stroeercore_test.go
index fc7a680add0..153f3137c07 100644
--- a/adapters/stroeerCore/stroeercore_test.go
+++ b/adapters/stroeerCore/stroeercore_test.go
@@ -3,9 +3,9 @@ package stroeerCore
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/suntContent/params_test.go b/adapters/suntContent/params_test.go
index 653ed948d46..a0da79df48a 100644
--- a/adapters/suntContent/params_test.go
+++ b/adapters/suntContent/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/suntContent/suntContent.go b/adapters/suntContent/suntContent.go
index f5440737bd9..d9dd590e0aa 100644
--- a/adapters/suntContent/suntContent.go
+++ b/adapters/suntContent/suntContent.go
@@ -8,10 +8,10 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/suntContent/suntContent_test.go b/adapters/suntContent/suntContent_test.go
index 52be77efb60..f356f85a5eb 100644
--- a/adapters/suntContent/suntContent_test.go
+++ b/adapters/suntContent/suntContent_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/taboola/params_test.go b/adapters/taboola/params_test.go
index 51a9833cdcb..adcaa0334f7 100644
--- a/adapters/taboola/params_test.go
+++ b/adapters/taboola/params_test.go
@@ -2,8 +2,9 @@ package taboola
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/taboola/taboola.go b/adapters/taboola/taboola.go
index 087f661104f..8f4e6220143 100644
--- a/adapters/taboola/taboola.go
+++ b/adapters/taboola/taboola.go
@@ -11,11 +11,11 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/taboola/taboola_test.go b/adapters/taboola/taboola_test.go
index 320d08da22f..bd674440150 100644
--- a/adapters/taboola/taboola_test.go
+++ b/adapters/taboola/taboola_test.go
@@ -1,14 +1,12 @@
package taboola
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/stretchr/testify/assert"
"testing"
-)
-import (
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/stretchr/testify/assert"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/tappx/params_test.go b/adapters/tappx/params_test.go
index 8a248345994..ddfcbeb021f 100644
--- a/adapters/tappx/params_test.go
+++ b/adapters/tappx/params_test.go
@@ -2,8 +2,9 @@ package tappx
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/tappx/tappx.go b/adapters/tappx/tappx.go
index d66a10a2bbe..d05a59316ae 100644
--- a/adapters/tappx/tappx.go
+++ b/adapters/tappx/tappx.go
@@ -11,11 +11,11 @@ import (
"time"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const TAPPX_BIDDER_VERSION = "1.5"
diff --git a/adapters/tappx/tappx_test.go b/adapters/tappx/tappx_test.go
index c1b711426fb..b3c6f3fe625 100644
--- a/adapters/tappx/tappx_test.go
+++ b/adapters/tappx/tappx_test.go
@@ -4,9 +4,9 @@ import (
"regexp"
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/teads/teads.go b/adapters/teads/teads.go
index 9c2bb57fc57..72ee97f5a6e 100644
--- a/adapters/teads/teads.go
+++ b/adapters/teads/teads.go
@@ -9,11 +9,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Builder builds a new instance of the Teads adapter for the given bidder with the given config.
diff --git a/adapters/teads/teads_test.go b/adapters/teads/teads_test.go
index 791ce7aed6f..4f492b66b1e 100644
--- a/adapters/teads/teads_test.go
+++ b/adapters/teads/teads_test.go
@@ -1,11 +1,12 @@
package teads
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/stretchr/testify/assert"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/stretchr/testify/assert"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/telaria/params_test.go b/adapters/telaria/params_test.go
index efa3fba1be9..9e451ca091e 100644
--- a/adapters/telaria/params_test.go
+++ b/adapters/telaria/params_test.go
@@ -2,8 +2,9 @@ package telaria
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/telaria/telaria.go b/adapters/telaria/telaria.go
index bbe600178f4..a1ac5611e1f 100644
--- a/adapters/telaria/telaria.go
+++ b/adapters/telaria/telaria.go
@@ -7,10 +7,10 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const Endpoint = "https://ads.tremorhub.com/ad/rtb/prebid"
diff --git a/adapters/telaria/telaria_test.go b/adapters/telaria/telaria_test.go
index f8008835ac3..3c7d1bea46e 100644
--- a/adapters/telaria/telaria_test.go
+++ b/adapters/telaria/telaria_test.go
@@ -3,9 +3,9 @@ package telaria
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/tpmn/params_test.go b/adapters/tpmn/params_test.go
index 7bd7c478638..4715d910855 100644
--- a/adapters/tpmn/params_test.go
+++ b/adapters/tpmn/params_test.go
@@ -2,8 +2,9 @@ package tpmn
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/tpmn/tpmn.go b/adapters/tpmn/tpmn.go
index 7afe94e5f79..443b8837bac 100644
--- a/adapters/tpmn/tpmn.go
+++ b/adapters/tpmn/tpmn.go
@@ -7,9 +7,9 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TpmnAdapter struct
diff --git a/adapters/tpmn/tpmn_test.go b/adapters/tpmn/tpmn_test.go
index 6fbd85936f1..7170dbb3d5f 100644
--- a/adapters/tpmn/tpmn_test.go
+++ b/adapters/tpmn/tpmn_test.go
@@ -3,9 +3,9 @@ package tpmn
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/trafficgate/params_test.go b/adapters/trafficgate/params_test.go
index 4dc2c792bc9..adc11c08335 100644
--- a/adapters/trafficgate/params_test.go
+++ b/adapters/trafficgate/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TestValidParams makes sure that the trafficgate schema accepts all imp.ext fields which we intend to support.
diff --git a/adapters/trafficgate/trafficgate.go b/adapters/trafficgate/trafficgate.go
index 3c9ebe9ba98..1462fe59bd5 100644
--- a/adapters/trafficgate/trafficgate.go
+++ b/adapters/trafficgate/trafficgate.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/trafficgate/trafficgate_test.go b/adapters/trafficgate/trafficgate_test.go
index 326c50523fe..473c9d5d5c3 100644
--- a/adapters/trafficgate/trafficgate_test.go
+++ b/adapters/trafficgate/trafficgate_test.go
@@ -3,9 +3,9 @@ package trafficgate
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/triplelift/triplelift.go b/adapters/triplelift/triplelift.go
index 0e7fbe4a462..793647bccaa 100644
--- a/adapters/triplelift/triplelift.go
+++ b/adapters/triplelift/triplelift.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type TripleliftAdapter struct {
diff --git a/adapters/triplelift/triplelift_test.go b/adapters/triplelift/triplelift_test.go
index add71b05788..c4468a93faa 100644
--- a/adapters/triplelift/triplelift_test.go
+++ b/adapters/triplelift/triplelift_test.go
@@ -3,9 +3,9 @@ package triplelift
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/triplelift_native/triplelift_native.go b/adapters/triplelift_native/triplelift_native.go
index 9131c79a975..08aefb3b135 100644
--- a/adapters/triplelift_native/triplelift_native.go
+++ b/adapters/triplelift_native/triplelift_native.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type TripleliftNativeAdapter struct {
diff --git a/adapters/triplelift_native/triplelift_native_test.go b/adapters/triplelift_native/triplelift_native_test.go
index 18e157a41cd..c1c82501b32 100644
--- a/adapters/triplelift_native/triplelift_native_test.go
+++ b/adapters/triplelift_native/triplelift_native_test.go
@@ -3,9 +3,9 @@ package triplelift_native
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/ucfunnel/params_test.go b/adapters/ucfunnel/params_test.go
index b721925e72a..9bba397a084 100644
--- a/adapters/ucfunnel/params_test.go
+++ b/adapters/ucfunnel/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/ucfunnel.json
diff --git a/adapters/ucfunnel/ucfunnel.go b/adapters/ucfunnel/ucfunnel.go
index a0d86a0fa29..cb4a6093c99 100644
--- a/adapters/ucfunnel/ucfunnel.go
+++ b/adapters/ucfunnel/ucfunnel.go
@@ -7,10 +7,10 @@ import (
"net/url"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type UcfunnelAdapter struct {
diff --git a/adapters/ucfunnel/ucfunnel_test.go b/adapters/ucfunnel/ucfunnel_test.go
index a906b9279e8..6e5000c3205 100644
--- a/adapters/ucfunnel/ucfunnel_test.go
+++ b/adapters/ucfunnel/ucfunnel_test.go
@@ -6,9 +6,9 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestMakeRequests(t *testing.T) {
diff --git a/adapters/undertone/params_test.go b/adapters/undertone/params_test.go
index b48d08188d5..3144f757078 100644
--- a/adapters/undertone/params_test.go
+++ b/adapters/undertone/params_test.go
@@ -2,8 +2,9 @@ package undertone
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/undertone/undertone.go b/adapters/undertone/undertone.go
index 7f8dde35abb..a5f428b12ca 100644
--- a/adapters/undertone/undertone.go
+++ b/adapters/undertone/undertone.go
@@ -8,10 +8,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const adapterId = 4
diff --git a/adapters/undertone/undertone_test.go b/adapters/undertone/undertone_test.go
index d7e6d52339b..c08460e8627 100644
--- a/adapters/undertone/undertone_test.go
+++ b/adapters/undertone/undertone_test.go
@@ -1,10 +1,11 @@
package undertone
import (
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/unicorn/params_test.go b/adapters/unicorn/params_test.go
index 9313183fbfa..fd76995d1c0 100644
--- a/adapters/unicorn/params_test.go
+++ b/adapters/unicorn/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/unicorn/unicorn.go b/adapters/unicorn/unicorn.go
index 5048d9d2394..6351ad059cf 100644
--- a/adapters/unicorn/unicorn.go
+++ b/adapters/unicorn/unicorn.go
@@ -8,10 +8,10 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/unicorn/unicorn_test.go b/adapters/unicorn/unicorn_test.go
index 084be78498a..6c1e5aa73f2 100644
--- a/adapters/unicorn/unicorn_test.go
+++ b/adapters/unicorn/unicorn_test.go
@@ -3,9 +3,9 @@ package unicorn
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/unruly/params_test.go b/adapters/unruly/params_test.go
index e9607358a59..f8feea872c8 100644
--- a/adapters/unruly/params_test.go
+++ b/adapters/unruly/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/unruly/unruly.go b/adapters/unruly/unruly.go
index 1f4bf6b0203..b96da9eb93e 100644
--- a/adapters/unruly/unruly.go
+++ b/adapters/unruly/unruly.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/unruly/unruly_test.go b/adapters/unruly/unruly_test.go
index b5d837abea5..8407ba15212 100644
--- a/adapters/unruly/unruly_test.go
+++ b/adapters/unruly/unruly_test.go
@@ -3,9 +3,9 @@ package unruly
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/videobyte/params_test.go b/adapters/videobyte/params_test.go
index b638d4585c6..dbc815fd76d 100644
--- a/adapters/videobyte/params_test.go
+++ b/adapters/videobyte/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/videobyte.json
diff --git a/adapters/videobyte/videobyte.go b/adapters/videobyte/videobyte.go
index 2dc6df84895..afbce1376f9 100644
--- a/adapters/videobyte/videobyte.go
+++ b/adapters/videobyte/videobyte.go
@@ -6,10 +6,10 @@ import (
"net/http"
"net/url"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/adapters/videobyte/videobyte_test.go b/adapters/videobyte/videobyte_test.go
index d4dda0606f8..9e566a20ef2 100644
--- a/adapters/videobyte/videobyte_test.go
+++ b/adapters/videobyte/videobyte_test.go
@@ -3,9 +3,9 @@ package videobyte
import (
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
- "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/videoheroes/params_test.go b/adapters/videoheroes/params_test.go
index d79f83245a4..66e1e6a2788 100644
--- a/adapters/videoheroes/params_test.go
+++ b/adapters/videoheroes/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/videoheroes/videoheroes.go b/adapters/videoheroes/videoheroes.go
index d4efcab2c90..0014c1613e4 100755
--- a/adapters/videoheroes/videoheroes.go
+++ b/adapters/videoheroes/videoheroes.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/videoheroes/videoheroes_test.go b/adapters/videoheroes/videoheroes_test.go
index ac60d56e175..7c0b2268f51 100644
--- a/adapters/videoheroes/videoheroes_test.go
+++ b/adapters/videoheroes/videoheroes_test.go
@@ -3,9 +3,9 @@ package videoheroes
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/vidoomy/params_test.go b/adapters/vidoomy/params_test.go
index 63ffb462c19..40c17029f9e 100644
--- a/adapters/vidoomy/params_test.go
+++ b/adapters/vidoomy/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/vidoomy.json
diff --git a/adapters/vidoomy/vidoomy.go b/adapters/vidoomy/vidoomy.go
index 7e7e9d64eb3..09e924e596c 100644
--- a/adapters/vidoomy/vidoomy.go
+++ b/adapters/vidoomy/vidoomy.go
@@ -7,10 +7,10 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/vidoomy/vidoomy_test.go b/adapters/vidoomy/vidoomy_test.go
index 60cd2c9d967..7acc477ae1c 100644
--- a/adapters/vidoomy/vidoomy_test.go
+++ b/adapters/vidoomy/vidoomy_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestVidoomyBidderEndpointConfig(t *testing.T) {
diff --git a/adapters/visiblemeasures/params_test.go b/adapters/visiblemeasures/params_test.go
index 7bcc1cf60cf..ed74ef1ad35 100644
--- a/adapters/visiblemeasures/params_test.go
+++ b/adapters/visiblemeasures/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/visiblemeasures/visiblemeasures.go b/adapters/visiblemeasures/visiblemeasures.go
index 3d6a96640e9..7b8cb9a9dd3 100644
--- a/adapters/visiblemeasures/visiblemeasures.go
+++ b/adapters/visiblemeasures/visiblemeasures.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/visiblemeasures/visiblemeasures_test.go b/adapters/visiblemeasures/visiblemeasures_test.go
index 8c1759c010e..8970ccb1e43 100644
--- a/adapters/visiblemeasures/visiblemeasures_test.go
+++ b/adapters/visiblemeasures/visiblemeasures_test.go
@@ -3,9 +3,9 @@ package visiblemeasures
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/visx/params_test.go b/adapters/visx/params_test.go
index e53d2cda007..0646d221e27 100644
--- a/adapters/visx/params_test.go
+++ b/adapters/visx/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/visx/visx.go b/adapters/visx/visx.go
index 713c2693990..a7cc232c01a 100644
--- a/adapters/visx/visx.go
+++ b/adapters/visx/visx.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type VisxAdapter struct {
diff --git a/adapters/visx/visx_test.go b/adapters/visx/visx_test.go
index 5fc58a1f83d..8cdccc2e653 100644
--- a/adapters/visx/visx_test.go
+++ b/adapters/visx/visx_test.go
@@ -3,9 +3,9 @@ package visx
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/vox/params_test.go b/adapters/vox/params_test.go
index be148d3b32d..e23a57d9b30 100644
--- a/adapters/vox/params_test.go
+++ b/adapters/vox/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/vox/vox.go b/adapters/vox/vox.go
index 0b56fcbf9d7..740fe84e611 100644
--- a/adapters/vox/vox.go
+++ b/adapters/vox/vox.go
@@ -3,10 +3,11 @@ package vox
import (
"encoding/json"
"fmt"
+
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/vox/vox_test.go b/adapters/vox/vox_test.go
index 95d11a8ad79..dfb345b2e02 100644
--- a/adapters/vox/vox_test.go
+++ b/adapters/vox/vox_test.go
@@ -3,9 +3,9 @@ package vox
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/vrtcal/params_test.go b/adapters/vrtcal/params_test.go
index d45d3b39013..0e30dd6fcc9 100644
--- a/adapters/vrtcal/params_test.go
+++ b/adapters/vrtcal/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
//Vrtcal doesn't currently require any custom fields. This file is included for conformity only
diff --git a/adapters/vrtcal/vrtcal.go b/adapters/vrtcal/vrtcal.go
index ab47eddb441..01ef178b352 100644
--- a/adapters/vrtcal/vrtcal.go
+++ b/adapters/vrtcal/vrtcal.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type VrtcalAdapter struct {
diff --git a/adapters/vrtcal/vrtcal_test.go b/adapters/vrtcal/vrtcal_test.go
index 31e6c78e2c1..a4ba917922f 100644
--- a/adapters/vrtcal/vrtcal_test.go
+++ b/adapters/vrtcal/vrtcal_test.go
@@ -3,9 +3,9 @@ package vrtcal
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/xeworks/params_test.go b/adapters/xeworks/params_test.go
index 68d36096049..1c14b3a0989 100644
--- a/adapters/xeworks/params_test.go
+++ b/adapters/xeworks/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validParams = []string{
diff --git a/adapters/xeworks/xeworks.go b/adapters/xeworks/xeworks.go
index 35e551b1034..e892fcfc932 100644
--- a/adapters/xeworks/xeworks.go
+++ b/adapters/xeworks/xeworks.go
@@ -7,11 +7,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type bidType struct {
diff --git a/adapters/xeworks/xeworks_test.go b/adapters/xeworks/xeworks_test.go
index 4869a05a229..db7e26c9bae 100644
--- a/adapters/xeworks/xeworks_test.go
+++ b/adapters/xeworks/xeworks_test.go
@@ -3,9 +3,9 @@ package xeworks
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/yahooAds/params_test.go b/adapters/yahooAds/params_test.go
index c0deaaa32c9..dbbc2c84adb 100644
--- a/adapters/yahooAds/params_test.go
+++ b/adapters/yahooAds/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/yahooAds.json
diff --git a/adapters/yahooAds/yahooAds.go b/adapters/yahooAds/yahooAds.go
index 3597d0e359c..241f4eba506 100644
--- a/adapters/yahooAds/yahooAds.go
+++ b/adapters/yahooAds/yahooAds.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/yahooAds/yahooAds_test.go b/adapters/yahooAds/yahooAds_test.go
index 924eabd5ec1..ae9103d141e 100644
--- a/adapters/yahooAds/yahooAds_test.go
+++ b/adapters/yahooAds/yahooAds_test.go
@@ -5,9 +5,9 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestYahooAdsBidderEndpointConfig(t *testing.T) {
diff --git a/adapters/yeahmobi/params_test.go b/adapters/yeahmobi/params_test.go
index 997bf93a53f..805be75da30 100644
--- a/adapters/yeahmobi/params_test.go
+++ b/adapters/yeahmobi/params_test.go
@@ -2,8 +2,9 @@ package yeahmobi
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/yeahmobi/yeahmobi.go b/adapters/yeahmobi/yeahmobi.go
index ede25387ce2..35434d05473 100644
--- a/adapters/yeahmobi/yeahmobi.go
+++ b/adapters/yeahmobi/yeahmobi.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/yeahmobi/yeahmobi_test.go b/adapters/yeahmobi/yeahmobi_test.go
index 0b1c39ef214..c1c7be35105 100644
--- a/adapters/yeahmobi/yeahmobi_test.go
+++ b/adapters/yeahmobi/yeahmobi_test.go
@@ -3,9 +3,9 @@ package yeahmobi
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/yieldlab/params_test.go b/adapters/yieldlab/params_test.go
index ed0d2863629..74a91ac3bf7 100644
--- a/adapters/yieldlab/params_test.go
+++ b/adapters/yieldlab/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/yieldlab.json
diff --git a/adapters/yieldlab/yieldlab.go b/adapters/yieldlab/yieldlab.go
index 74ee6bd7220..c6aa7f27dac 100644
--- a/adapters/yieldlab/yieldlab.go
+++ b/adapters/yieldlab/yieldlab.go
@@ -12,10 +12,10 @@ import (
"golang.org/x/text/currency"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// YieldlabAdapter connects the Yieldlab API to prebid server
diff --git a/adapters/yieldlab/yieldlab_test.go b/adapters/yieldlab/yieldlab_test.go
index d3fc9f3eb1d..4c4f8f56330 100644
--- a/adapters/yieldlab/yieldlab_test.go
+++ b/adapters/yieldlab/yieldlab_test.go
@@ -8,9 +8,9 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const testURL = "https://ad.yieldlab.net/testing/"
diff --git a/adapters/yieldmo/params_test.go b/adapters/yieldmo/params_test.go
index d94c7ff035b..647c21abb90 100644
--- a/adapters/yieldmo/params_test.go
+++ b/adapters/yieldmo/params_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// This file actually intends to test static/bidder-params/yieldmo.json
diff --git a/adapters/yieldmo/yieldmo.go b/adapters/yieldmo/yieldmo.go
index bf8410b294b..795d32b8846 100644
--- a/adapters/yieldmo/yieldmo.go
+++ b/adapters/yieldmo/yieldmo.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type YieldmoAdapter struct {
diff --git a/adapters/yieldmo/yieldmo_test.go b/adapters/yieldmo/yieldmo_test.go
index 1d9426d0643..f89d4849a2c 100644
--- a/adapters/yieldmo/yieldmo_test.go
+++ b/adapters/yieldmo/yieldmo_test.go
@@ -3,9 +3,9 @@ package yieldmo
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/yieldone/params_test.go b/adapters/yieldone/params_test.go
index 6048ea5d7dc..623928839ef 100644
--- a/adapters/yieldone/params_test.go
+++ b/adapters/yieldone/params_test.go
@@ -2,8 +2,9 @@ package yieldone
import (
"encoding/json"
- "github.com/prebid/prebid-server/openrtb_ext"
"testing"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestValidParams(t *testing.T) {
diff --git a/adapters/yieldone/yieldone.go b/adapters/yieldone/yieldone.go
index 2d5f1d81173..e852c5cb6ba 100644
--- a/adapters/yieldone/yieldone.go
+++ b/adapters/yieldone/yieldone.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type YieldoneAdapter struct {
diff --git a/adapters/yieldone/yieldone_test.go b/adapters/yieldone/yieldone_test.go
index 12d634d463d..1847ef9bf06 100644
--- a/adapters/yieldone/yieldone_test.go
+++ b/adapters/yieldone/yieldone_test.go
@@ -3,9 +3,9 @@ package yieldone
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adapters/zeroclickfraud/zeroclickfraud.go b/adapters/zeroclickfraud/zeroclickfraud.go
index 235f678d7bb..6f477352652 100644
--- a/adapters/zeroclickfraud/zeroclickfraud.go
+++ b/adapters/zeroclickfraud/zeroclickfraud.go
@@ -8,11 +8,11 @@ import (
"text/template"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type ZeroClickFraudAdapter struct {
diff --git a/adapters/zeroclickfraud/zeroclickfraud_test.go b/adapters/zeroclickfraud/zeroclickfraud_test.go
index e07c43ff7a2..6e2a7e23b4c 100644
--- a/adapters/zeroclickfraud/zeroclickfraud_test.go
+++ b/adapters/zeroclickfraud/zeroclickfraud_test.go
@@ -3,9 +3,9 @@ package zeroclickfraud
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adapters/zeta_global_ssp/zeta_global_ssp.go b/adapters/zeta_global_ssp/zeta_global_ssp.go
index 7a5f3395724..dcfffc8b342 100644
--- a/adapters/zeta_global_ssp/zeta_global_ssp.go
+++ b/adapters/zeta_global_ssp/zeta_global_ssp.go
@@ -6,10 +6,10 @@ import (
"net/http"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type adapter struct {
diff --git a/adapters/zeta_global_ssp/zeta_global_ssp_test.go b/adapters/zeta_global_ssp/zeta_global_ssp_test.go
index 3b7be288fa1..f5384cdec0f 100644
--- a/adapters/zeta_global_ssp/zeta_global_ssp_test.go
+++ b/adapters/zeta_global_ssp/zeta_global_ssp_test.go
@@ -3,9 +3,9 @@ package zeta_global_ssp
import (
"testing"
- "github.com/prebid/prebid-server/adapters/adapterstest"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters/adapterstest"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func TestJsonSamples(t *testing.T) {
diff --git a/adservertargeting/adservertargeting.go b/adservertargeting/adservertargeting.go
index 94d64579e66..e79b521e1f5 100644
--- a/adservertargeting/adservertargeting.go
+++ b/adservertargeting/adservertargeting.go
@@ -7,7 +7,7 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type DataSource string
diff --git a/adservertargeting/adservertargeting_test.go b/adservertargeting/adservertargeting_test.go
index 0da3635d9b7..d0a90ce0813 100644
--- a/adservertargeting/adservertargeting_test.go
+++ b/adservertargeting/adservertargeting_test.go
@@ -7,8 +7,8 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/adservertargeting/reqcache.go b/adservertargeting/reqcache.go
index b8b147af84e..f2a4636c2f8 100644
--- a/adservertargeting/reqcache.go
+++ b/adservertargeting/reqcache.go
@@ -5,7 +5,7 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type requestCache struct {
diff --git a/adservertargeting/requestlookup.go b/adservertargeting/requestlookup.go
index debf19830db..d3284525b50 100644
--- a/adservertargeting/requestlookup.go
+++ b/adservertargeting/requestlookup.go
@@ -3,11 +3,12 @@ package adservertargeting
import (
"encoding/json"
"fmt"
- "github.com/buger/jsonparser"
- "github.com/pkg/errors"
- "github.com/prebid/prebid-server/openrtb_ext"
"net/url"
"strings"
+
+ "github.com/buger/jsonparser"
+ "github.com/pkg/errors"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func getAdServerTargeting(reqWrapper *openrtb_ext.RequestWrapper) ([]openrtb_ext.AdServerTarget, error) {
diff --git a/adservertargeting/requestlookup_test.go b/adservertargeting/requestlookup_test.go
index cd86364558e..1b54beb03e7 100644
--- a/adservertargeting/requestlookup_test.go
+++ b/adservertargeting/requestlookup_test.go
@@ -6,7 +6,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adservertargeting/respdataprocessor.go b/adservertargeting/respdataprocessor.go
index 649f802f6e2..ab3ca070f89 100644
--- a/adservertargeting/respdataprocessor.go
+++ b/adservertargeting/respdataprocessor.go
@@ -7,8 +7,8 @@ import (
"github.com/pkg/errors"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
diff --git a/adservertargeting/respdataprocessor_test.go b/adservertargeting/respdataprocessor_test.go
index 1118458e0f6..95404cef733 100644
--- a/adservertargeting/respdataprocessor_test.go
+++ b/adservertargeting/respdataprocessor_test.go
@@ -8,7 +8,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/adservertargeting/utils.go b/adservertargeting/utils.go
index 8093a4b6974..136f7900e24 100644
--- a/adservertargeting/utils.go
+++ b/adservertargeting/utils.go
@@ -1,11 +1,12 @@
package adservertargeting
import (
+ "strings"
+
"github.com/buger/jsonparser"
"github.com/pkg/errors"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "strings"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func splitAndGet(path string, data []byte, delimiter string) (string, error) {
diff --git a/amp/parse.go b/amp/parse.go
index 34f1a3cacb4..a42ef6fa399 100644
--- a/amp/parse.go
+++ b/amp/parse.go
@@ -10,10 +10,10 @@ import (
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/privacy/ccpa"
- "github.com/prebid/prebid-server/privacy/gdpr"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/privacy/gdpr"
)
// Params defines the parameters of an AMP request.
diff --git a/amp/parse_test.go b/amp/parse_test.go
index 9f981fd30e0..38c7a05a615 100644
--- a/amp/parse_test.go
+++ b/amp/parse_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/privacy/ccpa"
- "github.com/prebid/prebid-server/privacy/gdpr"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/privacy/gdpr"
"github.com/stretchr/testify/assert"
)
diff --git a/analytics/build/build.go b/analytics/build/build.go
index 6fb48705981..7fc577daedf 100644
--- a/analytics/build/build.go
+++ b/analytics/build/build.go
@@ -3,12 +3,12 @@ package build
import (
"github.com/benbjohnson/clock"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/analytics/clients"
- "github.com/prebid/prebid-server/analytics/filesystem"
- "github.com/prebid/prebid-server/analytics/pubstack"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/privacy"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/analytics/clients"
+ "github.com/prebid/prebid-server/v2/analytics/filesystem"
+ "github.com/prebid/prebid-server/v2/analytics/pubstack"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/privacy"
)
// Modules that need to be logged to need to be initialized here
diff --git a/analytics/build/build_test.go b/analytics/build/build_test.go
index dbd129a7afd..efc0c862564 100644
--- a/analytics/build/build_test.go
+++ b/analytics/build/build_test.go
@@ -1,15 +1,15 @@
package build
import (
- "github.com/prebid/prebid-server/analytics"
"net/http"
"os"
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/analytics/core.go b/analytics/core.go
index 0279ae83868..122a3da8ad3 100644
--- a/analytics/core.go
+++ b/analytics/core.go
@@ -4,9 +4,9 @@ import (
"time"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Module must be implemented by analytics modules to extract the required information and logging
diff --git a/analytics/filesystem/file_module.go b/analytics/filesystem/file_module.go
index 24b7be6b599..4f7886c1206 100644
--- a/analytics/filesystem/file_module.go
+++ b/analytics/filesystem/file_module.go
@@ -6,8 +6,8 @@ import (
"github.com/chasex/glog"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type RequestType string
diff --git a/analytics/filesystem/file_module_test.go b/analytics/filesystem/file_module_test.go
index 9843a8ab108..f2f81bcdf77 100644
--- a/analytics/filesystem/file_module_test.go
+++ b/analytics/filesystem/file_module_test.go
@@ -6,8 +6,8 @@ import (
"strings"
"testing"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/analytics/filesystem/model.go b/analytics/filesystem/model.go
index 9fc7a6e19a2..61987ed3b53 100644
--- a/analytics/filesystem/model.go
+++ b/analytics/filesystem/model.go
@@ -4,10 +4,10 @@ import (
"time"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type logAuction struct {
diff --git a/analytics/pubstack/configupdate.go b/analytics/pubstack/configupdate.go
index 622161a04f2..0ecaaef05c3 100644
--- a/analytics/pubstack/configupdate.go
+++ b/analytics/pubstack/configupdate.go
@@ -6,7 +6,7 @@ import (
"net/url"
"time"
- "github.com/prebid/prebid-server/util/task"
+ "github.com/prebid/prebid-server/v2/util/task"
)
// ConfigUpdateTask publishes configurations until the stop channel is signaled.
diff --git a/analytics/pubstack/helpers/json.go b/analytics/pubstack/helpers/json.go
index f56a4c6194b..c516cb56ae8 100644
--- a/analytics/pubstack/helpers/json.go
+++ b/analytics/pubstack/helpers/json.go
@@ -4,8 +4,8 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
func JsonifyAuctionObject(ao *analytics.AuctionObject, scope string) ([]byte, error) {
diff --git a/analytics/pubstack/helpers/json_test.go b/analytics/pubstack/helpers/json_test.go
index 07ead724929..7ec46e53f83 100644
--- a/analytics/pubstack/helpers/json_test.go
+++ b/analytics/pubstack/helpers/json_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
+ "github.com/prebid/prebid-server/v2/analytics"
"github.com/stretchr/testify/assert"
)
diff --git a/analytics/pubstack/helpers/model.go b/analytics/pubstack/helpers/model.go
index 91b86d7fc86..1d6ede1c59b 100644
--- a/analytics/pubstack/helpers/model.go
+++ b/analytics/pubstack/helpers/model.go
@@ -4,10 +4,10 @@ import (
"time"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type logAuction struct {
diff --git a/analytics/pubstack/pubstack_module.go b/analytics/pubstack/pubstack_module.go
index f2d8726d356..535118c0000 100644
--- a/analytics/pubstack/pubstack_module.go
+++ b/analytics/pubstack/pubstack_module.go
@@ -12,9 +12,9 @@ import (
"github.com/benbjohnson/clock"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/analytics/pubstack/eventchannel"
- "github.com/prebid/prebid-server/analytics/pubstack/helpers"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/analytics/pubstack/eventchannel"
+ "github.com/prebid/prebid-server/v2/analytics/pubstack/helpers"
)
type Configuration struct {
diff --git a/analytics/pubstack/pubstack_module_test.go b/analytics/pubstack/pubstack_module_test.go
index 23e110df9c1..911de4c6959 100644
--- a/analytics/pubstack/pubstack_module_test.go
+++ b/analytics/pubstack/pubstack_module_test.go
@@ -8,8 +8,8 @@ import (
"time"
"github.com/benbjohnson/clock"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/analytics/runner.go b/analytics/runner.go
index 08f67561f8a..7a2c56f77dd 100644
--- a/analytics/runner.go
+++ b/analytics/runner.go
@@ -1,7 +1,7 @@
package analytics
import (
- "github.com/prebid/prebid-server/privacy"
+ "github.com/prebid/prebid-server/v2/privacy"
)
type Runner interface {
diff --git a/bidadjustment/apply.go b/bidadjustment/apply.go
index 4fa3b737b16..16b8305a01a 100644
--- a/bidadjustment/apply.go
+++ b/bidadjustment/apply.go
@@ -3,8 +3,8 @@ package bidadjustment
import (
"math"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/bidadjustment/apply_test.go b/bidadjustment/apply_test.go
index c0eb74ab419..a1fa9f7c486 100644
--- a/bidadjustment/apply_test.go
+++ b/bidadjustment/apply_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
diff --git a/bidadjustment/build_rules.go b/bidadjustment/build_rules.go
index bccb3bc86cf..f028d78616a 100644
--- a/bidadjustment/build_rules.go
+++ b/bidadjustment/build_rules.go
@@ -1,8 +1,8 @@
package bidadjustment
import (
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/bidadjustment/build_rules_test.go b/bidadjustment/build_rules_test.go
index 263a782130e..9ae1b477e8f 100644
--- a/bidadjustment/build_rules_test.go
+++ b/bidadjustment/build_rules_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/bidadjustment/validate.go b/bidadjustment/validate.go
index c0ae3d4a27b..f34ef48ba49 100644
--- a/bidadjustment/validate.go
+++ b/bidadjustment/validate.go
@@ -3,7 +3,7 @@ package bidadjustment
import (
"math"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Validate checks whether all provided bid adjustments are valid or not against the requirements defined in the issue
diff --git a/bidadjustment/validate_test.go b/bidadjustment/validate_test.go
index a0b4eb436eb..caf4188bb5e 100644
--- a/bidadjustment/validate_test.go
+++ b/bidadjustment/validate_test.go
@@ -3,7 +3,7 @@ package bidadjustment
import (
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/config/account.go b/config/account.go
index 92af6c8a97f..f1de54f79a2 100644
--- a/config/account.go
+++ b/config/account.go
@@ -7,8 +7,8 @@ import (
"strings"
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/iputil"
)
// ChannelType enumerates the values of integrations Prebid Server can configure for an account
diff --git a/config/account_test.go b/config/account_test.go
index d0c8507deef..648618f2706 100644
--- a/config/account_test.go
+++ b/config/account_test.go
@@ -6,7 +6,7 @@ import (
"testing"
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/config/bidderinfo.go b/config/bidderinfo.go
index f1f437c5c93..45abc85227a 100644
--- a/config/bidderinfo.go
+++ b/config/bidderinfo.go
@@ -9,8 +9,8 @@ import (
"strings"
"text/template"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
validator "github.com/asaskevich/govalidator"
"gopkg.in/yaml.v3"
diff --git a/config/bidderinfo_test.go b/config/bidderinfo_test.go
index 7b134314609..ad242bd0a47 100644
--- a/config/bidderinfo_test.go
+++ b/config/bidderinfo_test.go
@@ -7,7 +7,7 @@ import (
"gopkg.in/yaml.v3"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/config/compression.go b/config/compression.go
index db85202b4a8..2fe8e7b22ac 100644
--- a/config/compression.go
+++ b/config/compression.go
@@ -1,6 +1,6 @@
package config
-import "github.com/prebid/prebid-server/util/httputil"
+import "github.com/prebid/prebid-server/v2/util/httputil"
type Compression struct {
Request CompressionInfo `mapstructure:"request"`
diff --git a/config/compression_test.go b/config/compression_test.go
index cd9048cd99e..230d1912345 100644
--- a/config/compression_test.go
+++ b/config/compression_test.go
@@ -3,7 +3,7 @@ package config
import (
"testing"
- "github.com/prebid/prebid-server/util/httputil"
+ "github.com/prebid/prebid-server/v2/util/httputil"
"github.com/stretchr/testify/assert"
)
diff --git a/config/config.go b/config/config.go
index 4bd7f807002..11b7eb5841e 100644
--- a/config/config.go
+++ b/config/config.go
@@ -12,9 +12,9 @@ import (
"github.com/golang/glog"
"github.com/prebid/go-gdpr/consentconstants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/spf13/viper"
)
diff --git a/config/config_test.go b/config/config_test.go
index 21d1681c1e7..535b4e7b099 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -9,7 +9,7 @@ import (
"time"
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/spf13/viper"
"github.com/stretchr/testify/assert"
)
diff --git a/currency/rate_converter.go b/currency/rate_converter.go
index cda8d763048..a9ab9547f83 100644
--- a/currency/rate_converter.go
+++ b/currency/rate_converter.go
@@ -8,9 +8,9 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/timeutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/timeutil"
)
// RateConverter holds the currencies conversion rates dictionary
diff --git a/currency/rate_converter_test.go b/currency/rate_converter_test.go
index 617aa02e96a..96003c7d986 100644
--- a/currency/rate_converter_test.go
+++ b/currency/rate_converter_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/util/task"
+ "github.com/prebid/prebid-server/v2/util/task"
"github.com/stretchr/testify/assert"
)
diff --git a/currency/rates_test.go b/currency/rates_test.go
index 86c25d14ac0..254bc282dec 100644
--- a/currency/rates_test.go
+++ b/currency/rates_test.go
@@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
func TestUnMarshallRates(t *testing.T) {
diff --git a/currency/validation.go b/currency/validation.go
index 7a0e2aa02bd..d6429c357b6 100644
--- a/currency/validation.go
+++ b/currency/validation.go
@@ -5,8 +5,8 @@ import (
"golang.org/x/text/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// ValidateCustomRates throws a bad input error if any of the 3-digit currency codes found in
diff --git a/currency/validation_test.go b/currency/validation_test.go
index d49b9824986..65f93a5f9e9 100644
--- a/currency/validation_test.go
+++ b/currency/validation_test.go
@@ -3,8 +3,8 @@ package currency
import (
"testing"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/cookie_sync.go b/endpoints/cookie_sync.go
index ff801de988f..bbf91330be5 100644
--- a/endpoints/cookie_sync.go
+++ b/endpoints/cookie_sync.go
@@ -14,21 +14,21 @@ import (
"github.com/julienschmidt/httprouter"
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/privacy/ccpa"
- gppPrivacy "github.com/prebid/prebid-server/privacy/gpp"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/jsonutil"
- stringutil "github.com/prebid/prebid-server/util/stringutil"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ gppPrivacy "github.com/prebid/prebid-server/v2/privacy/gpp"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ stringutil "github.com/prebid/prebid-server/v2/util/stringutil"
)
var (
diff --git a/endpoints/cookie_sync_test.go b/endpoints/cookie_sync_test.go
index 1b02357dc5d..956123006ca 100644
--- a/endpoints/cookie_sync_test.go
+++ b/endpoints/cookie_sync_test.go
@@ -12,17 +12,17 @@ import (
"testing"
"testing/iotest"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/privacy/ccpa"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
diff --git a/endpoints/currency_rates.go b/endpoints/currency_rates.go
index 49ae9963cd9..f08154471fe 100644
--- a/endpoints/currency_rates.go
+++ b/endpoints/currency_rates.go
@@ -5,8 +5,8 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// currencyRatesInfo holds currency rates information.
diff --git a/endpoints/currency_rates_test.go b/endpoints/currency_rates_test.go
index 7fc513e7dbe..0b953c640e2 100644
--- a/endpoints/currency_rates_test.go
+++ b/endpoints/currency_rates_test.go
@@ -7,7 +7,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/currency"
+ "github.com/prebid/prebid-server/v2/currency"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/events/account_test.go b/endpoints/events/account_test.go
index 8477b43b49b..d19a3912f59 100644
--- a/endpoints/events/account_test.go
+++ b/endpoints/events/account_test.go
@@ -9,10 +9,10 @@ import (
"testing"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/stored_requests"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/endpoints/events/event.go b/endpoints/events/event.go
index ffcb4e006e1..b92b72f17ad 100644
--- a/endpoints/events/event.go
+++ b/endpoints/events/event.go
@@ -4,22 +4,23 @@ import (
"context"
"errors"
"fmt"
- "github.com/prebid/prebid-server/openrtb_ext"
"net/http"
"net/url"
"strconv"
"time"
"unicode"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+
"github.com/julienschmidt/httprouter"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/httputil"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/httputil"
)
const (
diff --git a/endpoints/events/event_test.go b/endpoints/events/event_test.go
index 5fc115786fe..81d000fd8a4 100644
--- a/endpoints/events/event_test.go
+++ b/endpoints/events/event_test.go
@@ -12,12 +12,12 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/events/vtrack.go b/endpoints/events/vtrack.go
index eeb409e24ae..5d794651ba4 100644
--- a/endpoints/events/vtrack.go
+++ b/endpoints/events/vtrack.go
@@ -11,15 +11,15 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
const (
diff --git a/endpoints/events/vtrack_test.go b/endpoints/events/vtrack_test.go
index d950a443afe..3ccfeacf82f 100644
--- a/endpoints/events/vtrack_test.go
+++ b/endpoints/events/vtrack_test.go
@@ -12,11 +12,11 @@ import (
"strings"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/getuids.go b/endpoints/getuids.go
index f420c64fa6b..ea87ce70568 100644
--- a/endpoints/getuids.go
+++ b/endpoints/getuids.go
@@ -4,8 +4,8 @@ import (
"net/http"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/usersync"
"encoding/json"
)
diff --git a/endpoints/getuids_test.go b/endpoints/getuids_test.go
index 7988acbaffe..c496d3e270b 100644
--- a/endpoints/getuids_test.go
+++ b/endpoints/getuids_test.go
@@ -5,7 +5,7 @@ import (
"net/http/httptest"
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/info/bidders.go b/endpoints/info/bidders.go
index bd6d078b3ba..7cbad5e26f6 100644
--- a/endpoints/info/bidders.go
+++ b/endpoints/info/bidders.go
@@ -7,8 +7,8 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
var invalidEnabledOnlyMsg = []byte(`Invalid value for 'enabledonly' query param, must be of boolean type`)
diff --git a/endpoints/info/bidders_detail.go b/endpoints/info/bidders_detail.go
index 34d14efde1b..fbc9ab43486 100644
--- a/endpoints/info/bidders_detail.go
+++ b/endpoints/info/bidders_detail.go
@@ -8,9 +8,9 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
const (
diff --git a/endpoints/info/bidders_detail_test.go b/endpoints/info/bidders_detail_test.go
index 435d0cec92c..2911aa8e0e9 100644
--- a/endpoints/info/bidders_detail_test.go
+++ b/endpoints/info/bidders_detail_test.go
@@ -9,8 +9,8 @@ import (
"testing"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/info/bidders_test.go b/endpoints/info/bidders_test.go
index 1f483e5de27..189eb865551 100644
--- a/endpoints/info/bidders_test.go
+++ b/endpoints/info/bidders_test.go
@@ -6,7 +6,7 @@ import (
"net/http/httptest"
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/openrtb2/amp_auction.go b/endpoints/openrtb2/amp_auction.go
index 099f5d66c41..8f8d32c8fb9 100644
--- a/endpoints/openrtb2/amp_auction.go
+++ b/endpoints/openrtb2/amp_auction.go
@@ -16,29 +16,29 @@ import (
"github.com/julienschmidt/httprouter"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/ortb"
- "github.com/prebid/prebid-server/util/uuidutil"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/ortb"
+ "github.com/prebid/prebid-server/v2/util/uuidutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/amp"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/stored_responses"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/version"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/amp"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_responses"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/version"
)
const defaultAmpRequestTimeoutMillis = 900
diff --git a/endpoints/openrtb2/amp_auction_test.go b/endpoints/openrtb2/amp_auction_test.go
index 7de8995754a..bd56457b3d7 100644
--- a/endpoints/openrtb2/amp_auction_test.go
+++ b/endpoints/openrtb2/amp_auction_test.go
@@ -18,21 +18,21 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "github.com/prebid/prebid-server/amp"
- "github.com/prebid/prebid-server/analytics"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/amp"
+ "github.com/prebid/prebid-server/v2/analytics"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// TestGoodRequests makes sure that the auction runs properly-formatted stored bids correctly.
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index e6c9fe1fbde..72382f36b04 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -25,36 +25,36 @@ import (
nativeRequests "github.com/prebid/openrtb/v19/native1/request"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/bidadjustment"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/ortb"
- "github.com/prebid/prebid-server/privacy"
+ "github.com/prebid/prebid-server/v2/bidadjustment"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/ortb"
+ "github.com/prebid/prebid-server/v2/privacy"
"golang.org/x/net/publicsuffix"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/privacy/ccpa"
- "github.com/prebid/prebid-server/privacy/lmt"
- "github.com/prebid/prebid-server/schain"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/stored_responses"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/httputil"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/uuidutil"
- "github.com/prebid/prebid-server/version"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/privacy/lmt"
+ "github.com/prebid/prebid-server/v2/schain"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_responses"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/httputil"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/uuidutil"
+ "github.com/prebid/prebid-server/v2/version"
)
const storedRequestTimeoutMillis = 50
diff --git a/endpoints/openrtb2/auction_benchmark_test.go b/endpoints/openrtb2/auction_benchmark_test.go
index f3e82dca099..88a55e627e7 100644
--- a/endpoints/openrtb2/auction_benchmark_test.go
+++ b/endpoints/openrtb2/auction_benchmark_test.go
@@ -10,17 +10,17 @@ import (
"testing"
"time"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/macros"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/usersync"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/macros"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/usersync"
)
// benchmarkTestServer returns the header bidding test ad. This response was scraped from a real appnexus server response.
diff --git a/endpoints/openrtb2/auction_test.go b/endpoints/openrtb2/auction_test.go
index bab25261175..c521d653cac 100644
--- a/endpoints/openrtb2/auction_test.go
+++ b/endpoints/openrtb2/auction_test.go
@@ -22,22 +22,22 @@ import (
"github.com/prebid/openrtb/v19/native1"
nativeRequests "github.com/prebid/openrtb/v19/native1/request"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/analytics"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/stored_responses"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_responses"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/openrtb2/interstitial.go b/endpoints/openrtb2/interstitial.go
index 46dc7a61510..330119b6f8f 100644
--- a/endpoints/openrtb2/interstitial.go
+++ b/endpoints/openrtb2/interstitial.go
@@ -4,9 +4,9 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func processInterstitials(req *openrtb_ext.RequestWrapper) error {
diff --git a/endpoints/openrtb2/interstitial_test.go b/endpoints/openrtb2/interstitial_test.go
index 947817803b2..eb69bc91f08 100644
--- a/endpoints/openrtb2/interstitial_test.go
+++ b/endpoints/openrtb2/interstitial_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/endpoints/openrtb2/test_utils.go b/endpoints/openrtb2/test_utils.go
index e8506813eef..cfc8f5d8dac 100644
--- a/endpoints/openrtb2/test_utils.go
+++ b/endpoints/openrtb2/test_utils.go
@@ -18,28 +18,28 @@ import (
"github.com/julienschmidt/httprouter"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/openrtb/v19/openrtb3"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/analytics"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- pbc "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/uuidutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/analytics"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ pbc "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/uuidutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
diff --git a/endpoints/openrtb2/video_auction.go b/endpoints/openrtb2/video_auction.go
index 94455e0cb52..05802bbd506 100644
--- a/endpoints/openrtb2/video_auction.go
+++ b/endpoints/openrtb2/video_auction.go
@@ -17,28 +17,28 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/ortb"
- "github.com/prebid/prebid-server/privacy"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/ortb"
+ "github.com/prebid/prebid-server/v2/privacy"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
- "github.com/prebid/prebid-server/util/uuidutil"
- "github.com/prebid/prebid-server/version"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/uuidutil"
+ "github.com/prebid/prebid-server/v2/version"
)
var defaultRequestTimeout int64 = 5000
diff --git a/endpoints/openrtb2/video_auction_test.go b/endpoints/openrtb2/video_auction_test.go
index 281c80b204d..70a37aab5df 100644
--- a/endpoints/openrtb2/video_auction_test.go
+++ b/endpoints/openrtb2/video_auction_test.go
@@ -11,20 +11,20 @@ import (
"strings"
"testing"
- "github.com/prebid/prebid-server/analytics"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
diff --git a/endpoints/setuid.go b/endpoints/setuid.go
index 7af70d002b5..f9c55fc84de 100644
--- a/endpoints/setuid.go
+++ b/endpoints/setuid.go
@@ -12,19 +12,19 @@ import (
"github.com/julienschmidt/httprouter"
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
- accountService "github.com/prebid/prebid-server/account"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- gppPrivacy "github.com/prebid/prebid-server/privacy/gpp"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/httputil"
- stringutil "github.com/prebid/prebid-server/util/stringutil"
+ accountService "github.com/prebid/prebid-server/v2/account"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ gppPrivacy "github.com/prebid/prebid-server/v2/privacy/gpp"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/httputil"
+ stringutil "github.com/prebid/prebid-server/v2/util/stringutil"
)
const (
diff --git a/endpoints/setuid_test.go b/endpoints/setuid_test.go
index 8b919c3d596..fe66379702c 100644
--- a/endpoints/setuid_test.go
+++ b/endpoints/setuid_test.go
@@ -12,18 +12,18 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/analytics"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/v2/analytics"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/usersync"
"github.com/stretchr/testify/assert"
- metricsConf "github.com/prebid/prebid-server/metrics/config"
+ metricsConf "github.com/prebid/prebid-server/v2/metrics/config"
)
func TestSetUIDEndpoint(t *testing.T) {
diff --git a/endpoints/version.go b/endpoints/version.go
index 0a837fd8bc3..f9e07da9a0d 100644
--- a/endpoints/version.go
+++ b/endpoints/version.go
@@ -5,7 +5,7 @@ import (
"net/http"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
const versionEndpointValueNotSet = "not-set"
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index fd1a99aeffb..a5179f75d53 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -1,194 +1,194 @@
package exchange
import (
- "github.com/prebid/prebid-server/adapters"
- ttx "github.com/prebid/prebid-server/adapters/33across"
- "github.com/prebid/prebid-server/adapters/aax"
- "github.com/prebid/prebid-server/adapters/aceex"
- "github.com/prebid/prebid-server/adapters/acuityads"
- "github.com/prebid/prebid-server/adapters/adf"
- "github.com/prebid/prebid-server/adapters/adgeneration"
- "github.com/prebid/prebid-server/adapters/adhese"
- "github.com/prebid/prebid-server/adapters/adkernel"
- "github.com/prebid/prebid-server/adapters/adkernelAdn"
- "github.com/prebid/prebid-server/adapters/adman"
- "github.com/prebid/prebid-server/adapters/admixer"
- "github.com/prebid/prebid-server/adapters/adnuntius"
- "github.com/prebid/prebid-server/adapters/adocean"
- "github.com/prebid/prebid-server/adapters/adoppler"
- "github.com/prebid/prebid-server/adapters/adot"
- "github.com/prebid/prebid-server/adapters/adpone"
- "github.com/prebid/prebid-server/adapters/adprime"
- "github.com/prebid/prebid-server/adapters/adquery"
- "github.com/prebid/prebid-server/adapters/adrino"
- "github.com/prebid/prebid-server/adapters/adsinteractive"
- "github.com/prebid/prebid-server/adapters/adtarget"
- "github.com/prebid/prebid-server/adapters/adtelligent"
- "github.com/prebid/prebid-server/adapters/adtrgtme"
- "github.com/prebid/prebid-server/adapters/advangelists"
- "github.com/prebid/prebid-server/adapters/adview"
- "github.com/prebid/prebid-server/adapters/adxcg"
- "github.com/prebid/prebid-server/adapters/adyoulike"
- "github.com/prebid/prebid-server/adapters/aidem"
- "github.com/prebid/prebid-server/adapters/aja"
- "github.com/prebid/prebid-server/adapters/algorix"
- "github.com/prebid/prebid-server/adapters/amx"
- "github.com/prebid/prebid-server/adapters/apacdex"
- "github.com/prebid/prebid-server/adapters/appnexus"
- "github.com/prebid/prebid-server/adapters/appush"
- "github.com/prebid/prebid-server/adapters/audienceNetwork"
- "github.com/prebid/prebid-server/adapters/automatad"
- "github.com/prebid/prebid-server/adapters/avocet"
- "github.com/prebid/prebid-server/adapters/axis"
- "github.com/prebid/prebid-server/adapters/axonix"
- "github.com/prebid/prebid-server/adapters/beachfront"
- "github.com/prebid/prebid-server/adapters/beintoo"
- "github.com/prebid/prebid-server/adapters/bematterfull"
- "github.com/prebid/prebid-server/adapters/between"
- "github.com/prebid/prebid-server/adapters/beyondmedia"
- "github.com/prebid/prebid-server/adapters/bidmachine"
- "github.com/prebid/prebid-server/adapters/bidmyadz"
- "github.com/prebid/prebid-server/adapters/bidscube"
- "github.com/prebid/prebid-server/adapters/bidstack"
- "github.com/prebid/prebid-server/adapters/bizzclick"
- "github.com/prebid/prebid-server/adapters/bliink"
- "github.com/prebid/prebid-server/adapters/blue"
- "github.com/prebid/prebid-server/adapters/bluesea"
- "github.com/prebid/prebid-server/adapters/bmtm"
- "github.com/prebid/prebid-server/adapters/boldwin"
- "github.com/prebid/prebid-server/adapters/brave"
- cadentaperturemx "github.com/prebid/prebid-server/adapters/cadent_aperture_mx"
- "github.com/prebid/prebid-server/adapters/ccx"
- "github.com/prebid/prebid-server/adapters/coinzilla"
- "github.com/prebid/prebid-server/adapters/colossus"
- "github.com/prebid/prebid-server/adapters/compass"
- "github.com/prebid/prebid-server/adapters/connectad"
- "github.com/prebid/prebid-server/adapters/consumable"
- "github.com/prebid/prebid-server/adapters/conversant"
- "github.com/prebid/prebid-server/adapters/cpmstar"
- "github.com/prebid/prebid-server/adapters/criteo"
- "github.com/prebid/prebid-server/adapters/cwire"
- "github.com/prebid/prebid-server/adapters/datablocks"
- "github.com/prebid/prebid-server/adapters/decenterads"
- "github.com/prebid/prebid-server/adapters/deepintent"
- "github.com/prebid/prebid-server/adapters/definemedia"
- "github.com/prebid/prebid-server/adapters/dianomi"
- "github.com/prebid/prebid-server/adapters/dmx"
- "github.com/prebid/prebid-server/adapters/dxkulture"
- evolution "github.com/prebid/prebid-server/adapters/e_volution"
- "github.com/prebid/prebid-server/adapters/edge226"
- "github.com/prebid/prebid-server/adapters/emtv"
- "github.com/prebid/prebid-server/adapters/eplanning"
- "github.com/prebid/prebid-server/adapters/epom"
- "github.com/prebid/prebid-server/adapters/flipp"
- "github.com/prebid/prebid-server/adapters/freewheelssp"
- "github.com/prebid/prebid-server/adapters/frvradn"
- "github.com/prebid/prebid-server/adapters/gamma"
- "github.com/prebid/prebid-server/adapters/gamoshi"
- "github.com/prebid/prebid-server/adapters/globalsun"
- "github.com/prebid/prebid-server/adapters/gothamads"
- "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"
- "github.com/prebid/prebid-server/adapters/inmobi"
- "github.com/prebid/prebid-server/adapters/interactiveoffers"
- "github.com/prebid/prebid-server/adapters/invibes"
- "github.com/prebid/prebid-server/adapters/iqx"
- "github.com/prebid/prebid-server/adapters/iqzone"
- "github.com/prebid/prebid-server/adapters/ix"
- "github.com/prebid/prebid-server/adapters/jixie"
- "github.com/prebid/prebid-server/adapters/kargo"
- "github.com/prebid/prebid-server/adapters/kayzen"
- "github.com/prebid/prebid-server/adapters/kidoz"
- "github.com/prebid/prebid-server/adapters/kiviads"
- "github.com/prebid/prebid-server/adapters/krushmedia"
- "github.com/prebid/prebid-server/adapters/lemmadigital"
- "github.com/prebid/prebid-server/adapters/liftoff"
- "github.com/prebid/prebid-server/adapters/limelightDigital"
- lmkiviads "github.com/prebid/prebid-server/adapters/lm_kiviads"
- "github.com/prebid/prebid-server/adapters/lockerdome"
- "github.com/prebid/prebid-server/adapters/logan"
- "github.com/prebid/prebid-server/adapters/logicad"
- "github.com/prebid/prebid-server/adapters/lunamedia"
- mabidder "github.com/prebid/prebid-server/adapters/mabidder"
- "github.com/prebid/prebid-server/adapters/madvertise"
- "github.com/prebid/prebid-server/adapters/marsmedia"
- "github.com/prebid/prebid-server/adapters/medianet"
- "github.com/prebid/prebid-server/adapters/mgid"
- "github.com/prebid/prebid-server/adapters/mgidX"
- "github.com/prebid/prebid-server/adapters/mobfoxpb"
- "github.com/prebid/prebid-server/adapters/mobilefuse"
- "github.com/prebid/prebid-server/adapters/motorik"
- "github.com/prebid/prebid-server/adapters/nextmillennium"
- "github.com/prebid/prebid-server/adapters/nobid"
- "github.com/prebid/prebid-server/adapters/onetag"
- "github.com/prebid/prebid-server/adapters/openweb"
- "github.com/prebid/prebid-server/adapters/openx"
- "github.com/prebid/prebid-server/adapters/operaads"
- "github.com/prebid/prebid-server/adapters/orbidder"
- "github.com/prebid/prebid-server/adapters/outbrain"
- "github.com/prebid/prebid-server/adapters/ownadx"
- "github.com/prebid/prebid-server/adapters/pangle"
- "github.com/prebid/prebid-server/adapters/pgamssp"
- "github.com/prebid/prebid-server/adapters/pubmatic"
- "github.com/prebid/prebid-server/adapters/pubnative"
- "github.com/prebid/prebid-server/adapters/pulsepoint"
- "github.com/prebid/prebid-server/adapters/pwbid"
- "github.com/prebid/prebid-server/adapters/revcontent"
- "github.com/prebid/prebid-server/adapters/richaudience"
- "github.com/prebid/prebid-server/adapters/rise"
- "github.com/prebid/prebid-server/adapters/rtbhouse"
- "github.com/prebid/prebid-server/adapters/rubicon"
- salunamedia "github.com/prebid/prebid-server/adapters/sa_lunamedia"
- "github.com/prebid/prebid-server/adapters/screencore"
- "github.com/prebid/prebid-server/adapters/seedingAlliance"
- "github.com/prebid/prebid-server/adapters/sharethrough"
- "github.com/prebid/prebid-server/adapters/silvermob"
- "github.com/prebid/prebid-server/adapters/silverpush"
- "github.com/prebid/prebid-server/adapters/smaato"
- "github.com/prebid/prebid-server/adapters/smartadserver"
- "github.com/prebid/prebid-server/adapters/smarthub"
- "github.com/prebid/prebid-server/adapters/smartrtb"
- "github.com/prebid/prebid-server/adapters/smartx"
- "github.com/prebid/prebid-server/adapters/smartyads"
- "github.com/prebid/prebid-server/adapters/smilewanted"
- "github.com/prebid/prebid-server/adapters/sonobi"
- "github.com/prebid/prebid-server/adapters/sovrn"
- "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/taboola"
- "github.com/prebid/prebid-server/adapters/tappx"
- "github.com/prebid/prebid-server/adapters/teads"
- "github.com/prebid/prebid-server/adapters/telaria"
- "github.com/prebid/prebid-server/adapters/tpmn"
- "github.com/prebid/prebid-server/adapters/trafficgate"
- "github.com/prebid/prebid-server/adapters/triplelift"
- "github.com/prebid/prebid-server/adapters/triplelift_native"
- "github.com/prebid/prebid-server/adapters/ucfunnel"
- "github.com/prebid/prebid-server/adapters/undertone"
- "github.com/prebid/prebid-server/adapters/unicorn"
- "github.com/prebid/prebid-server/adapters/unruly"
- "github.com/prebid/prebid-server/adapters/videobyte"
- "github.com/prebid/prebid-server/adapters/videoheroes"
- "github.com/prebid/prebid-server/adapters/vidoomy"
- "github.com/prebid/prebid-server/adapters/visiblemeasures"
- "github.com/prebid/prebid-server/adapters/visx"
- "github.com/prebid/prebid-server/adapters/vox"
- "github.com/prebid/prebid-server/adapters/vrtcal"
- "github.com/prebid/prebid-server/adapters/xeworks"
- "github.com/prebid/prebid-server/adapters/yahooAds"
- "github.com/prebid/prebid-server/adapters/yeahmobi"
- "github.com/prebid/prebid-server/adapters/yieldlab"
- "github.com/prebid/prebid-server/adapters/yieldmo"
- "github.com/prebid/prebid-server/adapters/yieldone"
- "github.com/prebid/prebid-server/adapters/zeroclickfraud"
- "github.com/prebid/prebid-server/adapters/zeta_global_ssp"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ ttx "github.com/prebid/prebid-server/v2/adapters/33across"
+ "github.com/prebid/prebid-server/v2/adapters/aax"
+ "github.com/prebid/prebid-server/v2/adapters/aceex"
+ "github.com/prebid/prebid-server/v2/adapters/acuityads"
+ "github.com/prebid/prebid-server/v2/adapters/adf"
+ "github.com/prebid/prebid-server/v2/adapters/adgeneration"
+ "github.com/prebid/prebid-server/v2/adapters/adhese"
+ "github.com/prebid/prebid-server/v2/adapters/adkernel"
+ "github.com/prebid/prebid-server/v2/adapters/adkernelAdn"
+ "github.com/prebid/prebid-server/v2/adapters/adman"
+ "github.com/prebid/prebid-server/v2/adapters/admixer"
+ "github.com/prebid/prebid-server/v2/adapters/adnuntius"
+ "github.com/prebid/prebid-server/v2/adapters/adocean"
+ "github.com/prebid/prebid-server/v2/adapters/adoppler"
+ "github.com/prebid/prebid-server/v2/adapters/adot"
+ "github.com/prebid/prebid-server/v2/adapters/adpone"
+ "github.com/prebid/prebid-server/v2/adapters/adprime"
+ "github.com/prebid/prebid-server/v2/adapters/adquery"
+ "github.com/prebid/prebid-server/v2/adapters/adrino"
+ "github.com/prebid/prebid-server/v2/adapters/adsinteractive"
+ "github.com/prebid/prebid-server/v2/adapters/adtarget"
+ "github.com/prebid/prebid-server/v2/adapters/adtelligent"
+ "github.com/prebid/prebid-server/v2/adapters/adtrgtme"
+ "github.com/prebid/prebid-server/v2/adapters/advangelists"
+ "github.com/prebid/prebid-server/v2/adapters/adview"
+ "github.com/prebid/prebid-server/v2/adapters/adxcg"
+ "github.com/prebid/prebid-server/v2/adapters/adyoulike"
+ "github.com/prebid/prebid-server/v2/adapters/aidem"
+ "github.com/prebid/prebid-server/v2/adapters/aja"
+ "github.com/prebid/prebid-server/v2/adapters/algorix"
+ "github.com/prebid/prebid-server/v2/adapters/amx"
+ "github.com/prebid/prebid-server/v2/adapters/apacdex"
+ "github.com/prebid/prebid-server/v2/adapters/appnexus"
+ "github.com/prebid/prebid-server/v2/adapters/appush"
+ "github.com/prebid/prebid-server/v2/adapters/audienceNetwork"
+ "github.com/prebid/prebid-server/v2/adapters/automatad"
+ "github.com/prebid/prebid-server/v2/adapters/avocet"
+ "github.com/prebid/prebid-server/v2/adapters/axis"
+ "github.com/prebid/prebid-server/v2/adapters/axonix"
+ "github.com/prebid/prebid-server/v2/adapters/beachfront"
+ "github.com/prebid/prebid-server/v2/adapters/beintoo"
+ "github.com/prebid/prebid-server/v2/adapters/bematterfull"
+ "github.com/prebid/prebid-server/v2/adapters/between"
+ "github.com/prebid/prebid-server/v2/adapters/beyondmedia"
+ "github.com/prebid/prebid-server/v2/adapters/bidmachine"
+ "github.com/prebid/prebid-server/v2/adapters/bidmyadz"
+ "github.com/prebid/prebid-server/v2/adapters/bidscube"
+ "github.com/prebid/prebid-server/v2/adapters/bidstack"
+ "github.com/prebid/prebid-server/v2/adapters/bizzclick"
+ "github.com/prebid/prebid-server/v2/adapters/bliink"
+ "github.com/prebid/prebid-server/v2/adapters/blue"
+ "github.com/prebid/prebid-server/v2/adapters/bluesea"
+ "github.com/prebid/prebid-server/v2/adapters/bmtm"
+ "github.com/prebid/prebid-server/v2/adapters/boldwin"
+ "github.com/prebid/prebid-server/v2/adapters/brave"
+ cadentaperturemx "github.com/prebid/prebid-server/v2/adapters/cadent_aperture_mx"
+ "github.com/prebid/prebid-server/v2/adapters/ccx"
+ "github.com/prebid/prebid-server/v2/adapters/coinzilla"
+ "github.com/prebid/prebid-server/v2/adapters/colossus"
+ "github.com/prebid/prebid-server/v2/adapters/compass"
+ "github.com/prebid/prebid-server/v2/adapters/connectad"
+ "github.com/prebid/prebid-server/v2/adapters/consumable"
+ "github.com/prebid/prebid-server/v2/adapters/conversant"
+ "github.com/prebid/prebid-server/v2/adapters/cpmstar"
+ "github.com/prebid/prebid-server/v2/adapters/criteo"
+ "github.com/prebid/prebid-server/v2/adapters/cwire"
+ "github.com/prebid/prebid-server/v2/adapters/datablocks"
+ "github.com/prebid/prebid-server/v2/adapters/decenterads"
+ "github.com/prebid/prebid-server/v2/adapters/deepintent"
+ "github.com/prebid/prebid-server/v2/adapters/definemedia"
+ "github.com/prebid/prebid-server/v2/adapters/dianomi"
+ "github.com/prebid/prebid-server/v2/adapters/dmx"
+ "github.com/prebid/prebid-server/v2/adapters/dxkulture"
+ evolution "github.com/prebid/prebid-server/v2/adapters/e_volution"
+ "github.com/prebid/prebid-server/v2/adapters/edge226"
+ "github.com/prebid/prebid-server/v2/adapters/emtv"
+ "github.com/prebid/prebid-server/v2/adapters/eplanning"
+ "github.com/prebid/prebid-server/v2/adapters/epom"
+ "github.com/prebid/prebid-server/v2/adapters/flipp"
+ "github.com/prebid/prebid-server/v2/adapters/freewheelssp"
+ "github.com/prebid/prebid-server/v2/adapters/frvradn"
+ "github.com/prebid/prebid-server/v2/adapters/gamma"
+ "github.com/prebid/prebid-server/v2/adapters/gamoshi"
+ "github.com/prebid/prebid-server/v2/adapters/globalsun"
+ "github.com/prebid/prebid-server/v2/adapters/gothamads"
+ "github.com/prebid/prebid-server/v2/adapters/grid"
+ "github.com/prebid/prebid-server/v2/adapters/gumgum"
+ "github.com/prebid/prebid-server/v2/adapters/huaweiads"
+ "github.com/prebid/prebid-server/v2/adapters/imds"
+ "github.com/prebid/prebid-server/v2/adapters/impactify"
+ "github.com/prebid/prebid-server/v2/adapters/improvedigital"
+ "github.com/prebid/prebid-server/v2/adapters/infytv"
+ "github.com/prebid/prebid-server/v2/adapters/inmobi"
+ "github.com/prebid/prebid-server/v2/adapters/interactiveoffers"
+ "github.com/prebid/prebid-server/v2/adapters/invibes"
+ "github.com/prebid/prebid-server/v2/adapters/iqx"
+ "github.com/prebid/prebid-server/v2/adapters/iqzone"
+ "github.com/prebid/prebid-server/v2/adapters/ix"
+ "github.com/prebid/prebid-server/v2/adapters/jixie"
+ "github.com/prebid/prebid-server/v2/adapters/kargo"
+ "github.com/prebid/prebid-server/v2/adapters/kayzen"
+ "github.com/prebid/prebid-server/v2/adapters/kidoz"
+ "github.com/prebid/prebid-server/v2/adapters/kiviads"
+ "github.com/prebid/prebid-server/v2/adapters/krushmedia"
+ "github.com/prebid/prebid-server/v2/adapters/lemmadigital"
+ "github.com/prebid/prebid-server/v2/adapters/liftoff"
+ "github.com/prebid/prebid-server/v2/adapters/limelightDigital"
+ lmkiviads "github.com/prebid/prebid-server/v2/adapters/lm_kiviads"
+ "github.com/prebid/prebid-server/v2/adapters/lockerdome"
+ "github.com/prebid/prebid-server/v2/adapters/logan"
+ "github.com/prebid/prebid-server/v2/adapters/logicad"
+ "github.com/prebid/prebid-server/v2/adapters/lunamedia"
+ mabidder "github.com/prebid/prebid-server/v2/adapters/mabidder"
+ "github.com/prebid/prebid-server/v2/adapters/madvertise"
+ "github.com/prebid/prebid-server/v2/adapters/marsmedia"
+ "github.com/prebid/prebid-server/v2/adapters/medianet"
+ "github.com/prebid/prebid-server/v2/adapters/mgid"
+ "github.com/prebid/prebid-server/v2/adapters/mgidX"
+ "github.com/prebid/prebid-server/v2/adapters/mobfoxpb"
+ "github.com/prebid/prebid-server/v2/adapters/mobilefuse"
+ "github.com/prebid/prebid-server/v2/adapters/motorik"
+ "github.com/prebid/prebid-server/v2/adapters/nextmillennium"
+ "github.com/prebid/prebid-server/v2/adapters/nobid"
+ "github.com/prebid/prebid-server/v2/adapters/onetag"
+ "github.com/prebid/prebid-server/v2/adapters/openweb"
+ "github.com/prebid/prebid-server/v2/adapters/openx"
+ "github.com/prebid/prebid-server/v2/adapters/operaads"
+ "github.com/prebid/prebid-server/v2/adapters/orbidder"
+ "github.com/prebid/prebid-server/v2/adapters/outbrain"
+ "github.com/prebid/prebid-server/v2/adapters/ownadx"
+ "github.com/prebid/prebid-server/v2/adapters/pangle"
+ "github.com/prebid/prebid-server/v2/adapters/pgamssp"
+ "github.com/prebid/prebid-server/v2/adapters/pubmatic"
+ "github.com/prebid/prebid-server/v2/adapters/pubnative"
+ "github.com/prebid/prebid-server/v2/adapters/pulsepoint"
+ "github.com/prebid/prebid-server/v2/adapters/pwbid"
+ "github.com/prebid/prebid-server/v2/adapters/revcontent"
+ "github.com/prebid/prebid-server/v2/adapters/richaudience"
+ "github.com/prebid/prebid-server/v2/adapters/rise"
+ "github.com/prebid/prebid-server/v2/adapters/rtbhouse"
+ "github.com/prebid/prebid-server/v2/adapters/rubicon"
+ salunamedia "github.com/prebid/prebid-server/v2/adapters/sa_lunamedia"
+ "github.com/prebid/prebid-server/v2/adapters/screencore"
+ "github.com/prebid/prebid-server/v2/adapters/seedingAlliance"
+ "github.com/prebid/prebid-server/v2/adapters/sharethrough"
+ "github.com/prebid/prebid-server/v2/adapters/silvermob"
+ "github.com/prebid/prebid-server/v2/adapters/silverpush"
+ "github.com/prebid/prebid-server/v2/adapters/smaato"
+ "github.com/prebid/prebid-server/v2/adapters/smartadserver"
+ "github.com/prebid/prebid-server/v2/adapters/smarthub"
+ "github.com/prebid/prebid-server/v2/adapters/smartrtb"
+ "github.com/prebid/prebid-server/v2/adapters/smartx"
+ "github.com/prebid/prebid-server/v2/adapters/smartyads"
+ "github.com/prebid/prebid-server/v2/adapters/smilewanted"
+ "github.com/prebid/prebid-server/v2/adapters/sonobi"
+ "github.com/prebid/prebid-server/v2/adapters/sovrn"
+ "github.com/prebid/prebid-server/v2/adapters/sspBC"
+ "github.com/prebid/prebid-server/v2/adapters/stroeerCore"
+ "github.com/prebid/prebid-server/v2/adapters/suntContent"
+ "github.com/prebid/prebid-server/v2/adapters/taboola"
+ "github.com/prebid/prebid-server/v2/adapters/tappx"
+ "github.com/prebid/prebid-server/v2/adapters/teads"
+ "github.com/prebid/prebid-server/v2/adapters/telaria"
+ "github.com/prebid/prebid-server/v2/adapters/tpmn"
+ "github.com/prebid/prebid-server/v2/adapters/trafficgate"
+ "github.com/prebid/prebid-server/v2/adapters/triplelift"
+ "github.com/prebid/prebid-server/v2/adapters/triplelift_native"
+ "github.com/prebid/prebid-server/v2/adapters/ucfunnel"
+ "github.com/prebid/prebid-server/v2/adapters/undertone"
+ "github.com/prebid/prebid-server/v2/adapters/unicorn"
+ "github.com/prebid/prebid-server/v2/adapters/unruly"
+ "github.com/prebid/prebid-server/v2/adapters/videobyte"
+ "github.com/prebid/prebid-server/v2/adapters/videoheroes"
+ "github.com/prebid/prebid-server/v2/adapters/vidoomy"
+ "github.com/prebid/prebid-server/v2/adapters/visiblemeasures"
+ "github.com/prebid/prebid-server/v2/adapters/visx"
+ "github.com/prebid/prebid-server/v2/adapters/vox"
+ "github.com/prebid/prebid-server/v2/adapters/vrtcal"
+ "github.com/prebid/prebid-server/v2/adapters/xeworks"
+ "github.com/prebid/prebid-server/v2/adapters/yahooAds"
+ "github.com/prebid/prebid-server/v2/adapters/yeahmobi"
+ "github.com/prebid/prebid-server/v2/adapters/yieldlab"
+ "github.com/prebid/prebid-server/v2/adapters/yieldmo"
+ "github.com/prebid/prebid-server/v2/adapters/yieldone"
+ "github.com/prebid/prebid-server/v2/adapters/zeroclickfraud"
+ "github.com/prebid/prebid-server/v2/adapters/zeta_global_ssp"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Adapter registration is kept in this separate file for ease of use and to aid
diff --git a/exchange/adapter_util.go b/exchange/adapter_util.go
index 89d58d06800..cd70530bfc3 100644
--- a/exchange/adapter_util.go
+++ b/exchange/adapter_util.go
@@ -4,10 +4,10 @@ import (
"fmt"
"net/http"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func BuildAdapters(client *http.Client, cfg *config.Configuration, infos config.BidderInfos, me metrics.MetricsEngine) (map[openrtb_ext.BidderName]AdaptedBidder, []error) {
diff --git a/exchange/adapter_util_test.go b/exchange/adapter_util_test.go
index 08d751cdadf..8f765305248 100644
--- a/exchange/adapter_util_test.go
+++ b/exchange/adapter_util_test.go
@@ -6,12 +6,12 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adapters/appnexus"
- "github.com/prebid/prebid-server/adapters/rubicon"
- "github.com/prebid/prebid-server/config"
- metrics "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adapters/appnexus"
+ "github.com/prebid/prebid-server/v2/adapters/rubicon"
+ "github.com/prebid/prebid-server/v2/config"
+ metrics "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/exchange/auction.go b/exchange/auction.go
index abbf56ba799..17a843fb5ed 100644
--- a/exchange/auction.go
+++ b/exchange/auction.go
@@ -12,11 +12,11 @@ import (
uuid "github.com/gofrs/uuid"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
const (
diff --git a/exchange/auction_response.go b/exchange/auction_response.go
index 3b85a4472c2..c92798d0f3b 100644
--- a/exchange/auction_response.go
+++ b/exchange/auction_response.go
@@ -2,7 +2,7 @@ package exchange
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// AuctionResponse contains OpenRTB Bid Response object and its extension (un-marshalled) object
diff --git a/exchange/auction_test.go b/exchange/auction_test.go
index 199b2abba77..10c4b9a5e67 100644
--- a/exchange/auction_test.go
+++ b/exchange/auction_test.go
@@ -12,12 +12,12 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/bidder.go b/exchange/bidder.go
index 677743801f3..db654bf47ae 100644
--- a/exchange/bidder.go
+++ b/exchange/bidder.go
@@ -16,24 +16,24 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/bidadjustment"
- "github.com/prebid/prebid-server/config/util"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/bidadjustment"
+ "github.com/prebid/prebid-server/v2/config/util"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/version"
"github.com/prebid/openrtb/v19/adcom1"
nativeRequests "github.com/prebid/openrtb/v19/native1/request"
nativeResponse "github.com/prebid/openrtb/v19/native1/response"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"golang.org/x/net/context/ctxhttp"
)
diff --git a/exchange/bidder_test.go b/exchange/bidder_test.go
index b7203e33b17..824aecc8583 100644
--- a/exchange/bidder_test.go
+++ b/exchange/bidder_test.go
@@ -21,18 +21,18 @@ import (
nativeRequests "github.com/prebid/openrtb/v19/native1/request"
nativeResponse "github.com/prebid/openrtb/v19/native1/response"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/version"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
diff --git a/exchange/bidder_validate_bids.go b/exchange/bidder_validate_bids.go
index 9b5771a3497..651b2c0f420 100644
--- a/exchange/bidder_validate_bids.go
+++ b/exchange/bidder_validate_bids.go
@@ -7,12 +7,12 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
goCurrency "golang.org/x/text/currency"
)
diff --git a/exchange/bidder_validate_bids_test.go b/exchange/bidder_validate_bids_test.go
index ed6173b64ad..a495556f424 100644
--- a/exchange/bidder_validate_bids_test.go
+++ b/exchange/bidder_validate_bids_test.go
@@ -5,12 +5,12 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/entities/entities.go b/exchange/entities/entities.go
index 1220da5c812..f106003d8ca 100644
--- a/exchange/entities/entities.go
+++ b/exchange/entities/entities.go
@@ -2,7 +2,7 @@ package entities
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// PbsOrtbSeatBid is a SeatBid returned by an AdaptedBidder.
diff --git a/exchange/events.go b/exchange/events.go
index fb535f6f70e..b20eea328f6 100644
--- a/exchange/events.go
+++ b/exchange/events.go
@@ -3,14 +3,14 @@ package exchange
import (
"time"
- "github.com/prebid/prebid-server/exchange/entities"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
- "github.com/prebid/prebid-server/analytics"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/endpoints/events"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/analytics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/endpoints/events"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// eventTracking has configuration fields needed for adding event tracking to an auction response
diff --git a/exchange/events_test.go b/exchange/events_test.go
index 24dedf1a6f1..3d191f5f63c 100644
--- a/exchange/events_test.go
+++ b/exchange/events_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/exchange.go b/exchange/exchange.go
index 6ebde7dca9d..b07c4bdf2a5 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -14,29 +14,29 @@ import (
"strings"
"time"
- "github.com/prebid/prebid-server/privacy"
-
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/adservertargeting"
- "github.com/prebid/prebid-server/bidadjustment"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/firstpartydata"
- "github.com/prebid/prebid-server/floors"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_responses"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/maputil"
+ "github.com/prebid/prebid-server/v2/privacy"
+
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/adservertargeting"
+ "github.com/prebid/prebid-server/v2/bidadjustment"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/firstpartydata"
+ "github.com/prebid/prebid-server/v2/floors"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_responses"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/maputil"
"github.com/buger/jsonparser"
"github.com/gofrs/uuid"
diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go
index ff989bad91d..bfeb9374af3 100644
--- a/exchange/exchange_test.go
+++ b/exchange/exchange_test.go
@@ -21,28 +21,28 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- metricsConf "github.com/prebid/prebid-server/metrics/config"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- pbc "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/file_fetcher"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConf "github.com/prebid/prebid-server/v2/metrics/config"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ pbc "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/file_fetcher"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
diff --git a/exchange/gdpr.go b/exchange/gdpr.go
index d503eb5da27..52fb860f5df 100644
--- a/exchange/gdpr.go
+++ b/exchange/gdpr.go
@@ -3,9 +3,9 @@ package exchange
import (
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/openrtb_ext"
- gppPolicy "github.com/prebid/prebid-server/privacy/gpp"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ gppPolicy "github.com/prebid/prebid-server/v2/privacy/gpp"
)
// getGDPR will pull the gdpr flag from an openrtb request
diff --git a/exchange/gdpr_test.go b/exchange/gdpr_test.go
index 44573b59167..0e12ec66568 100644
--- a/exchange/gdpr_test.go
+++ b/exchange/gdpr_test.go
@@ -7,8 +7,8 @@ import (
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/price_granularity.go b/exchange/price_granularity.go
index af9e46b20fe..ee3104605d7 100644
--- a/exchange/price_granularity.go
+++ b/exchange/price_granularity.go
@@ -1,10 +1,11 @@
package exchange
import (
- "github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
"math"
"strconv"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// GetPriceBucket is the externally facing function for computing CPM buckets
diff --git a/exchange/price_granularity_test.go b/exchange/price_granularity_test.go
index 4f9337aadc3..810dbcdf45a 100644
--- a/exchange/price_granularity_test.go
+++ b/exchange/price_granularity_test.go
@@ -6,8 +6,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/seat_non_bids.go b/exchange/seat_non_bids.go
index 463a4595c85..78c1b23e3f3 100644
--- a/exchange/seat_non_bids.go
+++ b/exchange/seat_non_bids.go
@@ -1,8 +1,8 @@
package exchange
import (
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type nonBids struct {
diff --git a/exchange/seat_non_bids_test.go b/exchange/seat_non_bids_test.go
index d9f7aa88ca0..1a6b488b542 100644
--- a/exchange/seat_non_bids_test.go
+++ b/exchange/seat_non_bids_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/targeting.go b/exchange/targeting.go
index dbbf10041c9..d278c2f5873 100644
--- a/exchange/targeting.go
+++ b/exchange/targeting.go
@@ -5,7 +5,7 @@ import (
"strconv"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const MaxKeyLength = 20
diff --git a/exchange/targeting_test.go b/exchange/targeting_test.go
index 25c6ea1714a..8742a4f5d2a 100644
--- a/exchange/targeting_test.go
+++ b/exchange/targeting_test.go
@@ -8,16 +8,16 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
diff --git a/exchange/tmax_adjustments.go b/exchange/tmax_adjustments.go
index 29e732995af..55e2b18ad01 100644
--- a/exchange/tmax_adjustments.go
+++ b/exchange/tmax_adjustments.go
@@ -4,7 +4,7 @@ import (
"context"
"time"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
type TmaxAdjustmentsPreprocessed struct {
diff --git a/exchange/tmax_adjustments_test.go b/exchange/tmax_adjustments_test.go
index 7e6a02ab81e..ce6f1736adf 100644
--- a/exchange/tmax_adjustments_test.go
+++ b/exchange/tmax_adjustments_test.go
@@ -4,7 +4,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
)
diff --git a/exchange/utils.go b/exchange/utils.go
index 8b4774a36f4..150fac3ca53 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -15,19 +15,19 @@ import (
gppConstants "github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/firstpartydata"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/privacy/ccpa"
- "github.com/prebid/prebid-server/privacy/lmt"
- "github.com/prebid/prebid-server/schain"
- "github.com/prebid/prebid-server/stored_responses"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/firstpartydata"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/privacy/ccpa"
+ "github.com/prebid/prebid-server/v2/privacy/lmt"
+ "github.com/prebid/prebid-server/v2/schain"
+ "github.com/prebid/prebid-server/v2/stored_responses"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
)
var channelTypeMap = map[metrics.RequestType]config.ChannelType{
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index 3a00c37c7b1..03184b7402d 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -8,20 +8,20 @@ import (
"sort"
"testing"
- "github.com/prebid/prebid-server/stored_responses"
+ "github.com/prebid/prebid-server/v2/stored_responses"
gpplib "github.com/prebid/go-gpp"
"github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/firstpartydata"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/privacy"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/firstpartydata"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/privacy"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
diff --git a/experiment/adscert/inprocesssigner.go b/experiment/adscert/inprocesssigner.go
index 604287f9ed6..eabd35ebb95 100644
--- a/experiment/adscert/inprocesssigner.go
+++ b/experiment/adscert/inprocesssigner.go
@@ -2,12 +2,13 @@ package adscert
import (
"crypto/rand"
+ "time"
+
"github.com/IABTechLab/adscert/pkg/adscert/api"
"github.com/IABTechLab/adscert/pkg/adscert/discovery"
"github.com/IABTechLab/adscert/pkg/adscert/signatory"
"github.com/benbjohnson/clock"
- "github.com/prebid/prebid-server/config"
- "time"
+ "github.com/prebid/prebid-server/v2/config"
)
// inProcessSigner holds the signatory to add adsCert header to requests using in process go library
diff --git a/experiment/adscert/remotesigner.go b/experiment/adscert/remotesigner.go
index 3c9479560b2..d23dad201d3 100644
--- a/experiment/adscert/remotesigner.go
+++ b/experiment/adscert/remotesigner.go
@@ -2,12 +2,13 @@ package adscert
import (
"fmt"
+ "time"
+
"github.com/IABTechLab/adscert/pkg/adscert/api"
"github.com/IABTechLab/adscert/pkg/adscert/signatory"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
- "time"
)
// remoteSigner holds the signatory to add adsCert header to requests using remote signing server
diff --git a/experiment/adscert/signer.go b/experiment/adscert/signer.go
index 08b3f655fa2..f060f957149 100644
--- a/experiment/adscert/signer.go
+++ b/experiment/adscert/signer.go
@@ -2,10 +2,11 @@ package adscert
import (
"fmt"
+
"github.com/IABTechLab/adscert/pkg/adscert/api"
"github.com/IABTechLab/adscert/pkg/adscert/logger"
"github.com/IABTechLab/adscert/pkg/adscert/signatory"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
const SignHeader = "X-Ads-Cert-Auth"
diff --git a/experiment/adscert/signer_test.go b/experiment/adscert/signer_test.go
index d6d02175d95..fceb2e5c79c 100644
--- a/experiment/adscert/signer_test.go
+++ b/experiment/adscert/signer_test.go
@@ -2,10 +2,11 @@ package adscert
import (
"errors"
+ "testing"
+
"github.com/IABTechLab/adscert/pkg/adscert/api"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
- "testing"
)
func TestNilSigner(t *testing.T) {
diff --git a/firstpartydata/extmerger.go b/firstpartydata/extmerger.go
index 119fa8a4c3c..f3196bea996 100644
--- a/firstpartydata/extmerger.go
+++ b/firstpartydata/extmerger.go
@@ -5,7 +5,7 @@ import (
"errors"
"fmt"
- "github.com/prebid/prebid-server/util/sliceutil"
+ "github.com/prebid/prebid-server/v2/util/sliceutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
diff --git a/firstpartydata/extmerger_test.go b/firstpartydata/extmerger_test.go
index 784163ac313..4107b0d1144 100644
--- a/firstpartydata/extmerger_test.go
+++ b/firstpartydata/extmerger_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/util/sliceutil"
+ "github.com/prebid/prebid-server/v2/util/sliceutil"
"github.com/stretchr/testify/assert"
)
diff --git a/firstpartydata/first_party_data.go b/firstpartydata/first_party_data.go
index b23ba576fcf..8e482ce700b 100644
--- a/firstpartydata/first_party_data.go
+++ b/firstpartydata/first_party_data.go
@@ -7,11 +7,11 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/ortb"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/ortb"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
)
const (
diff --git a/firstpartydata/first_party_data_test.go b/firstpartydata/first_party_data_test.go
index 61369738bf3..aa00c981fa7 100644
--- a/firstpartydata/first_party_data_test.go
+++ b/firstpartydata/first_party_data_test.go
@@ -8,9 +8,9 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/floors/enforce.go b/floors/enforce.go
index 9318c9d278e..e1f4d8d015b 100644
--- a/floors/enforce.go
+++ b/floors/enforce.go
@@ -6,10 +6,10 @@ import (
"math/rand"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Enforce does floors enforcement for bids from all bidders based on floors provided in request, account level floors config
diff --git a/floors/enforce_test.go b/floors/enforce_test.go
index 725ac22b193..085506c3411 100644
--- a/floors/enforce_test.go
+++ b/floors/enforce_test.go
@@ -7,11 +7,11 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/floors/floors.go b/floors/floors.go
index 52591915058..c1e930298ac 100644
--- a/floors/floors.go
+++ b/floors/floors.go
@@ -5,9 +5,9 @@ import (
"math"
"math/rand"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type Price struct {
diff --git a/floors/floors_test.go b/floors/floors_test.go
index b3002c2f155..56b21a1a209 100644
--- a/floors/floors_test.go
+++ b/floors/floors_test.go
@@ -6,10 +6,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/floors/rule.go b/floors/rule.go
index f5f74cb6acf..db12719c337 100644
--- a/floors/rule.go
+++ b/floors/rule.go
@@ -9,8 +9,8 @@ import (
"github.com/golang/glog"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/floors/rule_test.go b/floors/rule_test.go
index 7c484a7c95f..1e75956243d 100644
--- a/floors/rule_test.go
+++ b/floors/rule_test.go
@@ -6,8 +6,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/floors/validate.go b/floors/validate.go
index 5624735c852..5dd843b13e0 100644
--- a/floors/validate.go
+++ b/floors/validate.go
@@ -4,8 +4,8 @@ import (
"fmt"
"strings"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
var validSchemaDimensions = map[string]struct{}{
diff --git a/floors/validate_test.go b/floors/validate_test.go
index 96dad819e06..59d08afc5c0 100644
--- a/floors/validate_test.go
+++ b/floors/validate_test.go
@@ -5,8 +5,8 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/aggregated_config.go b/gdpr/aggregated_config.go
index bbfb503225d..4bd1533de0f 100644
--- a/gdpr/aggregated_config.go
+++ b/gdpr/aggregated_config.go
@@ -3,8 +3,8 @@ package gdpr
import (
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// TCF2ConfigReader is an interface to access TCF2 configurations
diff --git a/gdpr/aggregated_config_test.go b/gdpr/aggregated_config_test.go
index bf2d3bbb8f8..54d1c901853 100644
--- a/gdpr/aggregated_config_test.go
+++ b/gdpr/aggregated_config_test.go
@@ -5,8 +5,8 @@ import (
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/basic_enforcement.go b/gdpr/basic_enforcement.go
index f4559c4643d..322bb30986f 100644
--- a/gdpr/basic_enforcement.go
+++ b/gdpr/basic_enforcement.go
@@ -2,7 +2,7 @@ package gdpr
import (
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// BasicEnforcement determines if legal basis is satisfied for a given purpose and bidder using
diff --git a/gdpr/basic_enforcement_test.go b/gdpr/basic_enforcement_test.go
index c49e59ea595..06472618a83 100644
--- a/gdpr/basic_enforcement_test.go
+++ b/gdpr/basic_enforcement_test.go
@@ -6,7 +6,7 @@ import (
"github.com/prebid/go-gdpr/consentconstants"
"github.com/prebid/go-gdpr/vendorconsent"
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/full_enforcement.go b/gdpr/full_enforcement.go
index eefa28d5499..c872e13e454 100644
--- a/gdpr/full_enforcement.go
+++ b/gdpr/full_enforcement.go
@@ -2,7 +2,7 @@ package gdpr
import (
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/gdpr/full_enforcement_test.go b/gdpr/full_enforcement_test.go
index 4a859ecaabb..dac9d7ef76a 100644
--- a/gdpr/full_enforcement_test.go
+++ b/gdpr/full_enforcement_test.go
@@ -8,8 +8,8 @@ import (
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
"github.com/prebid/go-gdpr/vendorlist"
"github.com/prebid/go-gdpr/vendorlist2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/gdpr.go b/gdpr/gdpr.go
index db6aa125383..1b4f6cb4680 100644
--- a/gdpr/gdpr.go
+++ b/gdpr/gdpr.go
@@ -3,8 +3,8 @@ package gdpr
import (
"context"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type Permissions interface {
diff --git a/gdpr/gdpr_test.go b/gdpr/gdpr_test.go
index 1e56c5fdede..9604e24f4f0 100644
--- a/gdpr/gdpr_test.go
+++ b/gdpr/gdpr_test.go
@@ -6,8 +6,8 @@ import (
"github.com/prebid/go-gdpr/consentconstants"
"github.com/prebid/go-gdpr/vendorlist"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/impl.go b/gdpr/impl.go
index cc88a1fd3c6..fd3ad2b2dd9 100644
--- a/gdpr/impl.go
+++ b/gdpr/impl.go
@@ -6,7 +6,7 @@ import (
"github.com/prebid/go-gdpr/api"
"github.com/prebid/go-gdpr/consentconstants"
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const noBidder openrtb_ext.BidderName = ""
diff --git a/gdpr/impl_test.go b/gdpr/impl_test.go
index 835a580f6e2..fc3d69d9c57 100644
--- a/gdpr/impl_test.go
+++ b/gdpr/impl_test.go
@@ -9,8 +9,8 @@ import (
"github.com/prebid/go-gdpr/consentconstants"
"github.com/prebid/go-gdpr/vendorlist"
"github.com/prebid/go-gdpr/vendorlist2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/purpose_config.go b/gdpr/purpose_config.go
index 015f23269ef..09edef94384 100644
--- a/gdpr/purpose_config.go
+++ b/gdpr/purpose_config.go
@@ -2,8 +2,8 @@ package gdpr
import (
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// purposeConfig represents all of the config info selected from the host and account configs for
diff --git a/gdpr/purpose_config_test.go b/gdpr/purpose_config_test.go
index e80733cc8ca..4837b62a2aa 100644
--- a/gdpr/purpose_config_test.go
+++ b/gdpr/purpose_config_test.go
@@ -3,7 +3,7 @@ package gdpr
import (
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/purpose_enforcer.go b/gdpr/purpose_enforcer.go
index c8e76f988aa..4a138e76cf8 100644
--- a/gdpr/purpose_enforcer.go
+++ b/gdpr/purpose_enforcer.go
@@ -4,8 +4,8 @@ import (
"github.com/prebid/go-gdpr/api"
"github.com/prebid/go-gdpr/consentconstants"
tcf2 "github.com/prebid/go-gdpr/vendorconsent/tcf2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// PurposeEnforcer represents the enforcement strategy for determining if legal basis is achieved for a purpose
diff --git a/gdpr/purpose_enforcer_test.go b/gdpr/purpose_enforcer_test.go
index ea2075d9c65..ed1176b12f3 100644
--- a/gdpr/purpose_enforcer_test.go
+++ b/gdpr/purpose_enforcer_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/gdpr/signal.go b/gdpr/signal.go
index ed7fe1dd8ea..3d2e4de1251 100644
--- a/gdpr/signal.go
+++ b/gdpr/signal.go
@@ -3,7 +3,7 @@ package gdpr
import (
"strconv"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
type Signal int
diff --git a/gdpr/vendorlist-fetching.go b/gdpr/vendorlist-fetching.go
index da6bdbae415..64424f5ee69 100644
--- a/gdpr/vendorlist-fetching.go
+++ b/gdpr/vendorlist-fetching.go
@@ -14,7 +14,7 @@ import (
"github.com/prebid/go-gdpr/api"
"github.com/prebid/go-gdpr/vendorlist"
"github.com/prebid/go-gdpr/vendorlist2"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"golang.org/x/net/context/ctxhttp"
)
diff --git a/gdpr/vendorlist-fetching_test.go b/gdpr/vendorlist-fetching_test.go
index b8c73bbf9a4..98dc4ba5aa3 100644
--- a/gdpr/vendorlist-fetching_test.go
+++ b/gdpr/vendorlist-fetching_test.go
@@ -11,8 +11,8 @@ import (
"github.com/prebid/go-gdpr/api"
"github.com/prebid/go-gdpr/consentconstants"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
func TestFetcherDynamicLoadListExists(t *testing.T) {
diff --git a/go.mod b/go.mod
index e52946fbe1e..912cdaa2aad 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module github.com/prebid/prebid-server
+module github.com/prebid/prebid-server/v2
go 1.20
diff --git a/hooks/empty_plan.go b/hooks/empty_plan.go
index 01e01843324..514d3824898 100644
--- a/hooks/empty_plan.go
+++ b/hooks/empty_plan.go
@@ -1,8 +1,8 @@
package hooks
import (
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
// EmptyPlanBuilder implements the ExecutionPlanBuilder interface
diff --git a/hooks/hookanalytics/analytics_test.go b/hooks/hookanalytics/analytics_test.go
index abf5e7f2ddc..27584cf0d39 100644
--- a/hooks/hookanalytics/analytics_test.go
+++ b/hooks/hookanalytics/analytics_test.go
@@ -3,7 +3,7 @@ package hookanalytics
import (
"testing"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/hooks/hookexecution/context.go b/hooks/hookexecution/context.go
index 5f7cc3ab188..0817078137f 100644
--- a/hooks/hookexecution/context.go
+++ b/hooks/hookexecution/context.go
@@ -4,8 +4,8 @@ import (
"sync"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
// executionContext holds information passed to module's hook during hook execution.
diff --git a/hooks/hookexecution/enricher.go b/hooks/hookexecution/enricher.go
index c3dd5a23339..ff7f8dd562e 100644
--- a/hooks/hookexecution/enricher.go
+++ b/hooks/hookexecution/enricher.go
@@ -5,8 +5,8 @@ import (
"github.com/buger/jsonparser"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
diff --git a/hooks/hookexecution/enricher_test.go b/hooks/hookexecution/enricher_test.go
index 24f0f1c1d45..e0732dfe13b 100644
--- a/hooks/hookexecution/enricher_test.go
+++ b/hooks/hookexecution/enricher_test.go
@@ -7,10 +7,10 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookanalytics"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/hooks/hookexecution/errors.go b/hooks/hookexecution/errors.go
index b1cf912ccee..1d016e26019 100644
--- a/hooks/hookexecution/errors.go
+++ b/hooks/hookexecution/errors.go
@@ -3,7 +3,7 @@ package hookexecution
import (
"fmt"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
// TimeoutError indicates exceeding of the max execution time allotted for hook.
diff --git a/hooks/hookexecution/execution.go b/hooks/hookexecution/execution.go
index 18c927896b9..90ee9b46a9c 100644
--- a/hooks/hookexecution/execution.go
+++ b/hooks/hookexecution/execution.go
@@ -7,9 +7,9 @@ import (
"sync"
"time"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/metrics"
)
type hookResponse[T any] struct {
diff --git a/hooks/hookexecution/executor.go b/hooks/hookexecution/executor.go
index 5074d4b9ab9..dd6953fb73c 100644
--- a/hooks/hookexecution/executor.go
+++ b/hooks/hookexecution/executor.go
@@ -6,13 +6,13 @@ import (
"sync"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/hooks/hookexecution/executor_test.go b/hooks/hookexecution/executor_test.go
index 68b990bb595..6f50e089b40 100644
--- a/hooks/hookexecution/executor_test.go
+++ b/hooks/hookexecution/executor_test.go
@@ -9,15 +9,15 @@ import (
"time"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookanalytics"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/metrics"
- metricsConfig "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConfig "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
diff --git a/hooks/hookexecution/mocks_test.go b/hooks/hookexecution/mocks_test.go
index ff543c38a07..420a44e8fe9 100644
--- a/hooks/hookexecution/mocks_test.go
+++ b/hooks/hookexecution/mocks_test.go
@@ -5,8 +5,8 @@ import (
"errors"
"time"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type mockUpdateHeaderEntrypointHook struct{}
diff --git a/hooks/hookexecution/outcome.go b/hooks/hookexecution/outcome.go
index 3eeb7bcef5e..ff8bf1e973e 100644
--- a/hooks/hookexecution/outcome.go
+++ b/hooks/hookexecution/outcome.go
@@ -3,7 +3,7 @@ package hookexecution
import (
"time"
- "github.com/prebid/prebid-server/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
)
// Status indicates the result of hook execution.
diff --git a/hooks/hookexecution/test_utils.go b/hooks/hookexecution/test_utils.go
index 2a604d851f5..32ae9fd7a22 100644
--- a/hooks/hookexecution/test_utils.go
+++ b/hooks/hookexecution/test_utils.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/hooks/hookstage/allprocessedbidresponses.go b/hooks/hookstage/allprocessedbidresponses.go
index 3f90c5624ee..233a68b6efd 100644
--- a/hooks/hookstage/allprocessedbidresponses.go
+++ b/hooks/hookstage/allprocessedbidresponses.go
@@ -3,8 +3,8 @@ package hookstage
import (
"context"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// AllProcessedBidResponses hooks are invoked over a list of all
diff --git a/hooks/hookstage/invocation.go b/hooks/hookstage/invocation.go
index 7f465382b20..73b210957e2 100644
--- a/hooks/hookstage/invocation.go
+++ b/hooks/hookstage/invocation.go
@@ -3,7 +3,7 @@ package hookstage
import (
"encoding/json"
- "github.com/prebid/prebid-server/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
)
// HookResult represents the result of execution the concrete hook instance.
diff --git a/hooks/hookstage/processedauctionrequest.go b/hooks/hookstage/processedauctionrequest.go
index fe06bc6fdbd..9ee06fabb2f 100644
--- a/hooks/hookstage/processedauctionrequest.go
+++ b/hooks/hookstage/processedauctionrequest.go
@@ -3,7 +3,7 @@ package hookstage
import (
"context"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// ProcessedAuctionRequest hooks are invoked after the request is parsed
diff --git a/hooks/hookstage/rawbidderresponse.go b/hooks/hookstage/rawbidderresponse.go
index d450d6d0681..7d08a7d2e02 100644
--- a/hooks/hookstage/rawbidderresponse.go
+++ b/hooks/hookstage/rawbidderresponse.go
@@ -3,7 +3,7 @@ package hookstage
import (
"context"
- "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/v2/adapters"
)
// RawBidderResponse hooks are invoked for each bidder participating in auction.
diff --git a/hooks/hookstage/rawbidderresponse_mutations.go b/hooks/hookstage/rawbidderresponse_mutations.go
index 61c0de10bde..efab874fa15 100644
--- a/hooks/hookstage/rawbidderresponse_mutations.go
+++ b/hooks/hookstage/rawbidderresponse_mutations.go
@@ -3,7 +3,7 @@ package hookstage
import (
"errors"
- "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/v2/adapters"
)
func (c *ChangeSet[T]) RawBidderResponse() ChangeSetRawBidderResponse[T] {
diff --git a/hooks/plan.go b/hooks/plan.go
index c6fda959762..a3a0e9af661 100644
--- a/hooks/plan.go
+++ b/hooks/plan.go
@@ -4,8 +4,8 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
type Stage string
diff --git a/hooks/plan_test.go b/hooks/plan_test.go
index 8af49b42e17..064403cb8cf 100644
--- a/hooks/plan_test.go
+++ b/hooks/plan_test.go
@@ -5,9 +5,9 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/hooks/repo.go b/hooks/repo.go
index 40276701b34..3d8db581bda 100644
--- a/hooks/repo.go
+++ b/hooks/repo.go
@@ -3,7 +3,7 @@ package hooks
import (
"fmt"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
// HookRepository is the interface that exposes methods
diff --git a/hooks/repo_test.go b/hooks/repo_test.go
index ae523c98773..1ffbf0bfbed 100644
--- a/hooks/repo_test.go
+++ b/hooks/repo_test.go
@@ -5,7 +5,7 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/macros/provider.go b/macros/provider.go
index 0b0fc0de454..3cae540e22a 100644
--- a/macros/provider.go
+++ b/macros/provider.go
@@ -5,8 +5,8 @@ import (
"strconv"
"time"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const (
diff --git a/macros/provider_test.go b/macros/provider_test.go
index b6465a7f2e6..ee9663e3269 100644
--- a/macros/provider_test.go
+++ b/macros/provider_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/macros/string_index_based_replacer_test.go b/macros/string_index_based_replacer_test.go
index 97379a6d965..c9a05a83df4 100644
--- a/macros/string_index_based_replacer_test.go
+++ b/macros/string_index_based_replacer_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/exchange/entities"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/exchange/entities"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/main.go b/main.go
index a83266665f0..e72f02f1f0e 100644
--- a/main.go
+++ b/main.go
@@ -8,12 +8,12 @@ import (
"runtime"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/router"
- "github.com/prebid/prebid-server/server"
- "github.com/prebid/prebid-server/util/task"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/router"
+ "github.com/prebid/prebid-server/v2/server"
+ "github.com/prebid/prebid-server/v2/util/task"
"github.com/golang/glog"
"github.com/spf13/viper"
diff --git a/main_test.go b/main_test.go
index 25812ba96ab..79ae373d473 100644
--- a/main_test.go
+++ b/main_test.go
@@ -4,7 +4,7 @@ import (
"os"
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
"github.com/spf13/viper"
diff --git a/metrics/config/metrics.go b/metrics/config/metrics.go
index d5cb00344ec..7ed387512fd 100644
--- a/metrics/config/metrics.go
+++ b/metrics/config/metrics.go
@@ -3,10 +3,10 @@ package config
import (
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- prometheusmetrics "github.com/prebid/prebid-server/metrics/prometheus"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ prometheusmetrics "github.com/prebid/prebid-server/v2/metrics/prometheus"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
gometrics "github.com/rcrowley/go-metrics"
influxdb "github.com/vrischmann/go-metrics-influxdb"
)
diff --git a/metrics/config/metrics_test.go b/metrics/config/metrics_test.go
index 1eae1a25545..5badc348e61 100644
--- a/metrics/config/metrics_test.go
+++ b/metrics/config/metrics_test.go
@@ -6,9 +6,9 @@ import (
"testing"
"time"
- mainConfig "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ mainConfig "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
gometrics "github.com/rcrowley/go-metrics"
)
diff --git a/metrics/go_metrics.go b/metrics/go_metrics.go
index 13cc022c9c8..5bc4ab965f6 100644
--- a/metrics/go_metrics.go
+++ b/metrics/go_metrics.go
@@ -7,8 +7,8 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
metrics "github.com/rcrowley/go-metrics"
)
diff --git a/metrics/go_metrics_test.go b/metrics/go_metrics_test.go
index 08ee65f52ac..05529220f16 100644
--- a/metrics/go_metrics_test.go
+++ b/metrics/go_metrics_test.go
@@ -5,8 +5,8 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
metrics "github.com/rcrowley/go-metrics"
"github.com/stretchr/testify/assert"
)
diff --git a/metrics/metrics.go b/metrics/metrics.go
index 0c3025bd296..7d3dc819341 100644
--- a/metrics/metrics.go
+++ b/metrics/metrics.go
@@ -3,7 +3,7 @@ package metrics
import (
"time"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Labels defines the labels that can be attached to the metrics.
diff --git a/metrics/metrics_mock.go b/metrics/metrics_mock.go
index eb092f0d972..ef9fdcaf7a4 100644
--- a/metrics/metrics_mock.go
+++ b/metrics/metrics_mock.go
@@ -3,7 +3,7 @@ package metrics
import (
"time"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/mock"
)
diff --git a/metrics/prometheus/preload.go b/metrics/prometheus/preload.go
index db40feabbd8..a4a70017355 100644
--- a/metrics/prometheus/preload.go
+++ b/metrics/prometheus/preload.go
@@ -1,8 +1,8 @@
package prometheusmetrics
import (
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prometheus/client_golang/prometheus"
)
diff --git a/metrics/prometheus/prometheus.go b/metrics/prometheus/prometheus.go
index bd63997f0d2..6bd30544662 100644
--- a/metrics/prometheus/prometheus.go
+++ b/metrics/prometheus/prometheus.go
@@ -6,9 +6,9 @@ import (
"strings"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prometheus/client_golang/prometheus"
promCollector "github.com/prometheus/client_golang/prometheus/collectors"
)
diff --git a/metrics/prometheus/prometheus_test.go b/metrics/prometheus/prometheus_test.go
index a2b0e84d2ea..a74c8b6c0fa 100644
--- a/metrics/prometheus/prometheus_test.go
+++ b/metrics/prometheus/prometheus_test.go
@@ -5,9 +5,9 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
"github.com/stretchr/testify/assert"
diff --git a/modules/builder.go b/modules/builder.go
index ffb814e6407..e5d04e149af 100644
--- a/modules/builder.go
+++ b/modules/builder.go
@@ -1,7 +1,7 @@
package modules
import (
- prebidOrtb2blocking "github.com/prebid/prebid-server/modules/prebid/ortb2blocking"
+ prebidOrtb2blocking "github.com/prebid/prebid-server/v2/modules/prebid/ortb2blocking"
)
// builders returns mapping between module name and its builder
diff --git a/modules/generator/builder.tmpl b/modules/generator/builder.tmpl
index f89cc21c87f..b7b78103dbe 100644
--- a/modules/generator/builder.tmpl
+++ b/modules/generator/builder.tmpl
@@ -3,7 +3,7 @@ package modules
{{if .}}
import (
{{- range .}}
- {{.Vendor}}{{.Module | Title}} "github.com/prebid/prebid-server/modules/{{.Vendor}}/{{.Module}}"
+ {{.Vendor}}{{.Module | Title}} "github.com/prebid/prebid-server/v2/modules/{{.Vendor}}/{{.Module}}"
{{- end}}
)
{{end}}
diff --git a/modules/helpers.go b/modules/helpers.go
index c7fe9f73f31..10890743691 100644
--- a/modules/helpers.go
+++ b/modules/helpers.go
@@ -4,8 +4,8 @@ import (
"fmt"
"strings"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
var moduleReplacer = strings.NewReplacer(".", "_", "-", "_")
diff --git a/modules/modules.go b/modules/modules.go
index 4e60a9eda32..f3ccd6b1ece 100644
--- a/modules/modules.go
+++ b/modules/modules.go
@@ -5,10 +5,10 @@ import (
"fmt"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/modules/moduledeps"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/modules/moduledeps"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
//go:generate go run ./generator/buildergen.go
diff --git a/modules/modules_test.go b/modules/modules_test.go
index f88a48a2c44..008c1e75c51 100644
--- a/modules/modules_test.go
+++ b/modules/modules_test.go
@@ -9,10 +9,10 @@ import (
"net/http"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/modules/moduledeps"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/modules/moduledeps"
"github.com/stretchr/testify/assert"
)
diff --git a/modules/prebid/ortb2blocking/analytics.go b/modules/prebid/ortb2blocking/analytics.go
index 4026b6722b9..1309858c7b6 100644
--- a/modules/prebid/ortb2blocking/analytics.go
+++ b/modules/prebid/ortb2blocking/analytics.go
@@ -1,8 +1,8 @@
package ortb2blocking
import (
- "github.com/prebid/prebid-server/hooks/hookanalytics"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
const enforceBlockingTag = "enforce_blocking"
diff --git a/modules/prebid/ortb2blocking/config.go b/modules/prebid/ortb2blocking/config.go
index 74841eb5b33..4b832cb1977 100644
--- a/modules/prebid/ortb2blocking/config.go
+++ b/modules/prebid/ortb2blocking/config.go
@@ -5,7 +5,7 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/adcom1"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
func newConfig(data json.RawMessage) (config, error) {
diff --git a/modules/prebid/ortb2blocking/hook_bidderrequest.go b/modules/prebid/ortb2blocking/hook_bidderrequest.go
index 8f7ce42021c..0bd990eb50c 100644
--- a/modules/prebid/ortb2blocking/hook_bidderrequest.go
+++ b/modules/prebid/ortb2blocking/hook_bidderrequest.go
@@ -7,9 +7,9 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
func handleBidderRequestHook(
diff --git a/modules/prebid/ortb2blocking/hook_raw_bidder_response.go b/modules/prebid/ortb2blocking/hook_raw_bidder_response.go
index 1c51256211b..615ceda9e04 100644
--- a/modules/prebid/ortb2blocking/hook_raw_bidder_response.go
+++ b/modules/prebid/ortb2blocking/hook_raw_bidder_response.go
@@ -7,9 +7,9 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
)
func handleRawBidderResponseHook(
diff --git a/modules/prebid/ortb2blocking/module.go b/modules/prebid/ortb2blocking/module.go
index 7386aa62bad..93ca15ff31e 100644
--- a/modules/prebid/ortb2blocking/module.go
+++ b/modules/prebid/ortb2blocking/module.go
@@ -5,8 +5,8 @@ import (
"encoding/json"
"github.com/prebid/openrtb/v19/adcom1"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/modules/moduledeps"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/modules/moduledeps"
)
func Builder(_ json.RawMessage, _ moduledeps.ModuleDeps) (interface{}, error) {
diff --git a/modules/prebid/ortb2blocking/module_test.go b/modules/prebid/ortb2blocking/module_test.go
index ecae5ca8c0a..b4499a4bbfb 100644
--- a/modules/prebid/ortb2blocking/module_test.go
+++ b/modules/prebid/ortb2blocking/module_test.go
@@ -8,11 +8,11 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/adapters"
- "github.com/prebid/prebid-server/hooks/hookanalytics"
- "github.com/prebid/prebid-server/hooks/hookexecution"
- "github.com/prebid/prebid-server/hooks/hookstage"
- "github.com/prebid/prebid-server/modules/moduledeps"
+ "github.com/prebid/prebid-server/v2/adapters"
+ "github.com/prebid/prebid-server/v2/hooks/hookanalytics"
+ "github.com/prebid/prebid-server/v2/hooks/hookexecution"
+ "github.com/prebid/prebid-server/v2/hooks/hookstage"
+ "github.com/prebid/prebid-server/v2/modules/moduledeps"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/convert_down_test.go b/openrtb_ext/convert_down_test.go
index 3b78337df8b..a72ba3a48ad 100644
--- a/openrtb_ext/convert_down_test.go
+++ b/openrtb_ext/convert_down_test.go
@@ -6,7 +6,7 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/deal_tier.go b/openrtb_ext/deal_tier.go
index df386916b77..b1d8ee11bc2 100644
--- a/openrtb_ext/deal_tier.go
+++ b/openrtb_ext/deal_tier.go
@@ -2,7 +2,7 @@ package openrtb_ext
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// DealTier defines the configuration of a deal tier.
diff --git a/openrtb_ext/deal_tier_test.go b/openrtb_ext/deal_tier_test.go
index dabecf6a9e7..b8607748ca9 100644
--- a/openrtb_ext/deal_tier_test.go
+++ b/openrtb_ext/deal_tier_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/device.go b/openrtb_ext/device.go
index 8c5b36733b9..0888d06160f 100644
--- a/openrtb_ext/device.go
+++ b/openrtb_ext/device.go
@@ -6,7 +6,7 @@ import (
"strconv"
"github.com/buger/jsonparser"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
// PrebidExtKey represents the prebid extension key used in requests
diff --git a/openrtb_ext/device_test.go b/openrtb_ext/device_test.go
index 86a0e1d7ff2..f40e9650061 100644
--- a/openrtb_ext/device_test.go
+++ b/openrtb_ext/device_test.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/imp_appnexus.go b/openrtb_ext/imp_appnexus.go
index 02476d6bcf0..db949f661fd 100644
--- a/openrtb_ext/imp_appnexus.go
+++ b/openrtb_ext/imp_appnexus.go
@@ -5,7 +5,7 @@ import (
"fmt"
"strings"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// ExtImpAppnexus defines the contract for bidrequest.imp[i].ext.prebid.bidder.appnexus
diff --git a/openrtb_ext/imp_appnexus_test.go b/openrtb_ext/imp_appnexus_test.go
index a226c0d8410..9d65f3be3ad 100644
--- a/openrtb_ext/imp_appnexus_test.go
+++ b/openrtb_ext/imp_appnexus_test.go
@@ -3,7 +3,7 @@ package openrtb_ext
import (
"testing"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/imp_freewheelssp.go b/openrtb_ext/imp_freewheelssp.go
index 110f018f512..3d015d96722 100644
--- a/openrtb_ext/imp_freewheelssp.go
+++ b/openrtb_ext/imp_freewheelssp.go
@@ -1,7 +1,7 @@
package openrtb_ext
import (
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type ImpExtFreewheelSSP struct {
diff --git a/openrtb_ext/multibid_test.go b/openrtb_ext/multibid_test.go
index a27631d6891..926ab261b0f 100644
--- a/openrtb_ext/multibid_test.go
+++ b/openrtb_ext/multibid_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/request.go b/openrtb_ext/request.go
index 3a41fdf0dbb..1a98e34d13f 100644
--- a/openrtb_ext/request.go
+++ b/openrtb_ext/request.go
@@ -5,10 +5,10 @@ import (
"fmt"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/maputil"
- "github.com/prebid/prebid-server/util/ptrutil"
- "github.com/prebid/prebid-server/util/sliceutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/maputil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/sliceutil"
)
// FirstPartyDataExtKey defines a field name within request.ext and request.imp.ext reserved for first party data.
diff --git a/openrtb_ext/request_test.go b/openrtb_ext/request_test.go
index ad6a655b022..3163150e57c 100644
--- a/openrtb_ext/request_test.go
+++ b/openrtb_ext/request_test.go
@@ -6,8 +6,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/request_wrapper.go b/openrtb_ext/request_wrapper.go
index 09321e5b0b3..5adc192d36f 100644
--- a/openrtb_ext/request_wrapper.go
+++ b/openrtb_ext/request_wrapper.go
@@ -5,10 +5,10 @@ import (
"errors"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/maputil"
- "github.com/prebid/prebid-server/util/ptrutil"
- "github.com/prebid/prebid-server/util/sliceutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/maputil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/sliceutil"
)
// RequestWrapper wraps the OpenRTB request to provide a storage location for unmarshalled ext fields, so they
diff --git a/openrtb_ext/request_wrapper_test.go b/openrtb_ext/request_wrapper_test.go
index 0127c545274..bd55c86beb2 100644
--- a/openrtb_ext/request_wrapper_test.go
+++ b/openrtb_ext/request_wrapper_test.go
@@ -5,8 +5,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/site_test.go b/openrtb_ext/site_test.go
index 7a7140282f2..f6fb04c50ee 100644
--- a/openrtb_ext/site_test.go
+++ b/openrtb_ext/site_test.go
@@ -3,8 +3,8 @@ package openrtb_ext_test
import (
"testing"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/openrtb_ext/supplyChain.go b/openrtb_ext/supplyChain.go
index 6f023542dfb..0ccbd0957fa 100644
--- a/openrtb_ext/supplyChain.go
+++ b/openrtb_ext/supplyChain.go
@@ -2,7 +2,7 @@ package openrtb_ext
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
)
func cloneSupplyChain(schain *openrtb2.SupplyChain) *openrtb2.SupplyChain {
diff --git a/openrtb_ext/supplyChain_test.go b/openrtb_ext/supplyChain_test.go
index 12fd5c337fb..728fbc68cc4 100644
--- a/openrtb_ext/supplyChain_test.go
+++ b/openrtb_ext/supplyChain_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/ortb/clone.go b/ortb/clone.go
index c0e5a4ddada..0dd210a986e 100644
--- a/ortb/clone.go
+++ b/ortb/clone.go
@@ -2,8 +2,8 @@ package ortb
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/ptrutil"
- "github.com/prebid/prebid-server/util/sliceutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/sliceutil"
)
func CloneApp(s *openrtb2.App) *openrtb2.App {
diff --git a/ortb/clone_test.go b/ortb/clone_test.go
index 24e43bda1e5..50dd94057ee 100644
--- a/ortb/clone_test.go
+++ b/ortb/clone_test.go
@@ -7,7 +7,7 @@ import (
"github.com/prebid/openrtb/v19/adcom1"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/ortb/default.go b/ortb/default.go
index cd9d8c24759..c5e43e2e770 100644
--- a/ortb/default.go
+++ b/ortb/default.go
@@ -1,8 +1,8 @@
package ortb
import (
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
)
const (
diff --git a/ortb/default_test.go b/ortb/default_test.go
index 8bda02ef4f5..2d99da4bec2 100644
--- a/ortb/default_test.go
+++ b/ortb/default_test.go
@@ -8,10 +8,10 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
)
func TestSetDefaults(t *testing.T) {
diff --git a/pbs/usersync.go b/pbs/usersync.go
index a5b49f6db03..bfe12689177 100644
--- a/pbs/usersync.go
+++ b/pbs/usersync.go
@@ -10,9 +10,9 @@ import (
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/server/ssl"
- "github.com/prebid/prebid-server/usersync"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/server/ssl"
+ "github.com/prebid/prebid-server/v2/usersync"
)
// Recaptcha code from https://github.com/haisum/recaptcha/blob/master/recaptcha.go
diff --git a/prebid_cache_client/client.go b/prebid_cache_client/client.go
index 872420001ea..fb3fb24d9cc 100644
--- a/prebid_cache_client/client.go
+++ b/prebid_cache_client/client.go
@@ -12,8 +12,8 @@ import (
"strings"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
"github.com/buger/jsonparser"
"github.com/golang/glog"
diff --git a/prebid_cache_client/client_test.go b/prebid_cache_client/client_test.go
index f20d3c7829f..f3ee3065ff1 100644
--- a/prebid_cache_client/client_test.go
+++ b/prebid_cache_client/client_test.go
@@ -10,10 +10,10 @@ import (
"strconv"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- metricsConf "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConf "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
diff --git a/privacy/activitycontrol.go b/privacy/activitycontrol.go
index 9d6668b3e44..1bb3fc6cdf6 100644
--- a/privacy/activitycontrol.go
+++ b/privacy/activitycontrol.go
@@ -1,8 +1,8 @@
package privacy
import (
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
type ActivityResult int
diff --git a/privacy/activitycontrol_test.go b/privacy/activitycontrol_test.go
index 743888df029..b8b06ee8886 100644
--- a/privacy/activitycontrol_test.go
+++ b/privacy/activitycontrol_test.go
@@ -3,9 +3,9 @@ package privacy
import (
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/stretchr/testify/assert"
)
diff --git a/privacy/ccpa/consentwriter.go b/privacy/ccpa/consentwriter.go
index 1d65a272f90..339eb3438fb 100644
--- a/privacy/ccpa/consentwriter.go
+++ b/privacy/ccpa/consentwriter.go
@@ -2,7 +2,7 @@ package ccpa
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// ConsentWriter implements the old PolicyWriter interface for CCPA.
diff --git a/privacy/ccpa/consentwriter_test.go b/privacy/ccpa/consentwriter_test.go
index 015f1328f61..e8414a8e2f5 100644
--- a/privacy/ccpa/consentwriter_test.go
+++ b/privacy/ccpa/consentwriter_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/privacy/ccpa/parsedpolicy.go b/privacy/ccpa/parsedpolicy.go
index 7b9c2d1fa7c..056cc99ee1b 100644
--- a/privacy/ccpa/parsedpolicy.go
+++ b/privacy/ccpa/parsedpolicy.go
@@ -4,7 +4,7 @@ import (
"errors"
"fmt"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
const (
diff --git a/privacy/ccpa/policy.go b/privacy/ccpa/policy.go
index fbafd8a8a2e..e5412b7d4c7 100644
--- a/privacy/ccpa/policy.go
+++ b/privacy/ccpa/policy.go
@@ -7,9 +7,9 @@ import (
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/openrtb_ext"
- gppPolicy "github.com/prebid/prebid-server/privacy/gpp"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ gppPolicy "github.com/prebid/prebid-server/v2/privacy/gpp"
)
// Policy represents the CCPA regulatory information from an OpenRTB bid request.
diff --git a/privacy/ccpa/policy_test.go b/privacy/ccpa/policy_test.go
index 3a1433333c0..e18820b221b 100644
--- a/privacy/ccpa/policy_test.go
+++ b/privacy/ccpa/policy_test.go
@@ -8,7 +8,7 @@ import (
gpplib "github.com/prebid/go-gpp"
gppConstants "github.com/prebid/go-gpp/constants"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/privacy/enforcement.go b/privacy/enforcement.go
index 8074d96acf3..901c062ea4e 100644
--- a/privacy/enforcement.go
+++ b/privacy/enforcement.go
@@ -2,7 +2,7 @@ package privacy
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
// Enforcement represents the privacy policies to enforce for an OpenRTB bid request.
diff --git a/privacy/gdpr/consentwriter.go b/privacy/gdpr/consentwriter.go
index 00e3558fd40..25bc2bf0ca0 100644
--- a/privacy/gdpr/consentwriter.go
+++ b/privacy/gdpr/consentwriter.go
@@ -2,7 +2,7 @@ package gdpr
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// ConsentWriter implements the PolicyWriter interface for GDPR TCF.
diff --git a/privacy/lmt/ios.go b/privacy/lmt/ios.go
index 0b308a9ce32..ee08225f8c7 100644
--- a/privacy/lmt/ios.go
+++ b/privacy/lmt/ios.go
@@ -4,8 +4,8 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/iosutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/iosutil"
)
var (
diff --git a/privacy/lmt/ios_test.go b/privacy/lmt/ios_test.go
index 2a679bfbd99..7afaf7843e1 100644
--- a/privacy/lmt/ios_test.go
+++ b/privacy/lmt/ios_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/util/iosutil"
+ "github.com/prebid/prebid-server/v2/util/iosutil"
"github.com/stretchr/testify/assert"
)
diff --git a/privacy/rule_condition_test.go b/privacy/rule_condition_test.go
index bb1d81c00d2..23973bd06d0 100644
--- a/privacy/rule_condition_test.go
+++ b/privacy/rule_condition_test.go
@@ -4,7 +4,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/privacy/scrubber.go b/privacy/scrubber.go
index 0cfc7cdd7f4..54941669ab9 100644
--- a/privacy/scrubber.go
+++ b/privacy/scrubber.go
@@ -4,10 +4,10 @@ import (
"encoding/json"
"net"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/util/iputil"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/ptrutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/ptrutil"
"github.com/prebid/openrtb/v19/openrtb2"
)
diff --git a/privacy/scrubber_test.go b/privacy/scrubber_test.go
index 59e593fc167..299acd9eba3 100644
--- a/privacy/scrubber_test.go
+++ b/privacy/scrubber_test.go
@@ -2,9 +2,10 @@ package privacy
import (
"encoding/json"
- "github.com/prebid/prebid-server/config"
"testing"
+ "github.com/prebid/prebid-server/v2/config"
+
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
)
diff --git a/router/admin.go b/router/admin.go
index 29cdbbe5e23..1be7c8656da 100644
--- a/router/admin.go
+++ b/router/admin.go
@@ -5,9 +5,9 @@ import (
"net/http/pprof"
"time"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/endpoints"
- "github.com/prebid/prebid-server/version"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/endpoints"
+ "github.com/prebid/prebid-server/v2/version"
)
func Admin(rateConverter *currency.RateConverter, rateConverterFetchingInterval time.Duration) *http.ServeMux {
diff --git a/router/aspects/request_timeout_handler.go b/router/aspects/request_timeout_handler.go
index 39a4341f995..7b94c96b11b 100644
--- a/router/aspects/request_timeout_handler.go
+++ b/router/aspects/request_timeout_handler.go
@@ -6,8 +6,8 @@ import (
"time"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
)
func QueuedRequestTimeout(f httprouter.Handle, reqTimeoutHeaders config.RequestTimeoutHeaders, metricsEngine metrics.MetricsEngine, requestType metrics.RequestType) httprouter.Handle {
diff --git a/router/aspects/request_timeout_handler_test.go b/router/aspects/request_timeout_handler_test.go
index 26e546dcd40..4ece14208e8 100644
--- a/router/aspects/request_timeout_handler_test.go
+++ b/router/aspects/request_timeout_handler_test.go
@@ -8,8 +8,8 @@ import (
"time"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
"github.com/stretchr/testify/assert"
)
diff --git a/router/router.go b/router/router.go
index 70b7860d661..0ee9fc7c30e 100644
--- a/router/router.go
+++ b/router/router.go
@@ -10,33 +10,33 @@ import (
"strings"
"time"
- analyticsBuild "github.com/prebid/prebid-server/analytics/build"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/currency"
- "github.com/prebid/prebid-server/endpoints"
- "github.com/prebid/prebid-server/endpoints/events"
- infoEndpoints "github.com/prebid/prebid-server/endpoints/info"
- "github.com/prebid/prebid-server/endpoints/openrtb2"
- "github.com/prebid/prebid-server/errortypes"
- "github.com/prebid/prebid-server/exchange"
- "github.com/prebid/prebid-server/experiment/adscert"
- "github.com/prebid/prebid-server/gdpr"
- "github.com/prebid/prebid-server/hooks"
- "github.com/prebid/prebid-server/macros"
- "github.com/prebid/prebid-server/metrics"
- metricsConf "github.com/prebid/prebid-server/metrics/config"
- "github.com/prebid/prebid-server/modules"
- "github.com/prebid/prebid-server/modules/moduledeps"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/pbs"
- pbc "github.com/prebid/prebid-server/prebid_cache_client"
- "github.com/prebid/prebid-server/router/aspects"
- "github.com/prebid/prebid-server/server/ssl"
- storedRequestsConf "github.com/prebid/prebid-server/stored_requests/config"
- "github.com/prebid/prebid-server/usersync"
- "github.com/prebid/prebid-server/util/jsonutil"
- "github.com/prebid/prebid-server/util/uuidutil"
- "github.com/prebid/prebid-server/version"
+ analyticsBuild "github.com/prebid/prebid-server/v2/analytics/build"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/currency"
+ "github.com/prebid/prebid-server/v2/endpoints"
+ "github.com/prebid/prebid-server/v2/endpoints/events"
+ infoEndpoints "github.com/prebid/prebid-server/v2/endpoints/info"
+ "github.com/prebid/prebid-server/v2/endpoints/openrtb2"
+ "github.com/prebid/prebid-server/v2/errortypes"
+ "github.com/prebid/prebid-server/v2/exchange"
+ "github.com/prebid/prebid-server/v2/experiment/adscert"
+ "github.com/prebid/prebid-server/v2/gdpr"
+ "github.com/prebid/prebid-server/v2/hooks"
+ "github.com/prebid/prebid-server/v2/macros"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsConf "github.com/prebid/prebid-server/v2/metrics/config"
+ "github.com/prebid/prebid-server/v2/modules"
+ "github.com/prebid/prebid-server/v2/modules/moduledeps"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/pbs"
+ pbc "github.com/prebid/prebid-server/v2/prebid_cache_client"
+ "github.com/prebid/prebid-server/v2/router/aspects"
+ "github.com/prebid/prebid-server/v2/server/ssl"
+ storedRequestsConf "github.com/prebid/prebid-server/v2/stored_requests/config"
+ "github.com/prebid/prebid-server/v2/usersync"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/uuidutil"
+ "github.com/prebid/prebid-server/v2/version"
_ "github.com/go-sql-driver/mysql"
"github.com/golang/glog"
diff --git a/router/router_test.go b/router/router_test.go
index f4f7715e6c3..cc2f077e5e6 100644
--- a/router/router_test.go
+++ b/router/router_test.go
@@ -7,9 +7,9 @@ import (
"os"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/schain/schain.go b/schain/schain.go
index 6f084a65a2a..a4139a93f5e 100644
--- a/schain/schain.go
+++ b/schain/schain.go
@@ -5,7 +5,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// BidderToPrebidSChains organizes the ORTB 2.5 multiple root schain nodes into a map of schain nodes by bidder
diff --git a/schain/schain_test.go b/schain/schain_test.go
index dbe38d4014b..310608420d9 100644
--- a/schain/schain_test.go
+++ b/schain/schain_test.go
@@ -4,7 +4,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/schain/schainwriter.go b/schain/schainwriter.go
index e7c9dd4ce72..0873e14f199 100644
--- a/schain/schainwriter.go
+++ b/schain/schainwriter.go
@@ -2,8 +2,8 @@ package schain
import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
// NewSChainWriter creates an ORTB 2.5 schain writer instance
diff --git a/schain/schainwriter_test.go b/schain/schainwriter_test.go
index 9288b531d56..26777306fdf 100644
--- a/schain/schainwriter_test.go
+++ b/schain/schainwriter_test.go
@@ -5,8 +5,8 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/scripts/check_coverage.sh b/scripts/check_coverage.sh
index 0dd6235b96b..63e89297c42 100755
--- a/scripts/check_coverage.sh
+++ b/scripts/check_coverage.sh
@@ -25,8 +25,7 @@ while IFS= read -r LINE; do
if [[ $LINE =~ "%" ]]; then
PERCENT=$(echo "$LINE"|cut -d: -f2-|cut -d% -f1|cut -d. -f1|tr -d ' ')
if [[ $PERCENT -lt $COV_MIN ]]; then
- echo "Package has less than ${COV_MIN}% code coverage. Run ./scripts/coverage.sh --html to see a detailed coverage report, and add tests to improve your coverage"
- exit 1
+ echo "WARNING: Package has less than ${COV_MIN}% code coverage. Run ./scripts/coverage.sh --html to see a detailed coverage report, and add tests to improve your coverage"
fi
fi
done <<< "$OUTPUT"
diff --git a/server/listener.go b/server/listener.go
index 43917ac0a05..a10aef6441e 100644
--- a/server/listener.go
+++ b/server/listener.go
@@ -6,7 +6,7 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/metrics"
)
// monitorableListener tracks any opened connections in the metrics.
diff --git a/server/listener_test.go b/server/listener_test.go
index d10a3bdfbf9..c729f2ba55e 100644
--- a/server/listener_test.go
+++ b/server/listener_test.go
@@ -6,8 +6,8 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
gometrics "github.com/rcrowley/go-metrics"
)
diff --git a/server/prometheus.go b/server/prometheus.go
index 33114c86a0b..8b841f5151a 100644
--- a/server/prometheus.go
+++ b/server/prometheus.go
@@ -7,8 +7,8 @@ import (
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus/promhttp"
- "github.com/prebid/prebid-server/config"
- metricsconfig "github.com/prebid/prebid-server/metrics/config"
+ "github.com/prebid/prebid-server/v2/config"
+ metricsconfig "github.com/prebid/prebid-server/v2/metrics/config"
)
func newPrometheusServer(cfg *config.Configuration, metrics *metricsconfig.DetailedMetricsEngine) *http.Server {
diff --git a/server/server.go b/server/server.go
index 9282f0fcf15..dd4813adb7f 100644
--- a/server/server.go
+++ b/server/server.go
@@ -13,9 +13,9 @@ import (
"github.com/NYTimes/gziphandler"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- metricsconfig "github.com/prebid/prebid-server/metrics/config"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ metricsconfig "github.com/prebid/prebid-server/v2/metrics/config"
)
// Listen blocks forever, serving PBS requests on the given port. This will block forever, until the process is shut down.
diff --git a/server/server_test.go b/server/server_test.go
index 7af892d3567..03a2fc911b5 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -9,8 +9,8 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- metricsconfig "github.com/prebid/prebid-server/metrics/config"
+ "github.com/prebid/prebid-server/v2/config"
+ metricsconfig "github.com/prebid/prebid-server/v2/metrics/config"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/backends/db_fetcher/fetcher.go b/stored_requests/backends/db_fetcher/fetcher.go
index 3ea36bc0fc7..3a9b83f7779 100644
--- a/stored_requests/backends/db_fetcher/fetcher.go
+++ b/stored_requests/backends/db_fetcher/fetcher.go
@@ -7,8 +7,8 @@ import (
"github.com/lib/pq"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
)
func NewFetcher(
diff --git a/stored_requests/backends/db_fetcher/fetcher_test.go b/stored_requests/backends/db_fetcher/fetcher_test.go
index 04753fb8af5..f736e1bea15 100644
--- a/stored_requests/backends/db_fetcher/fetcher_test.go
+++ b/stored_requests/backends/db_fetcher/fetcher_test.go
@@ -11,7 +11,7 @@ import (
"time"
"github.com/DATA-DOG/go-sqlmock"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/backends/db_provider/db_provider.go b/stored_requests/backends/db_provider/db_provider.go
index 0f79a7737e0..6e623356ed8 100644
--- a/stored_requests/backends/db_provider/db_provider.go
+++ b/stored_requests/backends/db_provider/db_provider.go
@@ -5,7 +5,7 @@ import (
"database/sql"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
type DbProvider interface {
diff --git a/stored_requests/backends/db_provider/db_provider_mock.go b/stored_requests/backends/db_provider/db_provider_mock.go
index 3d4cfda76c3..c0ec3458eee 100644
--- a/stored_requests/backends/db_provider/db_provider_mock.go
+++ b/stored_requests/backends/db_provider/db_provider_mock.go
@@ -6,7 +6,7 @@ import (
"reflect"
"github.com/DATA-DOG/go-sqlmock"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
func NewDbProviderMock() (*DbProviderMock, sqlmock.Sqlmock, error) {
diff --git a/stored_requests/backends/db_provider/mysql_dbprovider.go b/stored_requests/backends/db_provider/mysql_dbprovider.go
index 6301a119c45..38ad0836024 100644
--- a/stored_requests/backends/db_provider/mysql_dbprovider.go
+++ b/stored_requests/backends/db_provider/mysql_dbprovider.go
@@ -15,7 +15,7 @@ import (
"strings"
"github.com/go-sql-driver/mysql"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
const customTLSKey = "prebid-tls"
diff --git a/stored_requests/backends/db_provider/mysql_dbprovider_test.go b/stored_requests/backends/db_provider/mysql_dbprovider_test.go
index e47280ef26b..b91352d08d6 100644
--- a/stored_requests/backends/db_provider/mysql_dbprovider_test.go
+++ b/stored_requests/backends/db_provider/mysql_dbprovider_test.go
@@ -6,7 +6,7 @@ import (
"runtime"
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/backends/db_provider/postgres_dbprovider.go b/stored_requests/backends/db_provider/postgres_dbprovider.go
index ef945faebc9..e2081f27df4 100644
--- a/stored_requests/backends/db_provider/postgres_dbprovider.go
+++ b/stored_requests/backends/db_provider/postgres_dbprovider.go
@@ -10,7 +10,7 @@ import (
"strconv"
"strings"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
type PostgresDbProvider struct {
diff --git a/stored_requests/backends/db_provider/postgres_dbprovider_test.go b/stored_requests/backends/db_provider/postgres_dbprovider_test.go
index 9e98c0b5763..4b31e6f8ec3 100644
--- a/stored_requests/backends/db_provider/postgres_dbprovider_test.go
+++ b/stored_requests/backends/db_provider/postgres_dbprovider_test.go
@@ -4,7 +4,7 @@ import (
"errors"
"testing"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/backends/empty_fetcher/fetcher.go b/stored_requests/backends/empty_fetcher/fetcher.go
index 0246990c02e..c851a997df9 100644
--- a/stored_requests/backends/empty_fetcher/fetcher.go
+++ b/stored_requests/backends/empty_fetcher/fetcher.go
@@ -4,7 +4,7 @@ import (
"context"
"encoding/json"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests"
)
// EmptyFetcher is a nil-object which has no Stored Requests.
diff --git a/stored_requests/backends/file_fetcher/fetcher.go b/stored_requests/backends/file_fetcher/fetcher.go
index a9bbe919dcf..21a54039cda 100644
--- a/stored_requests/backends/file_fetcher/fetcher.go
+++ b/stored_requests/backends/file_fetcher/fetcher.go
@@ -7,8 +7,8 @@ import (
"os"
"strings"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
)
diff --git a/stored_requests/backends/file_fetcher/fetcher_test.go b/stored_requests/backends/file_fetcher/fetcher_test.go
index a69945641f1..0155c1aa82c 100644
--- a/stored_requests/backends/file_fetcher/fetcher_test.go
+++ b/stored_requests/backends/file_fetcher/fetcher_test.go
@@ -6,8 +6,8 @@ import (
"fmt"
"testing"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/backends/http_fetcher/fetcher.go b/stored_requests/backends/http_fetcher/fetcher.go
index 88afa39fb1d..75aa1090ce4 100644
--- a/stored_requests/backends/http_fetcher/fetcher.go
+++ b/stored_requests/backends/http_fetcher/fetcher.go
@@ -9,8 +9,8 @@ import (
"net/url"
"strings"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
jsonpatch "gopkg.in/evanphx/json-patch.v4"
"github.com/golang/glog"
diff --git a/stored_requests/backends/http_fetcher/fetcher_test.go b/stored_requests/backends/http_fetcher/fetcher_test.go
index 80be6918ad8..1358ce413c1 100644
--- a/stored_requests/backends/http_fetcher/fetcher_test.go
+++ b/stored_requests/backends/http_fetcher/fetcher_test.go
@@ -10,7 +10,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/caches/cachestest/reliable.go b/stored_requests/caches/cachestest/reliable.go
index 7fbaf7238af..517668318c7 100644
--- a/stored_requests/caches/cachestest/reliable.go
+++ b/stored_requests/caches/cachestest/reliable.go
@@ -5,7 +5,7 @@ import (
"encoding/json"
"testing"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests"
)
const (
diff --git a/stored_requests/caches/memory/cache.go b/stored_requests/caches/memory/cache.go
index 5939c26ddec..eb6317a3487 100644
--- a/stored_requests/caches/memory/cache.go
+++ b/stored_requests/caches/memory/cache.go
@@ -7,7 +7,7 @@ import (
"github.com/coocood/freecache"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests"
)
// NewCache returns an in-memory Cache which evicts items if:
diff --git a/stored_requests/caches/memory/cache_test.go b/stored_requests/caches/memory/cache_test.go
index b89bd5af26f..67ff661c7c5 100644
--- a/stored_requests/caches/memory/cache_test.go
+++ b/stored_requests/caches/memory/cache_test.go
@@ -7,8 +7,8 @@ import (
"strconv"
"testing"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/caches/cachestest"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/cachestest"
)
func TestLRURobustness(t *testing.T) {
diff --git a/stored_requests/config/config.go b/stored_requests/config/config.go
index 9cb349d1f72..112b11122f9 100644
--- a/stored_requests/config/config.go
+++ b/stored_requests/config/config.go
@@ -5,24 +5,24 @@ import (
"net/http"
"time"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/metrics"
"github.com/golang/glog"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/db_fetcher"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/stored_requests/backends/file_fetcher"
- "github.com/prebid/prebid-server/stored_requests/backends/http_fetcher"
- "github.com/prebid/prebid-server/stored_requests/caches/memory"
- "github.com/prebid/prebid-server/stored_requests/caches/nil_cache"
- "github.com/prebid/prebid-server/stored_requests/events"
- apiEvents "github.com/prebid/prebid-server/stored_requests/events/api"
- databaseEvents "github.com/prebid/prebid-server/stored_requests/events/database"
- httpEvents "github.com/prebid/prebid-server/stored_requests/events/http"
- "github.com/prebid/prebid-server/util/task"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/file_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/http_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/memory"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/nil_cache"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
+ apiEvents "github.com/prebid/prebid-server/v2/stored_requests/events/api"
+ databaseEvents "github.com/prebid/prebid-server/v2/stored_requests/events/database"
+ httpEvents "github.com/prebid/prebid-server/v2/stored_requests/events/http"
+ "github.com/prebid/prebid-server/v2/util/task"
)
// CreateStoredRequests returns three things:
diff --git a/stored_requests/config/config_test.go b/stored_requests/config/config_test.go
index b06feea7d31..2e5a8c2a079 100644
--- a/stored_requests/config/config_test.go
+++ b/stored_requests/config/config_test.go
@@ -13,14 +13,14 @@ import (
sqlmock "github.com/DATA-DOG/go-sqlmock"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
- "github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
- "github.com/prebid/prebid-server/stored_requests/backends/http_fetcher"
- "github.com/prebid/prebid-server/stored_requests/events"
- httpEvents "github.com/prebid/prebid-server/stored_requests/events/http"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/empty_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/http_fetcher"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
+ httpEvents "github.com/prebid/prebid-server/v2/stored_requests/events/http"
"github.com/stretchr/testify/mock"
)
diff --git a/stored_requests/events/api/api.go b/stored_requests/events/api/api.go
index 30778f0e11a..2d489bded38 100644
--- a/stored_requests/events/api/api.go
+++ b/stored_requests/events/api/api.go
@@ -5,8 +5,8 @@ import (
"net/http"
"github.com/julienschmidt/httprouter"
- "github.com/prebid/prebid-server/stored_requests/events"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type eventsAPI struct {
diff --git a/stored_requests/events/api/api_test.go b/stored_requests/events/api/api_test.go
index 67ba836cb00..536afe820af 100644
--- a/stored_requests/events/api/api_test.go
+++ b/stored_requests/events/api/api_test.go
@@ -9,9 +9,9 @@ import (
"strings"
"testing"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/caches/memory"
- "github.com/prebid/prebid-server/stored_requests/events"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/memory"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
)
func TestGoodRequests(t *testing.T) {
diff --git a/stored_requests/events/database/database.go b/stored_requests/events/database/database.go
index 24eddf214eb..260a58029cb 100644
--- a/stored_requests/events/database/database.go
+++ b/stored_requests/events/database/database.go
@@ -9,11 +9,11 @@ import (
"time"
"github.com/golang/glog"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
- "github.com/prebid/prebid-server/stored_requests/events"
- "github.com/prebid/prebid-server/util/timeutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
+ "github.com/prebid/prebid-server/v2/util/timeutil"
)
func bytesNull() []byte {
diff --git a/stored_requests/events/database/database_test.go b/stored_requests/events/database/database_test.go
index 8ce21bfde95..27a56b67fe3 100644
--- a/stored_requests/events/database/database_test.go
+++ b/stored_requests/events/database/database_test.go
@@ -7,10 +7,10 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/stored_requests/backends/db_provider"
- "github.com/prebid/prebid-server/stored_requests/events"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/stored_requests/backends/db_provider"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
diff --git a/stored_requests/events/events.go b/stored_requests/events/events.go
index 725df4279d8..e042b7c3513 100644
--- a/stored_requests/events/events.go
+++ b/stored_requests/events/events.go
@@ -4,7 +4,7 @@ import (
"context"
"encoding/json"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests"
)
// Save represents a bulk save
diff --git a/stored_requests/events/events_test.go b/stored_requests/events/events_test.go
index 580f1eddf37..165e6a6beb0 100644
--- a/stored_requests/events/events_test.go
+++ b/stored_requests/events/events_test.go
@@ -7,8 +7,8 @@ import (
"reflect"
"testing"
- "github.com/prebid/prebid-server/stored_requests"
- "github.com/prebid/prebid-server/stored_requests/caches/memory"
+ "github.com/prebid/prebid-server/v2/stored_requests"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/memory"
)
func TestListen(t *testing.T) {
diff --git a/stored_requests/events/http/http.go b/stored_requests/events/http/http.go
index be5b85a03a6..6c2145da2f3 100644
--- a/stored_requests/events/http/http.go
+++ b/stored_requests/events/http/http.go
@@ -12,8 +12,8 @@ import (
"golang.org/x/net/context/ctxhttp"
"github.com/buger/jsonparser"
- "github.com/prebid/prebid-server/stored_requests/events"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/stored_requests/events"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/golang/glog"
)
diff --git a/stored_requests/events/http/http_test.go b/stored_requests/events/http/http_test.go
index 663d8cd193f..fa7f64f227f 100644
--- a/stored_requests/events/http/http_test.go
+++ b/stored_requests/events/http/http_test.go
@@ -8,7 +8,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
"github.com/stretchr/testify/assert"
)
diff --git a/stored_requests/fetcher.go b/stored_requests/fetcher.go
index 433b33427b8..cd3855c9eb8 100644
--- a/stored_requests/fetcher.go
+++ b/stored_requests/fetcher.go
@@ -5,7 +5,7 @@ import (
"encoding/json"
"fmt"
- "github.com/prebid/prebid-server/metrics"
+ "github.com/prebid/prebid-server/v2/metrics"
)
// Fetcher knows how to fetch Stored Request data by id.
diff --git a/stored_requests/fetcher_test.go b/stored_requests/fetcher_test.go
index 684b867165c..34c15f61f96 100644
--- a/stored_requests/fetcher_test.go
+++ b/stored_requests/fetcher_test.go
@@ -6,8 +6,8 @@ import (
"errors"
"testing"
- "github.com/prebid/prebid-server/metrics"
- "github.com/prebid/prebid-server/stored_requests/caches/nil_cache"
+ "github.com/prebid/prebid-server/v2/metrics"
+ "github.com/prebid/prebid-server/v2/stored_requests/caches/nil_cache"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
diff --git a/stored_responses/stored_responses.go b/stored_responses/stored_responses.go
index d6944a6f30f..802602904bc 100644
--- a/stored_responses/stored_responses.go
+++ b/stored_responses/stored_responses.go
@@ -7,8 +7,8 @@ import (
"strings"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/stored_requests"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/stored_requests"
)
type ImpsWithAuctionResponseIDs map[string]string
diff --git a/stored_responses/stored_responses_test.go b/stored_responses/stored_responses_test.go
index 209b34a650b..196466b7323 100644
--- a/stored_responses/stored_responses_test.go
+++ b/stored_responses/stored_responses_test.go
@@ -7,7 +7,7 @@ import (
"testing"
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/usersync/chooser.go b/usersync/chooser.go
index 578c63717de..3b97359e1ce 100644
--- a/usersync/chooser.go
+++ b/usersync/chooser.go
@@ -1,8 +1,9 @@
package usersync
import (
- "github.com/prebid/prebid-server/openrtb_ext"
"strings"
+
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
// Chooser determines which syncers are eligible for a given request.
diff --git a/usersync/chooser_test.go b/usersync/chooser_test.go
index 6ab5a6b53e3..e73122b784a 100644
--- a/usersync/chooser_test.go
+++ b/usersync/chooser_test.go
@@ -1,13 +1,14 @@
package usersync
import (
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
"testing"
"time"
- "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
+
+ "github.com/prebid/prebid-server/v2/macros"
)
func TestNewChooser(t *testing.T) {
diff --git a/usersync/cookie.go b/usersync/cookie.go
index 88524018c49..b4bc821c9d7 100644
--- a/usersync/cookie.go
+++ b/usersync/cookie.go
@@ -5,9 +5,9 @@ import (
"net/http"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
const uidCookieName = "uids"
diff --git a/usersync/cookie_test.go b/usersync/cookie_test.go
index 340069767b1..1ecfe51b5b5 100644
--- a/usersync/cookie_test.go
+++ b/usersync/cookie_test.go
@@ -7,8 +7,8 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
"github.com/stretchr/testify/assert"
)
diff --git a/usersync/decoder.go b/usersync/decoder.go
index c803fbe2a52..a73e37fc560 100644
--- a/usersync/decoder.go
+++ b/usersync/decoder.go
@@ -3,7 +3,7 @@ package usersync
import (
"encoding/base64"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type Decoder interface {
diff --git a/usersync/encoder.go b/usersync/encoder.go
index 74472f23307..2baf5d86524 100644
--- a/usersync/encoder.go
+++ b/usersync/encoder.go
@@ -3,7 +3,7 @@ package usersync
import (
"encoding/base64"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
type Encoder interface {
diff --git a/usersync/syncer.go b/usersync/syncer.go
index e561614f4a2..3add47e5873 100644
--- a/usersync/syncer.go
+++ b/usersync/syncer.go
@@ -9,8 +9,8 @@ import (
"text/template"
validator "github.com/asaskevich/govalidator"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/macros"
)
var (
diff --git a/usersync/syncer_test.go b/usersync/syncer_test.go
index 72167addae5..6aa3103211e 100644
--- a/usersync/syncer_test.go
+++ b/usersync/syncer_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"text/template"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/macros"
"github.com/stretchr/testify/assert"
)
diff --git a/usersync/syncersbuilder.go b/usersync/syncersbuilder.go
index 9a52a740f31..9c916b821b4 100644
--- a/usersync/syncersbuilder.go
+++ b/usersync/syncersbuilder.go
@@ -5,7 +5,7 @@ import (
"sort"
"strings"
- "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/v2/config"
)
type namedSyncerConfig struct {
diff --git a/usersync/syncersbuilder_test.go b/usersync/syncersbuilder_test.go
index 15c53dba2a4..a8f396aa714 100644
--- a/usersync/syncersbuilder_test.go
+++ b/usersync/syncersbuilder_test.go
@@ -4,8 +4,8 @@ import (
"errors"
"testing"
- "github.com/prebid/prebid-server/config"
- "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/v2/config"
+ "github.com/prebid/prebid-server/v2/macros"
"github.com/stretchr/testify/assert"
)
diff --git a/util/httputil/httputil.go b/util/httputil/httputil.go
index 28334a54b87..cabb197fa37 100644
--- a/util/httputil/httputil.go
+++ b/util/httputil/httputil.go
@@ -5,7 +5,7 @@ import (
"net/http"
"strings"
- "github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/iputil"
)
var (
diff --git a/util/httputil/httputil_test.go b/util/httputil/httputil_test.go
index 5da3b0ab735..d056db245f3 100644
--- a/util/httputil/httputil_test.go
+++ b/util/httputil/httputil_test.go
@@ -5,7 +5,7 @@ import (
"net/http"
"testing"
- "github.com/prebid/prebid-server/util/iputil"
+ "github.com/prebid/prebid-server/v2/util/iputil"
"github.com/stretchr/testify/assert"
)
diff --git a/util/jsonutil/jsonutil.go b/util/jsonutil/jsonutil.go
index a8981477dc6..b5bb47cca9a 100644
--- a/util/jsonutil/jsonutil.go
+++ b/util/jsonutil/jsonutil.go
@@ -7,7 +7,7 @@ import (
"strings"
jsoniter "github.com/json-iterator/go"
- "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/v2/errortypes"
)
var comma = byte(',')
diff --git a/util/task/ticker_task_test.go b/util/task/ticker_task_test.go
index c02eec158a1..3ca0280d23e 100644
--- a/util/task/ticker_task_test.go
+++ b/util/task/ticker_task_test.go
@@ -5,7 +5,7 @@ import (
"testing"
"time"
- "github.com/prebid/prebid-server/util/task"
+ "github.com/prebid/prebid-server/v2/util/task"
"github.com/stretchr/testify/assert"
)
diff --git a/version/xprebidheader.go b/version/xprebidheader.go
index fc71bacb1a3..613a76d80b6 100644
--- a/version/xprebidheader.go
+++ b/version/xprebidheader.go
@@ -5,7 +5,7 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
- "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
)
const xPrebidHeaderVersionPrefix = "pbs-go"
diff --git a/version/xprebidheader_test.go b/version/xprebidheader_test.go
index a1c7b355bb8..db31ea63620 100644
--- a/version/xprebidheader_test.go
+++ b/version/xprebidheader_test.go
@@ -6,8 +6,8 @@ import (
"github.com/prebid/openrtb/v19/openrtb2"
"github.com/stretchr/testify/assert"
- "github.com/prebid/prebid-server/openrtb_ext"
- "github.com/prebid/prebid-server/util/jsonutil"
+ "github.com/prebid/prebid-server/v2/openrtb_ext"
+ "github.com/prebid/prebid-server/v2/util/jsonutil"
)
func TestBuildXPrebidHeader(t *testing.T) {