Skip to content

Commit c0769e1

Browse files
Pubmatic Adapter: Forward skadn object in bid request (#4130)
1 parent c3f60d3 commit c0769e1

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/main/java/org/prebid/server/bidder/pubmatic/PubmaticBidder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class PubmaticBidder implements Bidder<BidRequest> {
7575
private static final String BIDDER_NAME = "pubmatic";
7676
private static final String AE = "ae";
7777
private static final String GP_ID = "gpid";
78+
private static final String SKADN = "skadn";
7879
private static final String IMP_EXT_PBADSLOT = "pbadslot";
7980
private static final String IMP_EXT_ADSERVER = "adserver";
8081
private static final List<String> IMP_EXT_DATA_RESERVED_FIELD = List.of(IMP_EXT_PBADSLOT, IMP_EXT_ADSERVER);
@@ -294,6 +295,9 @@ private ObjectNode makeKeywords(PubmaticBidderImpExt impExt) {
294295
if (impExt.getGpId() != null) {
295296
keywordsNode.put(GP_ID, impExt.getGpId());
296297
}
298+
if (impExt.getSkadn() != null) {
299+
keywordsNode.set(SKADN, impExt.getSkadn());
300+
}
297301

298302
return keywordsNode;
299303
}

src/main/java/org/prebid/server/bidder/pubmatic/model/request/PubmaticBidderImpExt.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ public class PubmaticBidderImpExt {
1616

1717
@JsonProperty("gpid")
1818
String gpId;
19+
20+
ObjectNode skadn;
1921
}

src/test/java/org/prebid/server/bidder/pubmatic/PubmaticBidderTest.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ public void makeHttpRequestsShouldAddImpExtAddUnitKeyKeyWordFromDataAdSlotIfAdSe
544544
ExtImpPubmatic.builder().build(),
545545
extData,
546546
null,
547+
null,
547548
null
548549
)))
549550
.build()))
@@ -577,6 +578,7 @@ public void makeHttpRequestsShouldAddImpExtAddUnitKeyKeyWordFromAdServerAdSlotIf
577578
ExtImpPubmatic.builder().build(),
578579
extData,
579580
null,
581+
null,
580582
null
581583
)))
582584
.build()))
@@ -611,6 +613,7 @@ public void makeHttpRequestsShouldAddImpExtWithKeyValWithDctrAndExtDataExceptFor
611613
ExtImpPubmatic.builder().dctr("dctr").build(),
612614
extData,
613615
null,
616+
null,
614617
null
615618
)))
616619
.build()))
@@ -648,6 +651,7 @@ public void makeHttpRequestsShouldAddImpExtWithKeyValWithExtDataWhenDctrIsAbsent
648651
ExtImpPubmatic.builder().dctr(null).build(),
649652
extData,
650653
null,
654+
null,
651655
null
652656
)))
653657
.build()))
@@ -675,7 +679,7 @@ public void makeHttpRequestsShouldAddImpExtAddAE() {
675679
.id("123")
676680
.banner(Banner.builder().build())
677681
.ext(mapper.valueToTree(PubmaticBidderImpExt.of(
678-
ExtImpPubmatic.builder().build(), null, 1, null)))
682+
ExtImpPubmatic.builder().build(), null, 1, null, null)))
679683
.build()))
680684
.build();
681685

@@ -700,7 +704,7 @@ public void makeHttpRequestsShouldAddImpExtAddGpId() {
700704
.id("123")
701705
.banner(Banner.builder().build())
702706
.ext(mapper.valueToTree(PubmaticBidderImpExt.of(
703-
ExtImpPubmatic.builder().build(), null, null, "gpId")))
707+
ExtImpPubmatic.builder().build(), null, null, "gpId", null)))
704708
.build()))
705709
.build();
706710

@@ -717,6 +721,34 @@ public void makeHttpRequestsShouldAddImpExtAddGpId() {
717721
.containsExactly(expectedImpExt);
718722
}
719723

724+
@Test
725+
public void makeHttpRequestsShouldAddImpExtAddSkadn() {
726+
// given
727+
final ObjectNode skadn = mapper.createObjectNode()
728+
.put("field1", 1)
729+
.put("field2", "value");
730+
final BidRequest bidRequest = BidRequest.builder()
731+
.imp(singletonList(Imp.builder()
732+
.id("123")
733+
.banner(Banner.builder().build())
734+
.ext(mapper.valueToTree(PubmaticBidderImpExt.of(
735+
ExtImpPubmatic.builder().build(), null, null, null, skadn)))
736+
.build()))
737+
.build();
738+
739+
// when
740+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
741+
742+
// then
743+
final ObjectNode expectedImpExt = mapper.createObjectNode().set("skadn", skadn);
744+
assertThat(result.getErrors()).isEmpty();
745+
assertThat(result.getValue())
746+
.extracting(HttpRequest::getPayload)
747+
.flatExtracting(BidRequest::getImp)
748+
.extracting(Imp::getExt)
749+
.containsExactly(expectedImpExt);
750+
}
751+
720752
@Test
721753
public void makeHttpRequestsShouldSetImpExtFromKeywordsSkippingKeysWithEmptyValues() {
722754
// given

0 commit comments

Comments
 (0)