diff --git a/adapters/smaato/smaato.go b/adapters/smaato/smaato.go
index c50efffc994..c84dd356a59 100644
--- a/adapters/smaato/smaato.go
+++ b/adapters/smaato/smaato.go
@@ -17,7 +17,7 @@ import (
"github.com/prebid/prebid-server/util/timeutil"
)
-const clientVersion = "prebid_server_0.3"
+const clientVersion = "prebid_server_0.4"
type adMarkupType string
@@ -160,24 +160,53 @@ func (adapter *adapter) makeIndividualRequests(request *openrtb2.BidRequest) ([]
errors := make([]error, 0, len(imps))
for _, imp := range imps {
- request.Imp = []openrtb2.Imp{imp}
- if err := prepareIndividualRequest(request); err != nil {
- errors = append(errors, err)
- continue
- }
-
- requestData, err := adapter.makeRequest(request)
+ impsByMediaType, err := splitImpressionsByMediaType(&imp)
if err != nil {
errors = append(errors, err)
continue
}
- requests = append(requests, requestData)
+ for _, impByMediaType := range impsByMediaType {
+ request.Imp = []openrtb2.Imp{impByMediaType}
+ if err := prepareIndividualRequest(request); err != nil {
+ errors = append(errors, err)
+ continue
+ }
+
+ requestData, err := adapter.makeRequest(request)
+ if err != nil {
+ errors = append(errors, err)
+ continue
+ }
+
+ requests = append(requests, requestData)
+ }
}
return requests, errors
}
+func splitImpressionsByMediaType(imp *openrtb2.Imp) ([]openrtb2.Imp, error) {
+ if imp.Banner == nil && imp.Video == nil {
+ return nil, &errortypes.BadInput{Message: "Invalid MediaType. Smaato only supports Banner and Video."}
+ }
+
+ imps := make([]openrtb2.Imp, 0, 2)
+
+ if imp.Banner != nil {
+ impCopy := *imp
+ impCopy.Video = nil
+ imps = append(imps, impCopy)
+ }
+
+ if imp.Video != nil {
+ imp.Banner = nil
+ imps = append(imps, *imp)
+ }
+
+ return imps, nil
+}
+
func (adapter *adapter) makePodRequests(request *openrtb2.BidRequest) ([]*adapters.RequestData, []error) {
pods, orderedKeys, errors := groupImpressionsByPod(request.Imp)
requests := make([]*adapters.RequestData, 0, len(pods))
@@ -436,7 +465,7 @@ func setImpForAdspace(imp *openrtb2.Imp) error {
return nil
}
- return &errortypes.BadInput{Message: "Invalid MediaType. Smaato only supports Banner and Video."}
+ return nil
}
func setImpForAdBreak(imps []openrtb2.Imp) error {
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-impressions.json b/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
index e86fea8eb04..c30a9a6a39e 100644
--- a/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
+++ b/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
@@ -31,6 +31,7 @@
}
]
},
+ "bidfloor": 0.00123,
"ext": {
"bidder": {
"publisherId": "1100042525",
@@ -65,6 +66,7 @@
"rewarded": 0
}
},
+ "bidfloor": 0.00456,
"ext": {
"bidder": {
"publisherId": "1100042526",
@@ -114,6 +116,7 @@
{
"id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
"tagid": "130563103",
+ "bidfloor": 0.00123,
"banner": {
"h": 50,
"w": 320,
@@ -159,7 +162,7 @@
"keywords": "power tools"
},
"ext": {
- "client": "prebid_server_0.3"
+ "client": "prebid_server_0.4"
}
}
},
@@ -208,6 +211,7 @@
{
"id": "postbid_iframe",
"tagid": "130563104",
+ "bidfloor": 0.00456,
"video": {
"w": 1024,
"h": 768,
@@ -264,7 +268,7 @@
"keywords": "power tools"
},
"ext": {
- "client": "prebid_server_0.3"
+ "client": "prebid_server_0.4"
}
}
},
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-media-types.json b/adapters/smaato/smaatotest/exemplary/multiple-media-types.json
new file mode 100644
index 00000000000..a7d97666778
--- /dev/null
+++ b/adapters/smaato/smaatotest/exemplary/multiple-media-types.json
@@ -0,0 +1,348 @@
+{
+ "mockBidRequest": {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "site": {
+ "publisher": {
+ "id": "1100042525"
+ },
+ "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+ "ext": {
+ "data": {
+ "keywords": "power tools",
+ "search": "drill",
+ "content": {
+ "userrating": 4
+ }
+ }
+ }
+ },
+ "imp": [
+ {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "banner": {
+ "format": [
+ {
+ "w": 320,
+ "h": 50
+ },
+ {
+ "w": 320,
+ "h": 250
+ }
+ ]
+ },
+ "video": {
+ "mimes": [
+ "video/mp4",
+ "video/quicktime",
+ "video/3gpp",
+ "video/x-m4v"
+ ],
+ "minduration": 5,
+ "maxduration": 30,
+ "protocols": [
+ 7
+ ],
+ "w": 1024,
+ "h": 768,
+ "startdelay": 0,
+ "linearity": 1,
+ "skip": 1,
+ "skipmin": 5,
+ "api": [
+ 7
+ ],
+ "ext": {
+ "rewarded": 0
+ }
+ },
+ "bidfloor": 0.00123,
+ "ext": {
+ "bidder": {
+ "publisherId": "1100042525",
+ "adspaceId": "130563103"
+ }
+ }
+ }
+ ],
+ "device": {
+ "ua": "test-user-agent",
+ "ip": "123.123.123.123",
+ "language": "en",
+ "dnt": 0
+ },
+ "user": {
+ "ext": {
+ "consent": "gdprConsentString",
+ "data": {
+ "keywords": "a,b",
+ "gender": "M",
+ "yob": 1984,
+ "geo": {
+ "country": "ca"
+ }
+ }
+ }
+ },
+ "regs": {
+ "coppa": 1,
+ "ext": {
+ "gdpr": 1,
+ "us_privacy": "uspConsentString"
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "headers": {
+ "Content-Type": ["application/json;charset=utf-8"],
+ "Accept": ["application/json"]
+ },
+ "uri": "https://prebid/bidder",
+ "body": {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "imp": [
+ {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "tagid": "130563103",
+ "bidfloor": 0.00123,
+ "banner": {
+ "h": 50,
+ "w": 320,
+ "format": [
+ {
+ "w": 320,
+ "h": 50
+ },
+ {
+ "w": 320,
+ "h": 250
+ }
+ ]
+ }
+ }
+ ],
+ "user": {
+ "ext": {
+ "consent": "gdprConsentString"
+ },
+ "gender": "M",
+ "keywords": "a,b",
+ "yob": 1984
+ },
+ "device": {
+ "ua": "test-user-agent",
+ "ip": "123.123.123.123",
+ "language": "en",
+ "dnt": 0
+ },
+ "regs": {
+ "coppa": 1,
+ "ext": {
+ "gdpr": 1,
+ "us_privacy": "uspConsentString"
+ }
+ },
+ "site": {
+ "publisher": {
+ "id": "1100042525"
+ },
+ "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+ "keywords": "power tools"
+ },
+ "ext": {
+ "client": "prebid_server_0.4"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+ "seatbid": [
+ {
+ "seat": "CM6523",
+ "bid": [
+ {
+ "adm": "{\"image\":{\"img\":{\"url\":\"//prebid-test.smaatolabs.net/img/320x50.jpg\",\"w\":350,\"h\":50,\"ctaurl\":\"//prebid-test.smaatolabs.net/track/ctaurl/1\"},\"impressiontrackers\":[\"//prebid-test.smaatolabs.net/track/imp/1\",\"//prebid-test.smaatolabs.net/track/imp/2\"],\"clicktrackers\":[\"//prebid-test.smaatolabs.net/track/click/1\",\"//prebid-test.smaatolabs.net/track/click/2\"]}}",
+ "adomain": [
+ "smaato.com"
+ ],
+ "bidderName": "smaato",
+ "cid": "CM6523",
+ "crid": "CR69381",
+ "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+ "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+ "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+ "price": 0.01,
+ "w": 350,
+ "h": 50
+ }
+ ]
+ }
+ ],
+ "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+ "cur": "USD"
+ }
+ }
+ },
+ {
+ "expectedRequest": {
+ "headers": {
+ "Content-Type": ["application/json;charset=utf-8"],
+ "Accept": ["application/json"]
+ },
+ "uri": "https://prebid/bidder",
+ "body": {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "imp": [
+ {
+ "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+ "tagid": "130563103",
+ "bidfloor": 0.00123,
+ "video": {
+ "w": 1024,
+ "h": 768,
+ "ext": {
+ "rewarded": 0
+ },
+ "mimes": [
+ "video/mp4",
+ "video/quicktime",
+ "video/3gpp",
+ "video/x-m4v"
+ ],
+ "minduration": 5,
+ "startdelay": 0,
+ "linearity": 1,
+ "maxduration": 30,
+ "skip": 1,
+ "protocols": [
+ 7
+ ],
+ "skipmin": 5,
+ "api": [
+ 7
+ ]
+ }
+ }
+ ],
+ "user": {
+ "ext": {
+ "consent": "gdprConsentString"
+ },
+ "gender": "M",
+ "keywords": "a,b",
+ "yob": 1984
+ },
+ "device": {
+ "ua": "test-user-agent",
+ "ip": "123.123.123.123",
+ "language": "en",
+ "dnt": 0
+ },
+ "regs": {
+ "coppa": 1,
+ "ext": {
+ "gdpr": 1,
+ "us_privacy": "uspConsentString"
+ }
+ },
+ "site": {
+ "publisher": {
+ "id": "1100042525"
+ },
+ "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+ "keywords": "power tools"
+ },
+ "ext": {
+ "client": "prebid_server_0.4"
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+ "seatbid": [
+ {
+ "seat": "CM6523",
+ "bid": [
+ {
+ "adm": "