Skip to content

Commit 8c76a28

Browse files
committed
Unruly: Include GPID in request payload
1 parent c5fd12a commit 8c76a28

File tree

3 files changed

+64
-7
lines changed

3 files changed

+64
-7
lines changed

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +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.UnrulyExtImp;
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;
2222
import org.prebid.server.proto.openrtb.ext.request.unruly.ExtImpUnruly;
2323
import org.prebid.server.proto.openrtb.ext.response.BidType;
2424
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
@@ -34,7 +34,7 @@
3434

3535
public class UnrulyBidder implements Bidder<BidRequest> {
3636

37-
private static final TypeReference<ExtPrebid<?, ExtImpUnruly>> UNRULY_EXT_TYPE_REFERENCE =
37+
private static final TypeReference<UnrulyExtImp<?, ExtImpUnruly>> UNRULY_EXT_TYPE_REFERENCE =
3838
new TypeReference<>() {
3939
};
4040

@@ -58,14 +58,18 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
5858

5959
private Imp modifyImp(Imp imp) {
6060

61+
final UnrulyExtImp<?, ExtImpUnruly> unrulyExtImp = parseImpExt(imp);
6162
return imp.toBuilder()
62-
.ext(mapper.mapper().valueToTree(ExtPrebid.of(null, parseImpExt(imp))))
63+
.ext(mapper.mapper().valueToTree(UnrulyExtImp.of(
64+
null,
65+
unrulyExtImp.getBidder(),
66+
unrulyExtImp.getGpid())))
6367
.build();
6468
}
6569

66-
private ExtImpUnruly parseImpExt(Imp imp) {
70+
private UnrulyExtImp<?, ExtImpUnruly> parseImpExt(Imp imp) {
6771
try {
68-
return mapper.mapper().convertValue(imp.getExt(), UNRULY_EXT_TYPE_REFERENCE).getBidder();
72+
return mapper.mapper().convertValue(imp.getExt(), UNRULY_EXT_TYPE_REFERENCE);
6973
} catch (IllegalArgumentException e) {
7074
throw new PreBidException(e.getMessage());
7175
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.prebid.server.bidder.unruly.proto;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import lombok.Value;
6+
import org.prebid.server.proto.openrtb.ext.request.ExtImpAuctionEnvironment;
7+
8+
@Value(staticConstructor = "of")
9+
public class UnrulyExtImp<P, B> {
10+
11+
P prebid;
12+
13+
B bidder;
14+
15+
String gpid;
16+
17+
@JsonProperty("ae")
18+
@JsonInclude(value = JsonInclude.Include.NON_DEFAULT)
19+
ExtImpAuctionEnvironment auctionEnvironment;
20+
21+
public static <P, B> UnrulyExtImp<P, B> of(P prebid, B bidder, String gpid) {
22+
return of(prebid, bidder, gpid, null);
23+
}
24+
25+
public static <P, B> UnrulyExtImp<P, B> of(P prebid, B bidder) {
26+
return of(prebid, bidder, null, null);
27+
}
28+
}

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

Lines changed: 27 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,7 @@
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.UnrulyExtImp;
2324

2425
import java.util.List;
2526
import java.util.Map;
@@ -65,6 +66,27 @@ public void makeHttpRequestsShouldReturnOneRequestPerImpWithExpectedHeaders() {
6566
tuple("Accept", "application/json"));
6667
}
6768

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

289311
private static Imp givenImp(Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer) {
290312
final ObjectNode impExt = mapper.valueToTree(
291-
ExtPrebid.of(null, mapper.createObjectNode().set("siteId", IntNode.valueOf(123))));
313+
UnrulyExtImp.of(
314+
null,
315+
mapper.createObjectNode().set("siteId", IntNode.valueOf(123)),
316+
"gpid"));
292317

293318
return impCustomizer.apply(
294319
Imp.builder()

0 commit comments

Comments
 (0)