From 27966af2a64e8de2754b02ba22d208e1cf519b71 Mon Sep 17 00:00:00 2001
From: Saurabh Narkhede
<108730956+pm-saurabh-narkhede@users.noreply.github.com>
Date: Tue, 26 Nov 2024 12:57:03 +0530
Subject: [PATCH] InMobi: mtype support (#3921) (#967)
---
adapters/inmobi/inmobi.go | 28 +++---
.../exemplary/simple-app-banner.json | 4 +-
.../exemplary/simple-app-native.json | 4 +-
.../exemplary/simple-app-video.json | 4 +-
.../exemplary/simple-web-banner.json | 4 +-
.../exemplary/simple-web-video.json | 4 +-
.../supplemental/banner-format-coersion.json | 4 +-
.../supplemental/invalid-mtype.json | 97 +++++++++++++++++++
8 files changed, 130 insertions(+), 19 deletions(-)
create mode 100644 adapters/inmobi/inmobitest/supplemental/invalid-mtype.json
diff --git a/adapters/inmobi/inmobi.go b/adapters/inmobi/inmobi.go
index 9ceac3ec01a..eb69bdf3ec2 100644
--- a/adapters/inmobi/inmobi.go
+++ b/adapters/inmobi/inmobi.go
@@ -77,7 +77,10 @@ func (a *InMobiAdapter) MakeBids(internalRequest *openrtb2.BidRequest, externalR
for _, sb := range serverBidResponse.SeatBid {
for i := range sb.Bid {
- mediaType := getMediaTypeForImp(sb.Bid[i].ImpID, internalRequest.Imp)
+ mediaType, err := getMediaTypeForImp(sb.Bid[i])
+ if err != nil {
+ return nil, []error{err}
+ }
bidResponse.Bids = append(bidResponse.Bids, &adapters.TypedBid{
Bid: &sb.Bid[i],
BidType: mediaType,
@@ -118,18 +121,17 @@ func preprocess(imp *openrtb2.Imp) error {
return nil
}
-func getMediaTypeForImp(impId string, imps []openrtb2.Imp) openrtb_ext.BidType {
- mediaType := openrtb_ext.BidTypeBanner
- for _, imp := range imps {
- if imp.ID == impId {
- if imp.Video != nil {
- mediaType = openrtb_ext.BidTypeVideo
- }
- if imp.Native != nil {
- mediaType = openrtb_ext.BidTypeNative
- }
- break
+func getMediaTypeForImp(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 "", &errortypes.BadServerResponse{
+ Message: fmt.Sprintf("Unsupported mtype %d for bid %s", bid.MType, bid.ID),
}
}
- return mediaType
}
diff --git a/adapters/inmobi/inmobitest/exemplary/simple-app-banner.json b/adapters/inmobi/inmobitest/exemplary/simple-app-banner.json
index 563c8b9103e..01ccd98596f 100644
--- a/adapters/inmobi/inmobitest/exemplary/simple-app-banner.json
+++ b/adapters/inmobi/inmobitest/exemplary/simple-app-banner.json
@@ -75,7 +75,8 @@
"price": 2.0,
"id": "1234",
"adm": "bannerhtml",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 1
}
]
}
@@ -94,6 +95,7 @@
"adm": "bannerhtml",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 1,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/exemplary/simple-app-native.json b/adapters/inmobi/inmobitest/exemplary/simple-app-native.json
index 7b823c13e11..0e956b6e586 100644
--- a/adapters/inmobi/inmobitest/exemplary/simple-app-native.json
+++ b/adapters/inmobi/inmobitest/exemplary/simple-app-native.json
@@ -73,7 +73,8 @@
"price": 2.0,
"id": "1234",
"adm": "native-json",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 4
}
]
}
@@ -92,6 +93,7 @@
"adm": "native-json",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 4,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/exemplary/simple-app-video.json b/adapters/inmobi/inmobitest/exemplary/simple-app-video.json
index 69356fd4de7..644b42d573a 100644
--- a/adapters/inmobi/inmobitest/exemplary/simple-app-video.json
+++ b/adapters/inmobi/inmobitest/exemplary/simple-app-video.json
@@ -77,7 +77,8 @@
"price": 2.0,
"id": "1234",
"adm": " ",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 2
}
]
}
@@ -96,6 +97,7 @@
"adm": " ",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 2,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/exemplary/simple-web-banner.json b/adapters/inmobi/inmobitest/exemplary/simple-web-banner.json
index 0aac1b1571d..3359906e436 100644
--- a/adapters/inmobi/inmobitest/exemplary/simple-web-banner.json
+++ b/adapters/inmobi/inmobitest/exemplary/simple-web-banner.json
@@ -73,7 +73,8 @@
"price": 2.0,
"id": "1234",
"adm": "bannerhtml",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 1
}
]
}
@@ -92,6 +93,7 @@
"adm": "bannerhtml",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 1,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/exemplary/simple-web-video.json b/adapters/inmobi/inmobitest/exemplary/simple-web-video.json
index 7ea5dd268ef..582f9044fc9 100644
--- a/adapters/inmobi/inmobitest/exemplary/simple-web-video.json
+++ b/adapters/inmobi/inmobitest/exemplary/simple-web-video.json
@@ -75,7 +75,8 @@
"price": 2.0,
"id": "1234",
"adm": " ",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 2
}
]
}
@@ -94,6 +95,7 @@
"adm": " ",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 2,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/supplemental/banner-format-coersion.json b/adapters/inmobi/inmobitest/supplemental/banner-format-coersion.json
index 211348de3f3..ee6aae529ee 100644
--- a/adapters/inmobi/inmobitest/supplemental/banner-format-coersion.json
+++ b/adapters/inmobi/inmobitest/supplemental/banner-format-coersion.json
@@ -81,7 +81,8 @@
"price": 2.0,
"id": "1234",
"adm": "bannerhtml",
- "impid": "imp-id"
+ "impid": "imp-id",
+ "mtype": 1
}
]
}
@@ -100,6 +101,7 @@
"adm": "bannerhtml",
"crid": "123456789",
"nurl": "https://some.event.url/params",
+ "mtype": 1,
"ext": {
"prebid": {
"meta": {
diff --git a/adapters/inmobi/inmobitest/supplemental/invalid-mtype.json b/adapters/inmobi/inmobitest/supplemental/invalid-mtype.json
new file mode 100644
index 00000000000..af2192836b0
--- /dev/null
+++ b/adapters/inmobi/inmobitest/supplemental/invalid-mtype.json
@@ -0,0 +1,97 @@
+{
+ "mockBidRequest": {
+ "site": {
+ "page": "https://www.inmobi.com"
+ },
+ "id": "req-id",
+ "device": {
+ "ip": "1.1.1.1",
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36"
+ },
+ "imp": [
+ {
+ "ext": {
+ "bidder": {
+ "plc": "1621323101291"
+ }
+ },
+ "video": {
+ "w": 640,
+ "h": 360,
+ "mimes": ["video/mp4"]
+ },
+ "id": "imp-id"
+ }
+ ]
+ },
+ "httpCalls": [{
+ "expectedRequest": {
+ "uri": "https://api.w.inmobi.com/showad/openrtb/bidder/prebid",
+ "body": {
+ "site": {
+ "page": "https://www.inmobi.com"
+ },
+ "id": "req-id",
+ "device": {
+ "ip": "1.1.1.1",
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36"
+ },
+ "imp": [
+ {
+ "ext": {
+ "bidder": {
+ "plc": "1621323101291"
+ }
+ },
+ "video": {
+ "w": 640,
+ "h": 360,
+ "mimes": ["video/mp4"]
+ },
+ "id": "imp-id"
+ }
+ ]
+ },
+ "impIDs":["imp-id"]
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "req-id",
+ "seatbid": [
+ {
+ "bid": [
+ {
+ "ext": {
+ "prebid": {
+ "meta": {
+ "networkName": "inmobi"
+ }
+ }
+ },
+ "nurl": "https://some.event.url/params",
+ "crid": "123456789",
+ "adomain": [],
+ "price": 2.0,
+ "id": "1234",
+ "adm": " ",
+ "impid": "imp-id",
+ "mtype": 0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }],
+
+ "expectedBidResponses":[],
+ "expectedMakeBidsErrors":[
+ {
+ "value":"Unsupported mtype 0 for bid 1234",
+ "comparison":"literal"
+ }
+ ]
+}
+
+