Skip to content

Commit bc27e37

Browse files
Adnuntius: Pass targeting to ad server (#4282)
1 parent ec3bcbf commit bc27e37

File tree

5 files changed

+112
-11
lines changed

5 files changed

+112
-11
lines changed

src/main/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidder.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
5353
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
5454
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntius;
55+
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntiusTargeting;
5556
import org.prebid.server.proto.openrtb.ext.response.BidType;
5657
import org.prebid.server.proto.openrtb.ext.response.ExtBidDsa;
5758
import org.prebid.server.util.BidderUtil;
@@ -158,12 +159,8 @@ private static String resolveNetwork(ExtImpAdnuntius extImpAdnuntius) {
158159
}
159160

160161
private static AdnuntiusRequestAdUnit makeBannerAdUnit(Imp imp, ExtImpAdnuntius extImpAdnuntius) {
161-
final String auId = extImpAdnuntius.getAuId();
162-
return AdnuntiusRequestAdUnit.builder()
163-
.auId(auId)
164-
.targetId(targetId(auId, imp.getId(), "banner"))
162+
return makeAdUnitBuilder(imp, extImpAdnuntius, "banner")
165163
.dimensions(createDimensions(imp.getBanner()))
166-
.maxDeals(resolveMaxDeals(extImpAdnuntius))
167164
.build();
168165
}
169166

@@ -197,13 +194,9 @@ private static List<List<Integer>> createDimensions(Banner banner) {
197194
}
198195

199196
private AdnuntiusRequestAdUnit makeNativeAdUnit(Imp imp, ExtImpAdnuntius extImpAdnuntius) {
200-
final String auId = extImpAdnuntius.getAuId();
201-
return AdnuntiusRequestAdUnit.builder()
202-
.auId(auId)
203-
.adType("NATIVE")
204-
.targetId(targetId(auId, imp.getId(), "native"))
205-
.maxDeals(resolveMaxDeals(extImpAdnuntius))
197+
return makeAdUnitBuilder(imp, extImpAdnuntius, "native")
206198
.nativeRequest(AdnuntiusNativeRequest.of(parseNativeRequest(imp)))
199+
.adType("NATIVE")
207200
.build();
208201
}
209202

@@ -215,6 +208,26 @@ private ObjectNode parseNativeRequest(Imp imp) {
215208
}
216209
}
217210

211+
private static AdnuntiusRequestAdUnit.AdnuntiusRequestAdUnitBuilder makeAdUnitBuilder(
212+
Imp imp,
213+
ExtImpAdnuntius extImpAdnuntius,
214+
String bidType) {
215+
216+
final String auId = extImpAdnuntius.getAuId();
217+
final ExtImpAdnuntiusTargeting targeting = ObjectUtils.defaultIfNull(
218+
extImpAdnuntius.getTargeting(),
219+
ExtImpAdnuntiusTargeting.builder().build());
220+
return AdnuntiusRequestAdUnit.builder()
221+
.auId(auId)
222+
.targetId(targetId(auId, imp.getId(), bidType))
223+
.maxDeals(resolveMaxDeals(extImpAdnuntius))
224+
.category(targeting.getCategory())
225+
.segments(targeting.getSegments())
226+
.keywords(targeting.getKeywords())
227+
.keyValues(targeting.getKeyValues())
228+
.adUnitMatchingLabel(targeting.getAdUnitMatchingLabel());
229+
}
230+
218231
private static Integer resolveMaxDeals(ExtImpAdnuntius extImpAdnuntius) {
219232
final Integer maxDeals = extImpAdnuntius.getMaxDeals();
220233
return maxDeals != null && maxDeals > 0 ? maxDeals : null;

src/main/java/org/prebid/server/bidder/adnuntius/model/request/AdnuntiusRequestAdUnit.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Value;
66

77
import java.util.List;
8+
import java.util.Map;
89

910
@Builder(toBuilder = true)
1011
@Value
@@ -26,4 +27,17 @@ public class AdnuntiusRequestAdUnit {
2627

2728
@JsonProperty("adType")
2829
String adType;
30+
31+
@JsonProperty("c")
32+
List<String> category;
33+
34+
List<String> segments;
35+
36+
List<String> keywords;
37+
38+
@JsonProperty("kv")
39+
Map<String, List<String>> keyValues;
40+
41+
@JsonProperty("auml")
42+
List<String> adUnitMatchingLabel;
2943
}

src/main/java/org/prebid/server/proto/openrtb/ext/request/adnuntius/ExtImpAdnuntius.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ public class ExtImpAdnuntius {
2121

2222
@JsonProperty("bidType")
2323
String bidType;
24+
25+
ExtImpAdnuntiusTargeting targeting;
2426
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.prebid.server.proto.openrtb.ext.request.adnuntius;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.Builder;
5+
import lombok.Value;
6+
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
@Value
11+
@Builder
12+
public class ExtImpAdnuntiusTargeting {
13+
14+
@JsonProperty("c")
15+
List<String> category;
16+
17+
List<String> segments;
18+
19+
List<String> keywords;
20+
21+
@JsonProperty("kv")
22+
Map<String, List<String>> keyValues;
23+
24+
@JsonProperty("auml")
25+
List<String> adUnitMatchingLabel;
26+
27+
28+
}

src/test/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidderTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
4646
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
4747
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntius;
48+
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntiusTargeting;
4849
import org.prebid.server.proto.openrtb.ext.response.BidType;
4950
import org.prebid.server.util.HttpUtil;
5051

@@ -201,6 +202,49 @@ public void makeHttpRequestsShouldNotReturnAdTypeForBannerImp() {
201202
.containsNull();
202203
}
203204

205+
@Test
206+
public void makeHttpRequestsShouldReturnTargetingFieldsWhenTargetingIsPresent() {
207+
// given
208+
final ExtImpAdnuntiusTargeting targeting = ExtImpAdnuntiusTargeting.builder()
209+
.category(List.of("1", "2"))
210+
.keywords(List.of("3", "4"))
211+
.segments(List.of("5", "6"))
212+
.adUnitMatchingLabel(List.of("7", "8"))
213+
.keyValues(Map.of("9", List.of("10", "11")))
214+
.build();
215+
final BidRequest bidRequest = givenBidRequest(givenBannerAndNativeImp(
216+
ExtImpAdnuntius.builder().targeting(targeting).build(),
217+
identity()));
218+
219+
// when
220+
final Result<List<HttpRequest<AdnuntiusRequest>>> result = target.makeHttpRequests(bidRequest);
221+
222+
// then
223+
assertThat(result.getErrors()).isEmpty();
224+
assertThat(result.getValue())
225+
.extracting(HttpRequest::getPayload)
226+
.flatExtracting(AdnuntiusRequest::getAdUnits)
227+
.extracting(
228+
AdnuntiusRequestAdUnit::getCategory,
229+
AdnuntiusRequestAdUnit::getKeywords,
230+
AdnuntiusRequestAdUnit::getSegments,
231+
AdnuntiusRequestAdUnit::getKeyValues,
232+
AdnuntiusRequestAdUnit::getAdUnitMatchingLabel)
233+
.containsExactly(
234+
tuple(
235+
List.of("1", "2"),
236+
List.of("3", "4"),
237+
List.of("5", "6"),
238+
Map.of("9", List.of("10", "11")),
239+
List.of("7", "8")),
240+
tuple(
241+
List.of("1", "2"),
242+
List.of("3", "4"),
243+
List.of("5", "6"),
244+
Map.of("9", List.of("10", "11")),
245+
List.of("7", "8")));
246+
}
247+
204248
@Test
205249
public void makeHttpRequestsShouldReturnRequestsWithDimensionsIfBannerHighAndWidthArePresent() {
206250
// given

0 commit comments

Comments
 (0)