Skip to content

Commit 29a1efa

Browse files
Nextmillennium: New fields and adapter version update
1 parent 0495b1e commit 29a1efa

7 files changed

Lines changed: 106 additions & 30 deletions

File tree

src/main/java/org/prebid/server/bidder/nextmillennium/NextMillenniumBidder.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class NextMillenniumBidder implements Bidder<BidRequest> {
5050
new TypeReference<>() {
5151
};
5252

53-
private static final String NM_ADAPTER_VERSION = "v1.0.0";
53+
private static final String NM_ADAPTER_VERSION = "v1.0.1";
5454

5555
private final String endpointUrl;
5656
private final JacksonMapper mapper;
@@ -108,8 +108,8 @@ private BidRequest updateBidRequest(BidRequest bidRequest, ExtImpNextMillennium
108108
.orElse(null);
109109

110110
return bidRequest.toBuilder()
111-
.imp(modifyFirstImp(bidRequest.getImp(), soredRequestId))
112-
.ext(createExtRequest(soredRequestId, extRequestPrebidServer))
111+
.imp(modifyFirstImp(bidRequest.getImp(), soredRequestId, extImp))
112+
.ext(createExtRequest(soredRequestId, extRequestPrebidServer, extImp))
113113
.build();
114114
}
115115

@@ -150,13 +150,14 @@ private static String formatSize(Integer w, Integer h) {
150150
: null;
151151
}
152152

153-
private List<Imp> modifyFirstImp(List<Imp> imps, String storedRequestId) {
153+
private List<Imp> modifyFirstImp(List<Imp> imps, String storedRequestId, ExtImpNextMillennium extImp) {
154154
final ExtRequestPrebid extRequestPrebid = ExtRequestPrebid.builder()
155155
.storedrequest(ExtStoredRequest.of(storedRequestId))
156156
.build();
157157

158158
final NextMillenniumExt nextMillenniumExt = NextMillenniumExt.of(
159-
NextMillenniumExtBidder.of(nmmFlags, null, null));
159+
NextMillenniumExtBidder.of(
160+
nmmFlags, extImp.getAdSlots(), extImp.getAllowedAds(), null, null));
160161

161162
final ExtRequest extRequest = ExtRequest.of(extRequestPrebid);
162163
mapper.fillExtension(extRequest, nextMillenniumExt);
@@ -169,14 +170,18 @@ private List<Imp> modifyFirstImp(List<Imp> imps, String storedRequestId) {
169170
return modifiedImps;
170171
}
171172

172-
private ExtRequest createExtRequest(String storedRequestId, ExtRequestPrebidServer extRequestPrebidServer) {
173+
private ExtRequest createExtRequest(String storedRequestId,
174+
ExtRequestPrebidServer extRequestPrebidServer,
175+
ExtImpNextMillennium extImp) {
173176
final ExtRequestPrebid extRequestPrebid = ExtRequestPrebid.builder()
174177
.storedrequest(ExtStoredRequest.of(storedRequestId))
175178
.server(extRequestPrebidServer)
176179
.build();
177180

178181
final NextMillenniumExt nextMillenniumExt = NextMillenniumExt.of(
179-
NextMillenniumExtBidder.of(nmmFlags, NM_ADAPTER_VERSION, versionProvider.getNameVersionRecord()));
182+
NextMillenniumExtBidder.of(
183+
nmmFlags, extImp.getAdSlots(), extImp.getAllowedAds(), NM_ADAPTER_VERSION,
184+
versionProvider.getNameVersionRecord()));
180185

181186
final ExtRequest extRequest = ExtRequest.of(extRequestPrebid);
182187
mapper.fillExtension(extRequest, nextMillenniumExt);

src/main/java/org/prebid/server/bidder/nextmillennium/proto/NextMillenniumExtBidder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ public class NextMillenniumExtBidder {
1111
@JsonProperty("nmmFlags")
1212
List<String> nmmFlags;
1313

14+
@JsonProperty("adSlots")
15+
List<String> adSlots;
16+
17+
@JsonProperty("allowedAds")
18+
List<String> allowedAds;
19+
1420
String nmVersion;
1521

1622
String serverVersion;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
package org.prebid.server.proto.openrtb.ext.request.nextmillennium;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import lombok.Value;
45

6+
import java.util.List;
7+
58
@Value(staticConstructor = "of")
69
public class ExtImpNextMillennium {
710

811
String placementId;
912

1013
String groupId;
14+
15+
@JsonProperty("adSlots")
16+
List<String> adSlots;
17+
18+
@JsonProperty("allowedAds")
19+
List<String> allowedAds;
1120
}

src/main/resources/static/bidder-params/nextmillennium.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,21 @@
1313
"type": "string",
1414
"minLength": 1,
1515
"description": "An id used to identify NextMillennium placement group"
16+
},
17+
"adSlots": {
18+
"type": "array",
19+
"minItems": 1,
20+
"description": "IDs which identifies the ad slots",
21+
"items": {
22+
"type": "string"
23+
}
24+
},
25+
"allowedAds": {
26+
"type": "array",
27+
"description": "List of allowed ads",
28+
"items": {
29+
"type": "string"
30+
}
1631
}
1732
},
1833
"anyOf": [

src/test/java/org/prebid/server/bidder/nextmillennium/NextMillenniumBidderTest.java

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.prebid.server.bidder.nextmillennium;
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
45
import com.iab.openrtb.request.App;
56
import com.iab.openrtb.request.Banner;
67
import com.iab.openrtb.request.BidRequest;
@@ -78,8 +79,8 @@ public void makeHttpRequestsShouldUseBidRequestIdForAllRequests() {
7879
// given
7980
final BidRequest bidRequest = givenBidRequest(
8081
request -> request.id("id"),
81-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null)),
82-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null)));
82+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null, null, null)),
83+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null, null, null)));
8384

8485
// when
8586
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -97,8 +98,8 @@ public void makeHttpRequestsShouldUseBidRequestTestForAllRequests() {
9798
// given
9899
final BidRequest bidRequest = givenBidRequest(
99100
request -> request.test(1),
100-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null)),
101-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null)));
101+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null, null, null)),
102+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, null, null, null)));
102103

103104
// when
104105
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -116,8 +117,8 @@ public void makeHttpRequestsShouldUseImpExtBidderPlacementIdForStoredRequestId()
116117
// given
117118
final BidRequest bidRequest = givenBidRequest(
118119
identity(),
119-
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement1", null)),
120-
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement2", null)));
120+
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement1", null, null, null)),
121+
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement2", null, null, null)));
121122

122123
// when
123124
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -138,8 +139,8 @@ public void makeHttpRequestsShouldUseImpExtBidderGroupIdForStoredRequestId() {
138139
// given
139140
final BidRequest bidRequest = givenBidRequest(
140141
identity(),
141-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group1")),
142-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group2")));
142+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group1", null, null)),
143+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group2", null, null)));
143144

144145
// when
145146
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -168,10 +169,10 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
168169
.w(5)
169170
.h(6)
170171
.build()),
171-
ExtImpNextMillennium.of(null, "group1")),
172+
ExtImpNextMillennium.of(null, "group1", null, null)),
172173
givenImpWithExt(
173174
imp -> imp.banner(Banner.builder().w(7).h(8).build()),
174-
ExtImpNextMillennium.of(null, "group2")));
175+
ExtImpNextMillennium.of(null, "group2", null, null)));
175176

176177
// when
177178
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -187,19 +188,53 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
187188
.containsExactly("ggroup1;1x2;", "ggroup2;1x2;");
188189
}
189190

191+
@Test
192+
public void makeHttpRequestsShouldIncludeAdSlotsAndAllowedAdsInRequestAndImpExt() {
193+
// given
194+
final List<String> adSlots = List.of("slot1", "slot2");
195+
final List<String> allowedAds = List.of("ad1", "ad2");
196+
197+
final ExtImpNextMillennium extImp = ExtImpNextMillennium.of("placement123", null, adSlots, allowedAds);
198+
199+
final BidRequest bidRequest = givenBidRequest(
200+
identity(),
201+
givenImpWithExt(identity(), extImp));
202+
203+
// when
204+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
205+
206+
// then
207+
assertThat(result.getErrors()).isEmpty();
208+
assertThat(result.getValue()).hasSize(1);
209+
210+
final BidRequest actualRequest = result.getValue().getFirst().getPayload();
211+
212+
final ObjectNode requestExtNode = mapper.valueToTree(actualRequest.getExt());
213+
assertThat(requestExtNode.at("/nextMillennium/adSlots/0").asText()).isEqualTo("slot1");
214+
assertThat(requestExtNode.at("/nextMillennium/adSlots/1").asText()).isEqualTo("slot2");
215+
assertThat(requestExtNode.at("/nextMillennium/allowedAds/0").asText()).isEqualTo("ad1");
216+
assertThat(requestExtNode.at("/nextMillennium/allowedAds/1").asText()).isEqualTo("ad2");
217+
218+
final ObjectNode impExtNode = (ObjectNode) actualRequest.getImp().getFirst().getExt();
219+
assertThat(impExtNode.at("/nextMillennium/adSlots/0").asText()).isEqualTo("slot1");
220+
assertThat(impExtNode.at("/nextMillennium/adSlots/1").asText()).isEqualTo("slot2");
221+
assertThat(impExtNode.at("/nextMillennium/allowedAds/0").asText()).isEqualTo("ad1");
222+
assertThat(impExtNode.at("/nextMillennium/allowedAds/1").asText()).isEqualTo("ad2");
223+
}
224+
190225
@Test
191226
public void makeHttpRequestsShouldUseFirstImpBannerSizeForStoredRequestIds() {
192227
// given
193228
final BidRequest bidRequest = givenBidRequest(
194229
identity(),
195230
givenImpWithExt(
196231
imp -> imp.banner(Banner.builder().w(7).h(8).build()),
197-
ExtImpNextMillennium.of(null, "group1")),
232+
ExtImpNextMillennium.of(null, "group1", null, null)),
198233
givenImpWithExt(
199234
imp -> imp.banner(Banner.builder()
200235
.format(singletonList(Format.builder().w(1).h(2).build()))
201236
.build()),
202-
ExtImpNextMillennium.of(null, "group2")));
237+
ExtImpNextMillennium.of(null, "group2", null, null)));
203238

204239
// when
205240
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -220,8 +255,8 @@ public void makeHttpRequestsShouldUseAppDomainForStoredRequestId() {
220255
// given
221256
final BidRequest bidRequest = givenBidRequest(
222257
request -> request.app(App.builder().domain("appDomain").build()),
223-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group1")),
224-
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group2")));
258+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group1", null, null)),
259+
givenImpWithExt(identity(), ExtImpNextMillennium.of(null, "group2", null, null)));
225260

226261
// when
227262
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -242,8 +277,8 @@ public void makeHttpRequestsShouldUseSiteDomainForStoredRequestId() {
242277
// given
243278
final BidRequest bidRequest = givenBidRequest(
244279
request -> request.site(Site.builder().domain("siteDomain").build()),
245-
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement1", "group1")),
246-
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement2", "group2")));
280+
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement1", "group1", null, null)),
281+
givenImpWithExt(identity(), ExtImpNextMillennium.of("placement2", "group2", null, null)));
247282

248283
// when
249284
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -294,7 +329,7 @@ public void makeHttpRequestsImpExtComparison() {
294329
.h(90)
295330
.build()))
296331
.build()),
297-
ExtImpNextMillennium.of(placementId, null));
332+
ExtImpNextMillennium.of(placementId, null, null, null));
298333

299334
final ExtRequest extRequest = ExtRequest.of(ExtRequestPrebid.builder()
300335
.schains(emptyList())
@@ -346,7 +381,7 @@ public void makeHttpRequestsImpShouldBeIdenticalExceptExt() {
346381
.tagid("custom_imp_tagid")
347382
.secure(1)
348383
.banner(banner),
349-
ExtImpNextMillennium.of(placementId, null));
384+
ExtImpNextMillennium.of(placementId, null, null, null));
350385

351386
final BidRequest bidRequest = givenBidRequest(b -> b
352387
.id("c868fd0b-960c-4f49-a8d6-2b3e938b41f2")
@@ -386,7 +421,7 @@ public void makeHttpRequestsBidRequestShouldBeIdenticalExceptImpExt() {
386421
.tagid("custom_imp_tagid")
387422
.secure(1)
388423
.banner(banner),
389-
ExtImpNextMillennium.of(placementId, null));
424+
ExtImpNextMillennium.of(placementId, null, null, null));
390425

391426
final ExtRequest extRequest = ExtRequest.of(ExtRequestPrebid.builder()
392427
.schains(emptyList())
@@ -432,7 +467,7 @@ public void makeHttpRequestsShouldPreserveExtPrebidServer() {
432467
.id("test-request")
433468
.imp(singletonList(givenImpWithExt(
434469
imp -> imp.banner(Banner.builder().w(300).h(250).build()),
435-
ExtImpNextMillennium.of("placement_id", null))))
470+
ExtImpNextMillennium.of("placement_id", null, null, null))))
436471
.ext(extRequest)
437472
.build();
438473

src/test/resources/org/prebid/server/it/openrtb2/nextmillennium/test-auction-nextmillennium-request.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
},
1010
"ext": {
1111
"nextmillennium" : {
12-
"placement_id": "placement_id"
12+
"placement_id": "placement_id",
13+
"adSlots": ["slot-1", "slot-2"],
14+
"allowedAds": ["banner", "native"]
1315
}
1416
}
1517
}

src/test/resources/org/prebid/server/it/openrtb2/nextmillennium/test-nextmillennium-bid-request.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"secure": 1,
1111
"ext": {
1212
"nextMillennium" : {
13-
"nmmFlags" : [ "1" ]
13+
"nmmFlags" : [ "1" ],
14+
"adSlots": ["slot-1", "slot-2"],
15+
"allowedAds": ["banner", "native"]
1416
},
1517
"prebid": {
1618
"storedrequest": {
@@ -61,7 +63,9 @@
6163
},
6264
"nextMillennium": {
6365
"nmmFlags": [ "1" ],
64-
"nm_version": "v1.0.0",
66+
"adSlots": ["slot-1", "slot-2"],
67+
"allowedAds": ["banner", "native"],
68+
"nm_version": "v1.0.1",
6569
"server_version": "${json-unit.any-string}"
6670
}
6771
}

0 commit comments

Comments
 (0)