Skip to content

Commit f643658

Browse files
Add extra parameter to ExtImp of TelariaBidder (prebid#831)
1 parent 001d978 commit f643658

File tree

7 files changed

+81
-36
lines changed

7 files changed

+81
-36
lines changed

src/main/java/org/prebid/server/bidder/telaria/TelariaBidder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
import org.prebid.server.bidder.model.Result;
2525
import org.prebid.server.bidder.model.BidderError;
2626
import org.prebid.server.bidder.model.BidderBid;
27+
import org.prebid.server.bidder.telaria.model.TelariaRequestExt;
2728
import org.prebid.server.exception.PreBidException;
2829
import org.prebid.server.json.DecodeException;
2930
import org.prebid.server.json.JacksonMapper;
3031
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
32+
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
3133
import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpOutTelaria;
3234
import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpTelaria;
3335
import org.prebid.server.proto.openrtb.ext.response.BidType;
@@ -73,16 +75,21 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest bidRequ
7375
final String publisherId = getPublisherId(bidRequest);
7476
String seatCode = null;
7577
final BidRequest.BidRequestBuilder requestBuilder = bidRequest.toBuilder();
78+
ExtImpTelaria extImp = null;
7679
for (Imp imp : bidRequest.getImp()) {
7780
try {
78-
final ExtImpTelaria extImp = parseImpExt(imp);
81+
extImp = parseImpExt(imp);
7982
seatCode = extImp.getSeatCode();
8083
validImps.add(updateImp(imp, extImp, publisherId));
8184
} catch (PreBidException e) {
8285
return Result.emptyWithError(BidderError.badInput(e.getMessage()));
8386
}
8487
}
8588

89+
if (extImp != null && extImp.getExtra() != null) {
90+
requestBuilder.ext(mapper.fillExtension(ExtRequest.empty(), TelariaRequestExt.of(extImp.getExtra())));
91+
}
92+
8693
if (bidRequest.getSite() != null) {
8794
requestBuilder.site(modifySite(seatCode, bidRequest.getSite()));
8895
} else if (bidRequest.getApp() != null) {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.prebid.server.bidder.telaria.model;
2+
3+
import com.fasterxml.jackson.databind.node.ObjectNode;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Value;
6+
7+
@AllArgsConstructor(staticName = "of")
8+
@Value
9+
public class TelariaRequestExt {
10+
11+
ObjectNode extra;
12+
}

src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpTelaria.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.prebid.server.proto.openrtb.ext.request.telaria;
22

33
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
45
import lombok.AllArgsConstructor;
56
import lombok.Value;
67

@@ -13,4 +14,6 @@ public class ExtImpTelaria {
1314

1415
@JsonProperty("seatCode")
1516
String seatCode;
17+
18+
ObjectNode extra;
1619
}

src/test/java/org/prebid/server/bidder/telaria/TelariaBidderTest.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import org.prebid.server.bidder.model.HttpResponse;
2424
import org.prebid.server.bidder.model.Result;
2525
import org.prebid.server.bidder.smartrtb.SmartrtbBidder;
26+
import org.prebid.server.bidder.telaria.model.TelariaRequestExt;
2627
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
28+
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
2729
import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpTelaria;
2830

2931
import java.util.List;
@@ -121,7 +123,7 @@ public void makeHttpReturnErrorIfSeatCodeIsEmpty() {
121123
final BidRequest bidRequest = givenBidRequest(
122124
impBuilder -> impBuilder
123125
.ext(mapper.valueToTree(ExtPrebid.of(null,
124-
ExtImpTelaria.of("adCode", null)))));
126+
ExtImpTelaria.of("adCode", null, mapper.createObjectNode())))));
125127

126128
// when
127129
final Result<List<HttpRequest<BidRequest>>> result = telariaBidder.makeHttpRequests(bidRequest);
@@ -130,6 +132,53 @@ public void makeHttpReturnErrorIfSeatCodeIsEmpty() {
130132
assertThat(result.getErrors()).hasSize(1).containsOnly(BidderError.badInput("Telaria: Seat Code required"));
131133
}
132134

135+
@Test
136+
public void makeHttpRequestsShouldNotChangeExtIfExtExtraIsMissing() {
137+
// given
138+
final BidRequest bidRequest = givenBidRequest(
139+
impBuilder -> impBuilder
140+
.ext(mapper.valueToTree(ExtPrebid.of(null,
141+
ExtImpTelaria.of("adCode", "seatCode", mapper.createObjectNode())))));
142+
143+
// when
144+
final Result<List<HttpRequest<BidRequest>>> result = telariaBidder.makeHttpRequests(bidRequest);
145+
146+
// then
147+
assertThat(result.getErrors()).isEmpty();
148+
assertThat(result.getValue()).hasSize(1)
149+
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
150+
.extracting(BidRequest::getExt)
151+
.extracting(ExtRequest::getPrebid)
152+
.containsNull();
153+
}
154+
155+
@Test
156+
public void makeHttpRequestsShouldChangeRequestExtIfExtImpExtraIsNotEmpty() {
157+
// given
158+
final BidRequest bidRequest = BidRequest.builder()
159+
.imp(singletonList(
160+
Imp.builder()
161+
.video(Video.builder().build())
162+
.ext(mapper.valueToTree(ExtPrebid.of(null,
163+
ExtImpTelaria.of("adCode", "seatCode",
164+
mapper.createObjectNode().put("custom", "1234")))))
165+
.build()))
166+
.site(Site.builder().build())
167+
.app(App.builder().build())
168+
.build();
169+
170+
// when
171+
final Result<List<HttpRequest<BidRequest>>> result = telariaBidder.makeHttpRequests(bidRequest);
172+
173+
// then
174+
assertThat(result.getErrors()).isEmpty();
175+
assertThat(result.getValue()).hasSize(1)
176+
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
177+
.extracting(BidRequest::getExt)
178+
.containsOnly(jacksonMapper.fillExtension(
179+
ExtRequest.empty(), TelariaRequestExt.of(mapper.createObjectNode().put("custom", "1234"))));
180+
}
181+
133182
@Test
134183
public void makeHttpRequestsShouldNotSetAppPublisherIdIfSiteIsNotNull() {
135184
// given
@@ -288,7 +337,7 @@ private static Imp givenImp(Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomiz
288337
.id("123")
289338
.video(Video.builder().build())
290339
.ext(mapper.valueToTree(ExtPrebid.of(null,
291-
ExtImpTelaria.of("adCode", "seatCode")))))
340+
ExtImpTelaria.of("adCode", "seatCode", null)))))
292341
.build();
293342
}
294343

src/test/java/org/prebid/server/it/TelariaTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void openrtb2AuctionShouldRespondWithBidsFromTelaria() throws IOException
3535
.withHeader("x-openrtb-version", equalTo("2.5"))
3636
.withHeader("Accept-Encoding", equalTo("gzip"))
3737
.withHeader("Accept-Language", equalTo("en"))
38-
.withHeader("Content-Length", equalTo("933"))
38+
.withHeader("Content-Length", equalTo("677"))
3939
.withHeader("DNT", equalTo("2"))
4040
.withHeader("Host", equalTo("localhost:8090"))
4141
.withRequestBody(

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
"ext": {
2121
"telaria": {
2222
"adCode": "my-adcode",
23-
"seatCode": "my-seatcode"
23+
"seatCode": "my-seatcode",
24+
"extra": {
25+
"custom": "1234"
26+
}
2427
}
2528
}
2629
}

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

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -67,37 +67,8 @@
6767
}
6868
},
6969
"ext": {
70-
"prebid": {
71-
"currency": {
72-
"rates": {
73-
"EUR": {
74-
"USD": 1.2406
75-
},
76-
"USD": {
77-
"EUR": 0.811
78-
}
79-
}
80-
},
81-
"targeting": {
82-
"includebidderkeys": true,
83-
"includewinners": true,
84-
"pricegranularity": {
85-
"precision": 2,
86-
"ranges": [
87-
{
88-
"max": 20,
89-
"increment": 0.1
90-
}
91-
]
92-
}
93-
},
94-
"cache": {
95-
"bids": {},
96-
"vastxml": {
97-
"ttlseconds": 120
98-
}
99-
},
100-
"auctiontimestamp": 1000
70+
"extra": {
71+
"custom": "1234"
10172
}
10273
}
10374
}

0 commit comments

Comments
 (0)