Skip to content

Commit fbdb3d7

Browse files
committed
set domain to unknown if not defined and add a warning
1 parent cd2a02e commit fbdb3d7

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class SparteoBidder implements Bidder<BidRequest> {
4545
private static final String NETWORK_ID_MACRO = "{{NetworkId}}";
4646
private static final String DOMAIN_MACRO = "{{Domain}}";
4747
private static final String BUNDLE_QUERY_MACRO = "{{BundleQuery}}";
48+
private static final String UNKNOWN_DOMAIN = "unknown";
4849

4950
private static final TypeReference<ExtPrebid<?, ExtImpSparteo>> TYPE_REFERENCE =
5051
new TypeReference<>() { };
@@ -94,7 +95,7 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
9495

9596
final BidRequest outgoingRequest = builder.build();
9697

97-
final String finalEndpointUrl = replaceMacros(site, app, networkId);
98+
final String finalEndpointUrl = replaceMacros(site, app, networkId, errors);
9899
final HttpRequest<BidRequest> call = BidderUtil.defaultRequest(outgoingRequest, finalEndpointUrl, mapper);
99100

100101
return Result.of(Collections.singletonList(call), errors);
@@ -182,9 +183,13 @@ private ObjectNode ensureParamsNode(ExtPublisher extPublisher) {
182183
return paramsNode;
183184
}
184185

185-
private String replaceMacros(Site site, App app, String networkId) {
186+
private String replaceMacros(Site site, App app, String networkId, List<BidderError> errors) {
186187
final String domain = resolveDomain(site, app);
187188
final String bundle = Optional.ofNullable(app).map(App::getBundle).orElse(null);
189+
if (StringUtils.isBlank(domain)) {
190+
errors.add(BidderError.badInput(
191+
"Domain not found. Missing at least one of this fields: site.domain, site.page, app.domain."));
192+
}
188193
return resolveEndpoint(domain, networkId, bundle);
189194
}
190195

@@ -244,18 +249,15 @@ private String resolveDomain(Site site, App app) {
244249
}
245250

246251
private String resolveEndpoint(String domain, String networkId, String bundle) {
247-
String uri = endpointUrl.replace(NETWORK_ID_MACRO, HttpUtil.encodeUrl(networkId));
248-
249-
if (domain != null && !domain.isEmpty()) {
250-
uri = uri.replace(DOMAIN_MACRO, HttpUtil.encodeUrl(domain));
251-
}
252+
final String d = StringUtils.isBlank(domain) ? UNKNOWN_DOMAIN : domain;
253+
final String uri = endpointUrl
254+
.replace(NETWORK_ID_MACRO, HttpUtil.encodeUrl(networkId))
255+
.replace(DOMAIN_MACRO, HttpUtil.encodeUrl(d));
252256

253-
final String bundleQuery = (bundle != null && !bundle.isEmpty())
257+
final String bundleQuery = StringUtils.isNotBlank(bundle)
254258
? "&bundle=" + HttpUtil.encodeUrl(bundle)
255259
: "";
256-
uri = uri.replace(BUNDLE_QUERY_MACRO, bundleQuery);
257-
258-
return uri;
260+
return uri.replace(BUNDLE_QUERY_MACRO, bundleQuery);
259261
}
260262

261263
@Override

src/test/java/org/prebid/server/bidder/sparteo/SparteoBidderTest.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ public void makeHttpRequestsShouldSetNetworkIdOnSitePublisherExtWhenPresentInImp
6666
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
6767

6868
// then
69-
assertThat(result.getErrors()).isEmpty();
69+
assertMissingDomainWarning(result);
7070
assertThat(result.getValue())
7171
.extracting(HttpRequest::getMethod, HttpRequest::getUri)
72-
.containsExactly(tuple(HttpMethod.POST, "https://test.sparteo.com/endpoint?network_id=testNetworkId&domain={{Domain}}"));
72+
.containsExactly(tuple(HttpMethod.POST, "https://test.sparteo.com/endpoint?network_id=testNetworkId&domain=unknown"));
7373

7474
assertThat(result.getValue())
7575
.extracting(HttpRequest::getPayload)
@@ -107,7 +107,7 @@ public void makeHttpRequestsShouldUseFirstNetworkIdWhenMultipleImpsDefineIt() {
107107
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
108108

109109
// then
110-
assertThat(result.getErrors()).isEmpty();
110+
assertMissingDomainWarning(result);
111111
assertThat(result.getValue())
112112
.extracting(HttpRequest::getPayload)
113113
.extracting(BidRequest::getSite)
@@ -135,7 +135,7 @@ public void makeHttpRequestsShouldMergeSparteoParamsWithBidderParamsOnConflict()
135135
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
136136

137137
// then
138-
assertThat(result.getErrors()).isEmpty();
138+
assertMissingDomainWarning(result);
139139
assertThat(result.getValue())
140140
.extracting(HttpRequest::getPayload)
141141
.flatExtracting(BidRequest::getImp)
@@ -170,13 +170,13 @@ public void makeHttpRequestsShouldHandleRequestWithoutSiteOrPublisher() {
170170
sparteoBidder.makeHttpRequests(bidRequestNoPublisher);
171171

172172
// then
173-
assertThat(resultNoSite.getErrors()).isEmpty();
173+
assertMissingDomainWarning(resultNoPublisher);
174174
assertThat(resultNoSite.getValue())
175175
.extracting(HttpRequest::getPayload)
176176
.extracting(BidRequest::getSite)
177177
.containsNull();
178178

179-
assertThat(resultNoPublisher.getErrors()).isEmpty();
179+
assertMissingDomainWarning(resultNoPublisher);
180180
final BidRequest out = resultNoPublisher.getValue().get(0).getPayload();
181181
assertThat(out.getSite()).isNotNull();
182182
assertThat(out.getSite().getPublisher()).isNotNull();
@@ -207,7 +207,7 @@ public void makeHttpRequestsShouldMergeNetworkIdIntoExistingPublisherExtParams()
207207
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
208208

209209
// then
210-
assertThat(result.getErrors()).isEmpty();
210+
assertMissingDomainWarning(result);
211211
assertThat(result.getValue())
212212
.extracting(HttpRequest::getPayload)
213213
.extracting(BidRequest::getSite)
@@ -240,7 +240,7 @@ public void makeHttpRequestsShouldAddParamsToPublisherExtWhenExtExistsWithoutPar
240240
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
241241

242242
// then
243-
assertThat(result.getErrors()).isEmpty();
243+
assertMissingDomainWarning(result);
244244
assertThat(result.getValue())
245245
.extracting(HttpRequest::getPayload)
246246
.extracting(BidRequest::getSite)
@@ -1058,6 +1058,19 @@ private ObjectNode createBidExtWithEmptyPrebid() {
10581058
return bidExt;
10591059
}
10601060

1061+
private static void assertMissingDomainWarning(Result<?> result) {
1062+
assertThat(result.getErrors())
1063+
.hasSize(1)
1064+
.allSatisfy(err -> {
1065+
assertThat(err.getType()).isEqualTo(BidderError.Type.bad_input);
1066+
assertThat(err.getMessage())
1067+
.contains(
1068+
"Domain not found. "
1069+
+ "Missing at least one of this fields: site.domain, site.page, app.domain."
1070+
);
1071+
});
1072+
}
1073+
10611074
private static String normalize(String in) {
10621075
try {
10631076
final var m = SparteoBidder.class.getDeclaredMethod("normalizeHostname", String.class);

0 commit comments

Comments
 (0)