Skip to content

Commit 6e45aea

Browse files
arg-ttd-exception-for-malformed-endpoint
1 parent b5aa977 commit 6e45aea

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

src/main/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidder.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,17 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
9090
}
9191

9292
final BidRequest outgoingRequest = modifyRequest(request, modifiedImps, publisherId);
93+
94+
final String endpoint;
95+
try {
96+
endpoint = resolveEndpoint(sourceSupplyId);
97+
} catch (PreBidException e) {
98+
return Result.withError(BidderError.badInput(e.getMessage()));
99+
}
100+
93101
final HttpRequest<BidRequest> httpRequest = BidderUtil.defaultRequest(
94102
outgoingRequest,
95-
resolveEndpoint(sourceSupplyId),
103+
endpoint,
96104
mapper);
97105

98106
return Result.withValue(httpRequest);
@@ -166,6 +174,10 @@ private static App modifyApp(BidRequest request, String publisherId) {
166174
}
167175

168176
private String resolveEndpoint(String sourceSupplyId) {
177+
if (StringUtils.isBlank(sourceSupplyId) && StringUtils.isBlank(supplyId)) {
178+
throw new PreBidException("Either supplySourceId or a default endpoint must be provided");
179+
}
180+
169181
return endpointUrl.replace(
170182
SUPPLY_ID_MACRO,
171183
HttpUtil.encodeUrl(StringUtils.defaultString(ObjectUtils.defaultIfNull(sourceSupplyId, supplyId))));

src/test/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidderTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,21 @@ public void makeHttpRequestsShouldReturnErrorWhenImpExtCouldNotBeParsed() {
186186
assertThat(result.getValue()).isEmpty();
187187
}
188188

189+
@Test
190+
public void makeHttpRequestsShouldReturnErrorWhenBothSupplySourceIdAndSupplyIdAreNull() {
191+
final TheTradeDeskBidder bidderWithNullSupplyId = new TheTradeDeskBidder(ENDPOINT_URL, jacksonMapper, null);
192+
final BidRequest bidRequest = givenBidRequest(
193+
identity(),
194+
imp -> imp.ext(impExt("publisher", null)));
195+
196+
final Result<List<HttpRequest<BidRequest>>> result = bidderWithNullSupplyId.makeHttpRequests(bidRequest);
197+
198+
assertThat(result.getErrors()).hasSize(1);
199+
assertThat(result.getErrors().getFirst().getMessage())
200+
.isEqualTo("Either supplySourceId or a default endpoint must be provided");
201+
assertThat(result.getValue()).isEmpty();
202+
}
203+
189204
@Test
190205
public void makeHttpRequestsShouldReturnSiteWithExtImpPublisherWhenSiteAndAppArePresent() {
191206
final BidRequest bidRequest = givenBidRequest(

0 commit comments

Comments
 (0)