Skip to content

Commit 21eeb66

Browse files
el-chuckshunj-nb
authored andcommitted
Smaato: Split multiple media types (prebid#1930)
Co-authored-by: Bernhard Pickenbrock <[email protected]>
1 parent 44bbf23 commit 21eeb66

23 files changed

+422
-33
lines changed

adapters/smaato/smaato.go

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/prebid/prebid-server/util/timeutil"
1818
)
1919

20-
const clientVersion = "prebid_server_0.3"
20+
const clientVersion = "prebid_server_0.4"
2121

2222
type adMarkupType string
2323

@@ -160,24 +160,53 @@ func (adapter *adapter) makeIndividualRequests(request *openrtb2.BidRequest) ([]
160160
errors := make([]error, 0, len(imps))
161161

162162
for _, imp := range imps {
163-
request.Imp = []openrtb2.Imp{imp}
164-
if err := prepareIndividualRequest(request); err != nil {
165-
errors = append(errors, err)
166-
continue
167-
}
168-
169-
requestData, err := adapter.makeRequest(request)
163+
impsByMediaType, err := splitImpressionsByMediaType(&imp)
170164
if err != nil {
171165
errors = append(errors, err)
172166
continue
173167
}
174168

175-
requests = append(requests, requestData)
169+
for _, impByMediaType := range impsByMediaType {
170+
request.Imp = []openrtb2.Imp{impByMediaType}
171+
if err := prepareIndividualRequest(request); err != nil {
172+
errors = append(errors, err)
173+
continue
174+
}
175+
176+
requestData, err := adapter.makeRequest(request)
177+
if err != nil {
178+
errors = append(errors, err)
179+
continue
180+
}
181+
182+
requests = append(requests, requestData)
183+
}
176184
}
177185

178186
return requests, errors
179187
}
180188

189+
func splitImpressionsByMediaType(imp *openrtb2.Imp) ([]openrtb2.Imp, error) {
190+
if imp.Banner == nil && imp.Video == nil {
191+
return nil, &errortypes.BadInput{Message: "Invalid MediaType. Smaato only supports Banner and Video."}
192+
}
193+
194+
imps := make([]openrtb2.Imp, 0, 2)
195+
196+
if imp.Banner != nil {
197+
impCopy := *imp
198+
impCopy.Video = nil
199+
imps = append(imps, impCopy)
200+
}
201+
202+
if imp.Video != nil {
203+
imp.Banner = nil
204+
imps = append(imps, *imp)
205+
}
206+
207+
return imps, nil
208+
}
209+
181210
func (adapter *adapter) makePodRequests(request *openrtb2.BidRequest) ([]*adapters.RequestData, []error) {
182211
pods, orderedKeys, errors := groupImpressionsByPod(request.Imp)
183212
requests := make([]*adapters.RequestData, 0, len(pods))
@@ -436,7 +465,7 @@ func setImpForAdspace(imp *openrtb2.Imp) error {
436465
return nil
437466
}
438467

439-
return &errortypes.BadInput{Message: "Invalid MediaType. Smaato only supports Banner and Video."}
468+
return nil
440469
}
441470

442471
func setImpForAdBreak(imps []openrtb2.Imp) error {

adapters/smaato/smaatotest/exemplary/multiple-impressions.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
}
3232
]
3333
},
34+
"bidfloor": 0.00123,
3435
"ext": {
3536
"bidder": {
3637
"publisherId": "1100042525",
@@ -65,6 +66,7 @@
6566
"rewarded": 0
6667
}
6768
},
69+
"bidfloor": 0.00456,
6870
"ext": {
6971
"bidder": {
7072
"publisherId": "1100042526",
@@ -114,6 +116,7 @@
114116
{
115117
"id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
116118
"tagid": "130563103",
119+
"bidfloor": 0.00123,
117120
"banner": {
118121
"h": 50,
119122
"w": 320,
@@ -159,7 +162,7 @@
159162
"keywords": "power tools"
160163
},
161164
"ext": {
162-
"client": "prebid_server_0.3"
165+
"client": "prebid_server_0.4"
163166
}
164167
}
165168
},
@@ -208,6 +211,7 @@
208211
{
209212
"id": "postbid_iframe",
210213
"tagid": "130563104",
214+
"bidfloor": 0.00456,
211215
"video": {
212216
"w": 1024,
213217
"h": 768,
@@ -264,7 +268,7 @@
264268
"keywords": "power tools"
265269
},
266270
"ext": {
267-
"client": "prebid_server_0.3"
271+
"client": "prebid_server_0.4"
268272
}
269273
}
270274
},

0 commit comments

Comments
 (0)