Skip to content

Commit 3f6fa1d

Browse files
authored
Unruly: Include GPID in request payload (#4259)
1 parent d5f53a4 commit 3f6fa1d

File tree

3 files changed

+45
-8
lines changed

3 files changed

+45
-8
lines changed

src/main/java/org/prebid/server/bidder/unruly/UnrulyBidder.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
import org.prebid.server.bidder.model.BidderError;
1616
import org.prebid.server.bidder.model.HttpRequest;
1717
import org.prebid.server.bidder.model.Result;
18+
import org.prebid.server.bidder.unruly.proto.UnrulyExtPrebid;
1819
import org.prebid.server.exception.PreBidException;
1920
import org.prebid.server.json.DecodeException;
2021
import org.prebid.server.json.JacksonMapper;
21-
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
22-
import org.prebid.server.proto.openrtb.ext.request.unruly.ExtImpUnruly;
2322
import org.prebid.server.proto.openrtb.ext.response.BidType;
2423
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
2524
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo;
@@ -34,7 +33,7 @@
3433

3534
public class UnrulyBidder implements Bidder<BidRequest> {
3635

37-
private static final TypeReference<ExtPrebid<?, ExtImpUnruly>> UNRULY_EXT_TYPE_REFERENCE =
36+
private static final TypeReference<UnrulyExtPrebid> UNRULY_EXT_TYPE_REFERENCE =
3837
new TypeReference<>() {
3938
};
4039

@@ -58,14 +57,17 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
5857

5958
private Imp modifyImp(Imp imp) {
6059

60+
final UnrulyExtPrebid unrulyExtPrebid = parseImpExt(imp);
6161
return imp.toBuilder()
62-
.ext(mapper.mapper().valueToTree(ExtPrebid.of(null, parseImpExt(imp))))
62+
.ext(mapper.mapper().valueToTree(UnrulyExtPrebid.of(
63+
unrulyExtPrebid.getBidder(),
64+
unrulyExtPrebid.getGpid())))
6365
.build();
6466
}
6567

66-
private ExtImpUnruly parseImpExt(Imp imp) {
68+
private UnrulyExtPrebid parseImpExt(Imp imp) {
6769
try {
68-
return mapper.mapper().convertValue(imp.getExt(), UNRULY_EXT_TYPE_REFERENCE).getBidder();
70+
return mapper.mapper().convertValue(imp.getExt(), UNRULY_EXT_TYPE_REFERENCE);
6971
} catch (IllegalArgumentException e) {
7072
throw new PreBidException(e.getMessage());
7173
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.prebid.server.bidder.unruly.proto;
2+
3+
import lombok.Value;
4+
import org.prebid.server.proto.openrtb.ext.request.unruly.ExtImpUnruly;
5+
6+
@Value(staticConstructor = "of")
7+
public class UnrulyExtPrebid {
8+
9+
ExtImpUnruly bidder;
10+
11+
String gpid;
12+
}

src/test/java/org/prebid/server/bidder/unruly/UnrulyBidderTest.java

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

33
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.JsonNode;
45
import com.fasterxml.jackson.databind.node.IntNode;
56
import com.fasterxml.jackson.databind.node.ObjectNode;
67
import com.fasterxml.jackson.databind.node.TextNode;
@@ -19,7 +20,8 @@
1920
import org.prebid.server.bidder.model.HttpRequest;
2021
import org.prebid.server.bidder.model.HttpResponse;
2122
import org.prebid.server.bidder.model.Result;
22-
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
23+
import org.prebid.server.bidder.unruly.proto.UnrulyExtPrebid;
24+
import org.prebid.server.proto.openrtb.ext.request.unruly.ExtImpUnruly;
2325

2426
import java.util.List;
2527
import java.util.Map;
@@ -65,6 +67,27 @@ public void makeHttpRequestsShouldReturnOneRequestPerImpWithExpectedHeaders() {
6567
tuple("Accept", "application/json"));
6668
}
6769

70+
@Test
71+
public void makeHttpRequestsShouldPassThroughGPID() {
72+
// given
73+
final BidRequest bidRequest = BidRequest.builder()
74+
.imp(singletonList(givenImp(identity())))
75+
.build();
76+
77+
// when
78+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
79+
80+
// then
81+
assertThat(result.getValue()).hasSize(1)
82+
.extracting(HttpRequest::getPayload)
83+
.flatExtracting(BidRequest::getImp)
84+
.extracting(Imp::getExt)
85+
.extracting(ext -> ext.get("gpid"))
86+
.extracting(JsonNode::asText)
87+
.first()
88+
.isEqualTo("gpid");
89+
}
90+
6891
@Test
6992
public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() {
7093
// given
@@ -288,7 +311,7 @@ private static BidRequest givenBidRequest(Function<Imp.ImpBuilder, Imp.ImpBuilde
288311

289312
private static Imp givenImp(Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer) {
290313
final ObjectNode impExt = mapper.valueToTree(
291-
ExtPrebid.of(null, mapper.createObjectNode().set("siteId", IntNode.valueOf(123))));
314+
UnrulyExtPrebid.of(ExtImpUnruly.of(123), "gpid"));
292315

293316
return impCustomizer.apply(
294317
Imp.builder()

0 commit comments

Comments
 (0)