From b9cb9631e84d0eb8379ee04872dd782e9b332a78 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 4 Jun 2026 10:05:07 +0300 Subject: [PATCH 1/5] override existing server --- adapters/copper6ssp/copper6ssp.go | 158 ----------- adapters/copper6ssp/copper6ssp_test.go | 20 -- .../copper6ssptest/exemplary/endpointId.json | 136 ---------- .../exemplary/multi-format.json | 105 -------- .../copper6ssptest/exemplary/multi-imp.json | 253 ------------------ .../exemplary/simple-banner.json | 136 ---------- .../exemplary/simple-native.json | 120 --------- .../exemplary/simple-video.json | 131 --------- .../exemplary/simple-web-banner.json | 136 ---------- .../supplemental/bad_media_type.json | 83 ------ .../supplemental/bad_response.json | 85 ------ .../supplemental/no-valid-bidder-param.json | 42 --- .../supplemental/no-valid-imp-ext.json | 38 --- .../supplemental/status-204.json | 80 ------ .../supplemental/status-not-200.json | 85 ------ adapters/copper6ssp/params_test.go | 47 ---- static/bidder-info/copper6ssp.yaml | 25 +- 17 files changed, 6 insertions(+), 1674 deletions(-) delete mode 100644 adapters/copper6ssp/copper6ssp.go delete mode 100644 adapters/copper6ssp/copper6ssp_test.go delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/endpointId.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/multi-format.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/multi-imp.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/simple-banner.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/simple-native.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/simple-video.json delete mode 100644 adapters/copper6ssp/copper6ssptest/exemplary/simple-web-banner.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/bad_media_type.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/bad_response.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/no-valid-bidder-param.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/no-valid-imp-ext.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/status-204.json delete mode 100644 adapters/copper6ssp/copper6ssptest/supplemental/status-not-200.json delete mode 100644 adapters/copper6ssp/params_test.go diff --git a/adapters/copper6ssp/copper6ssp.go b/adapters/copper6ssp/copper6ssp.go deleted file mode 100644 index 85f46748587..00000000000 --- a/adapters/copper6ssp/copper6ssp.go +++ /dev/null @@ -1,158 +0,0 @@ -package copper6ssp - -import ( - "encoding/json" - "fmt" - "net/http" - - "github.com/prebid/openrtb/v20/openrtb2" - "github.com/prebid/prebid-server/v4/adapters" - "github.com/prebid/prebid-server/v4/config" - "github.com/prebid/prebid-server/v4/openrtb_ext" - "github.com/prebid/prebid-server/v4/util/jsonutil" -) - -type adapter struct { - endpoint string -} - -type reqBodyExt struct { - Copper6sspBidderExt 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 errs []error - var adapterRequests []*adapters.RequestData - - reqCopy := *request - for _, imp := range request.Imp { - reqCopy.Imp = []openrtb2.Imp{imp} - - var bidderExt adapters.ExtImpBidder - var copper6sspExt openrtb_ext.ImpExtCopper6ssp - - if err := jsonutil.Unmarshal(imp.Ext, &bidderExt); err != nil { - errs = append(errs, err) - continue - } - if err := jsonutil.Unmarshal(bidderExt.Bidder, &copper6sspExt); err != nil { - errs = append(errs, err) - continue - } - - impExt := reqBodyExt{Copper6sspBidderExt: reqBodyExtBidder{}} - - if copper6sspExt.PlacementID != "" { - impExt.Copper6sspBidderExt.PlacementID = copper6sspExt.PlacementID - impExt.Copper6sspBidderExt.Type = "publisher" - } else if copper6sspExt.EndpointID != "" { - impExt.Copper6sspBidderExt.EndpointID = copper6sspExt.EndpointID - impExt.Copper6sspBidderExt.Type = "network" - } - - finalImpExt, err := json.Marshal(impExt) - if err != nil { - errs = append(errs, err) - continue - } - - reqCopy.Imp[0].Ext = finalImpExt - - adapterReq, err := a.makeRequest(&reqCopy) - if err != nil { - errs = append(errs, err) - continue - } - - if adapterReq != nil { - adapterRequests = append(adapterRequests, adapterReq) - } - } - - if len(adapterRequests) == 0 { - return nil, errs - } - - 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, - ImpIDs: openrtb_ext.GetImpIDs(request.Imp), - }, 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 := jsonutil.Unmarshal(responseData.Body, &response); err != nil { - return nil, []error{err} - } - - 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 { - bidType, err := getBidType(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 getBidType(bid openrtb2.Bid) (openrtb_ext.BidType, error) { - // determinate media type by bid response field mtype - 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 - } - - return "", fmt.Errorf("could not define media type for impression: %s", bid.ImpID) -} diff --git a/adapters/copper6ssp/copper6ssp_test.go b/adapters/copper6ssp/copper6ssp_test.go deleted file mode 100644 index 9f98ce4eded..00000000000 --- a/adapters/copper6ssp/copper6ssp_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package copper6ssp - -import ( - "testing" - - "github.com/prebid/prebid-server/v4/adapters/adapterstest" - "github.com/prebid/prebid-server/v4/config" - "github.com/prebid/prebid-server/v4/openrtb_ext" -) - -func TestJsonSamples(t *testing.T) { - bidder, buildErr := Builder(openrtb_ext.BidderCopper6ssp, config.Adapter{ - Endpoint: "https://example.com"}, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"}) - - if buildErr != nil { - t.Fatalf("Builder returned unexpected error %v", buildErr) - } - - adapterstest.RunJSONBidderTest(t, "copper6ssptest", bidder) -} diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/endpointId.json b/adapters/copper6ssp/copper6ssptest/exemplary/endpointId.json deleted file mode 100644 index 3dc82f836da..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/endpointId.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - }, - "type": "banner" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/multi-format.json b/adapters/copper6ssp/copper6ssptest/exemplary/multi-format.json deleted file mode 100644 index 9e897a9a1bb..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/multi-format.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "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 - } - ] - }, - "video": { - "mimes": [ - "video/mp4" - ], - "protocols": [ - 2, - 5 - ], - "w": 1024, - "h": 576 - }, - "ext": { - "bidder": { - "endpointId": "test" - } - } - } - ] - }, - "httpCalls": [ - { - "expectedRequest": { - "uri": "https://example.com", - "body": { - "id": "test-request-id", - "imp": [ - { - "id": "test-imp-id", - "tagid": "test", - "banner": { - "format": [ - { - "w": 300, - "h": 250 - }, - { - "w": 300, - "h": 600 - } - ] - }, - "video": { - "mimes": [ - "video/mp4" - ], - "protocols": [ - 2, - 5 - ], - "w": 1024, - "h": 576 - }, - "ext": { - "bidder": { - "endpointId": "test", - "type": "network" - } - } - } - ], - "app": { - "id": "1", - "bundle": "com.wls.testwlsapplication" - }, - "device": { - "ip": "123.123.123.123", - "ua": "iPad" - } - }, - "impIDs":["test-imp-id"] - }, - "mockResponse": { - "status": 204 - } - } - ], - "expectedBidResponses": [] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/multi-imp.json b/adapters/copper6ssp/copper6ssptest/exemplary/multi-imp.json deleted file mode 100644 index 63828352744..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/multi-imp.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "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" - } - } - }, - { - "id": "test-imp-id2", - "tagid": "test2", - "banner": { - "format": [ - { - "w": 3000, - "h": 2500 - }, - { - "w": 3000, - "h": 6000 - } - ] - }, - "ext": { - "bidder": { - "endpointId": "test2" - } - } - } - ] - }, - "httpCalls": [ - { - "expectedRequest": { - "uri": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "cur": "USD" - } - } - }, - { - "expectedRequest": { - "uri": "https://example.com", - "body": { - "id": "test-request-id", - "imp": [ - { - "id": "test-imp-id2", - "tagid": "test2", - "banner": { - "format": [ - { - "w": 3000, - "h": 2500 - }, - { - "w": 3000, - "h": 6000 - } - ] - }, - "ext": { - "bidder": { - "endpointId": "test2", - "type": "network" - } - } - } - ], - "app": { - "id": "1", - "bundle": "com.wls.testwlsapplication" - }, - "device": { - "ip": "123.123.123.123", - "ua": "iPad" - } - }, - "impIDs":["test-imp-id2"] - }, - "mockResponse": { - "status": 200, - "body": { - "id": "test-request-id", - "seatbid": [ - { - "bid": [ - { - "id": "test_bid_id", - "impid": "test-imp-id2", - "price": 0.27543, - "adm": "", - "cid": "test_cid", - "crid": "test_crid", - "dealid": "test_dealid", - "mtype": 1, - "w": 3000, - "h": 2500, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - }, - "type": "banner" - } - ] - }, - { - "bids": [ - { - "bid": { - "id": "test_bid_id", - "impid": "test-imp-id2", - "price": 0.27543, - "adm": "", - "cid": "test_cid", - "crid": "test_crid", - "dealid": "test_dealid", - "mtype": 1, - "w": 3000, - "h": 2500, - "ext": { - "prebid": { - "type": "banner" - } - } - }, - "type": "banner" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/simple-banner.json b/adapters/copper6ssp/copper6ssptest/exemplary/simple-banner.json deleted file mode 100644 index 3bff225709d..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/simple-banner.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "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": { - "placementId": "test" - } - } - } - ] - }, - "httpCalls": [ - { - "expectedRequest": { - "uri": "https://example.com", - "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" - } - } - } - ], - "app": { - "id": "1", - "bundle": "com.wls.testwlsapplication" - }, - "device": { - "ip": "123.123.123.123", - "ua": "iPad" - } - }, - "impIDs":["test-imp-id"] - }, - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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", - "mtype": 1, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner" - } - } - }, - "type": "banner" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/simple-native.json b/adapters/copper6ssp/copper6ssptest/exemplary/simple-native.json deleted file mode 100644 index 63b4a5c824a..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/simple-native.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "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", - "mtype": 4, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "native" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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", - "mtype": 4, - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "native" - } - } - }, - "type": "native" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/simple-video.json b/adapters/copper6ssp/copper6ssptest/exemplary/simple-video.json deleted file mode 100644 index 60156082dc7..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/simple-video.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - } - } - ] - }, - "impIDs":["test-imp-id"] - }, - "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, - "ext": { - "prebid": { - "type": "video" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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, - "ext": { - "prebid": { - "type": "video" - } - } - }, - "type": "video" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/exemplary/simple-web-banner.json b/adapters/copper6ssp/copper6ssptest/exemplary/simple-web-banner.json deleted file mode 100644 index 3ff97037a82..00000000000 --- a/adapters/copper6ssp/copper6ssptest/exemplary/simple-web-banner.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "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", - "mtype": 1, - "w": 468, - "h": 60, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ], - "seat": "copper6ssp" - } - ], - "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", - "mtype": 1, - "w": 468, - "h": 60, - "ext": { - "prebid": { - "type": "banner" - } - } - }, - "type": "banner" - } - ] - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/bad_media_type.json b/adapters/copper6ssp/copper6ssptest/supplemental/bad_media_type.json deleted file mode 100644 index 3b61edd137d..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/bad_media_type.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "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": "copper6ssp" - } - ], - "cur": "USD" - } - } - }], - "expectedMakeBidsErrors": [ - { - "value": "could not define media type for impression: test-imp-id", - "comparison": "literal" - } - ] -} diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/bad_response.json b/adapters/copper6ssp/copper6ssptest/supplemental/bad_response.json deleted file mode 100644 index 476058ed624..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/bad_response.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "mockResponse": { - "status": 200, - "body": "" - } - }], - "expectedMakeBidsErrors": [ - { - "value": "expect { or n, but found \"", - "comparison": "literal" - } - ] -} diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-bidder-param.json b/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-bidder-param.json deleted file mode 100644 index d27134c5ab7..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-bidder-param.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "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": [] - } - } - } - ] - }, - "expectedMakeRequestsErrors": [ - { - "value": "cannot unmarshal openrtb_ext.ImpExtCopper6ssp.EndpointID: expects \" or n, but found [", - "comparison": "literal" - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-imp-ext.json b/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-imp-ext.json deleted file mode 100644 index 09108b2d847..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/no-valid-imp-ext.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "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": "invalid" - } - ] - }, - "expectedMakeRequestsErrors": [ - { - "value": "expect { or n, but found \"", - "comparison": "literal" - } - ] -} \ No newline at end of file diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/status-204.json b/adapters/copper6ssp/copper6ssptest/supplemental/status-204.json deleted file mode 100644 index 7dd1c65fd36..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/status-204.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "mockResponse": { - "status": 204, - "body": {} - } - }], - "expectedBidResponses": [] -} diff --git a/adapters/copper6ssp/copper6ssptest/supplemental/status-not-200.json b/adapters/copper6ssp/copper6ssptest/supplemental/status-not-200.json deleted file mode 100644 index 743f2996260..00000000000 --- a/adapters/copper6ssp/copper6ssptest/supplemental/status-not-200.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "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": "https://example.com", - "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" - } - }, - "impIDs":["test-imp-id"] - }, - "mockResponse": { - "status": 404, - "body": {} - } - }], - "expectedMakeBidsErrors": [ - { - "value": "Unexpected status code: 404. Run with request.debug = 1 for more info", - "comparison": "literal" - } - ] -} diff --git a/adapters/copper6ssp/params_test.go b/adapters/copper6ssp/params_test.go deleted file mode 100644 index bd9d84ee3dc..00000000000 --- a/adapters/copper6ssp/params_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package copper6ssp - -import ( - "encoding/json" - "testing" - - "github.com/prebid/prebid-server/v4/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.BidderCopper6ssp, 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.BidderCopper6ssp, 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/static/bidder-info/copper6ssp.yaml b/static/bidder-info/copper6ssp.yaml index 2f3ef14c768..8269db495dc 100644 --- a/static/bidder-info/copper6ssp.yaml +++ b/static/bidder-info/copper6ssp.yaml @@ -1,22 +1,9 @@ -endpoint: "https://endpoint.copper6.com/pserver" -gvlVendorID: 1356 +aliasOf: "vidazoo" +endpoint: "https://exchange.copper6.com/openrtb/" maintainer: - email: "info@copper6.com" -capabilities: - site: - mediaTypes: - - banner - - video - - native - app: - mediaTypes: - - banner - - video - - native + email: "dev@vidazoo.com" userSync: - redirect: - url: "https://csync.copper6.com/pbserver?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&ccpa={{.USPrivacy}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&redir={{.RedirectURL}}" - userMacro: "[UID]" iframe: - url: "https://csync.copper6.com/pbserverIframe?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&ccpa={{.USPrivacy}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&pbserverUrl={{.RedirectURL}}" - userMacro: "[UID]" + url: https://sync.copper6.com/api/user/html/6a1ed92d2dc11401c64d1da4?pbs=true&gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect={{.RedirectURL}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}} + userMacro: ${userId} +gvlVendorID: 1356 \ No newline at end of file From 436a876d4b55aa07b1d3208936ef9bb1f4695fb2 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 4 Jun 2026 10:10:42 +0300 Subject: [PATCH 2/5] fix to builders --- exchange/adapter_builders.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go index 2d6526a1900..2cff4ced22e 100755 --- a/exchange/adapter_builders.go +++ b/exchange/adapter_builders.go @@ -85,7 +85,6 @@ import ( "github.com/prebid/prebid-server/v4/adapters/consumable" "github.com/prebid/prebid-server/v4/adapters/contxtful" "github.com/prebid/prebid-server/v4/adapters/conversant" - "github.com/prebid/prebid-server/v4/adapters/copper6ssp" "github.com/prebid/prebid-server/v4/adapters/cpmstar" "github.com/prebid/prebid-server/v4/adapters/criteo" "github.com/prebid/prebid-server/v4/adapters/cwire" @@ -355,7 +354,6 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder { openrtb_ext.BidderConsumable: consumable.Builder, openrtb_ext.BidderContxtful: contxtful.Builder, openrtb_ext.BidderConversant: conversant.Builder, - openrtb_ext.BidderCopper6ssp: copper6ssp.Builder, openrtb_ext.BidderCpmstar: cpmstar.Builder, openrtb_ext.BidderCriteo: criteo.Builder, openrtb_ext.BidderCWire: cwire.Builder, From 65b1c079c83eae852f1e6f6680b886ff14d8c1f5 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 4 Jun 2026 10:28:32 +0300 Subject: [PATCH 3/5] removing one more file --- openrtb_ext/imp_copper6ssp.go | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 openrtb_ext/imp_copper6ssp.go diff --git a/openrtb_ext/imp_copper6ssp.go b/openrtb_ext/imp_copper6ssp.go deleted file mode 100644 index a9fd47a1eb6..00000000000 --- a/openrtb_ext/imp_copper6ssp.go +++ /dev/null @@ -1,6 +0,0 @@ -package openrtb_ext - -type ImpExtCopper6ssp struct { - PlacementID string `json:"placementId"` - EndpointID string `json:"endpointId"` -} From aefa5c43476bc21a4b4b60953818eeeef0f8b7f4 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 4 Jun 2026 10:31:33 +0300 Subject: [PATCH 4/5] fix in bidders.go for core bidders --- openrtb_ext/bidders.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go index 9e9cfaa7610..6b2798a3ce7 100644 --- a/openrtb_ext/bidders.go +++ b/openrtb_ext/bidders.go @@ -101,7 +101,6 @@ var coreBidderNames []BidderName = []BidderName{ BidderConsumable, BidderContxtful, BidderConversant, - BidderCopper6ssp, BidderCpmstar, BidderCriteo, BidderCWire, @@ -478,7 +477,6 @@ const ( BidderConsumable BidderName = "consumable" BidderContxtful BidderName = "contxtful" BidderConversant BidderName = "conversant" - BidderCopper6ssp BidderName = "copper6ssp" BidderCpmstar BidderName = "cpmstar" BidderCriteo BidderName = "criteo" BidderCWire BidderName = "cwire" From c50eb0b8e36f0778b2684bd0edfb87382c0368a4 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 4 Jun 2026 10:52:05 +0300 Subject: [PATCH 5/5] removing more fils --- static/bidder-params/copper6ssp.json | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 static/bidder-params/copper6ssp.json diff --git a/static/bidder-params/copper6ssp.json b/static/bidder-params/copper6ssp.json deleted file mode 100644 index 9467e48e9b9..00000000000 --- a/static/bidder-params/copper6ssp.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Copper6SSPs Adapter Params", - "description": "A schema which validates params accepted by the Copper6SSP 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