Skip to content

Commit 1dca8a2

Browse files
committed
AntoxaAntoxic code review
1 parent 15ef06e commit 1dca8a2

File tree

2 files changed

+172
-230
lines changed

2 files changed

+172
-230
lines changed

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

Lines changed: 66 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
3131
import org.prebid.server.util.BidderUtil;
3232
import org.prebid.server.util.HttpUtil;
33+
import org.apache.http.client.utils.URIBuilder;
3334

3435
import java.net.URI;
3536
import java.net.URISyntaxException;
@@ -43,9 +44,6 @@
4344
public class SparteoBidder implements Bidder<BidRequest> {
4445

4546
private static final String NETWORK_ID_MACRO = "{{NetworkId}}";
46-
private static final String SITE_DOMAIN_QUERY_MACRO = "{{SiteDomainQuery}}";
47-
private static final String APP_DOMAIN_QUERY_MACRO = "{{AppDomainQuery}}";
48-
private static final String BUNDLE_QUERY_MACRO = "{{BundleQuery}}";
4947
private static final String UNKNOWN_VALUE = "unknown";
5048

5149
private static final TypeReference<ExtPrebid<?, ExtImpSparteo>> TYPE_REFERENCE =
@@ -83,18 +81,14 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
8381
return Result.withErrors(errors);
8482
}
8583

86-
final BidRequest.BidRequestBuilder builder = request.toBuilder().imp(modifiedImps);
87-
8884
final Site site = request.getSite();
8985
final App app = request.getApp();
9086

91-
if (site != null) {
92-
builder.site(modifySite(site, networkId, mapper));
93-
} else if (app != null) {
94-
builder.app(modifyApp(app, networkId, mapper));
95-
}
96-
97-
final BidRequest outgoingRequest = builder.build();
87+
final BidRequest outgoingRequest = request.toBuilder()
88+
.imp(modifiedImps)
89+
.site(modifySite(site, networkId))
90+
.app(modifyApp(app, networkId))
91+
.build();
9892

9993
final String finalEndpointUrl = replaceMacros(site, app, networkId, errors);
10094
final HttpRequest<BidRequest> call = BidderUtil.defaultRequest(outgoingRequest, finalEndpointUrl, mapper);
@@ -118,7 +112,7 @@ private ObjectNode modifyImpExt(Imp imp) {
118112
return modifiedImpExt;
119113
}
120114

121-
private Site modifySite(Site site, String networkId, JacksonMapper mapper) {
115+
private Site modifySite(Site site, String networkId) {
122116
if (site == null) {
123117
return site;
124118
}
@@ -127,26 +121,12 @@ private Site modifySite(Site site, String networkId, JacksonMapper mapper) {
127121
? site.getPublisher()
128122
: Publisher.builder().build();
129123

130-
final ExtPublisher originalExt = originalPublisher.getExt();
131-
final ExtPublisher modifiedExt = originalExt != null
132-
? ExtPublisher.of(originalExt.getPrebid())
133-
: ExtPublisher.empty();
134-
135-
if (originalExt != null) {
136-
mapper.fillExtension(modifiedExt, originalExt);
137-
}
138-
139-
final ObjectNode paramsNode = ensureParamsNode(modifiedExt);
140-
paramsNode.put("networkId", networkId);
141-
142-
final Publisher modifiedPublisher = originalPublisher.toBuilder()
143-
.ext(modifiedExt)
144-
.build();
124+
final Publisher modifiedPublisher = modifiedPublisher(originalPublisher, networkId);
145125

146126
return site.toBuilder().publisher(modifiedPublisher).build();
147127
}
148128

149-
private App modifyApp(App app, String networkId, JacksonMapper mapper) {
129+
private App modifyApp(App app, String networkId) {
150130
if (app == null) {
151131
return app;
152132
}
@@ -155,23 +135,23 @@ private App modifyApp(App app, String networkId, JacksonMapper mapper) {
155135
? app.getPublisher()
156136
: Publisher.builder().build();
157137

158-
final ExtPublisher originalExt = originalPublisher.getExt();
159-
final ExtPublisher modifiedExt = originalExt != null
160-
? ExtPublisher.of(originalExt.getPrebid())
161-
: ExtPublisher.empty();
138+
final Publisher modifiedPublisher = modifiedPublisher(originalPublisher, networkId);
162139

163-
if (originalExt != null) {
164-
mapper.fillExtension(modifiedExt, originalExt);
165-
}
140+
return app.toBuilder().publisher(modifiedPublisher).build();
141+
}
142+
143+
private Publisher modifiedPublisher(Publisher originalPublisher, String networkId) {
144+
final ExtPublisher originalExt = originalPublisher.getExt();
145+
final ExtPublisher modifiedExt = originalExt == null
146+
? ExtPublisher.empty()
147+
: mapper.mapper().convertValue(originalExt, ExtPublisher.class);
166148

167149
final ObjectNode paramsNode = ensureParamsNode(modifiedExt);
168150
paramsNode.put("networkId", networkId);
169151

170-
final Publisher modifiedPublisher = originalPublisher.toBuilder()
152+
return originalPublisher.toBuilder()
171153
.ext(modifiedExt)
172154
.build();
173-
174-
return app.toBuilder().publisher(modifiedPublisher).build();
175155
}
176156

177157
private ObjectNode ensureParamsNode(ExtPublisher extPublisher) {
@@ -196,14 +176,44 @@ private String replaceMacros(Site site, App app, String networkId, List<BidderEr
196176
}
197177
}
198178

199-
if (UNKNOWN_VALUE.equals(bundle)) {
179+
if (app != null && UNKNOWN_VALUE.equals(bundle)) {
200180
errors.add(BidderError.badInput(
201181
"Bundle not found. Missing the app.bundle field."));
202182
}
203183
return resolveEndpoint(siteDomain, appDomain, networkId, bundle);
204184
}
205185

206-
private static String normalizeHostname(String host) {
186+
private String resolveSiteDomain(Site site) {
187+
return Optional.ofNullable(site)
188+
.map(s -> {
189+
final String domain = normalizeHostname(s.getDomain());
190+
return StringUtils.isNotEmpty(domain) ? domain : normalizeHostname(s.getPage());
191+
})
192+
.filter(StringUtils::isNotEmpty)
193+
.orElse(site != null ? UNKNOWN_VALUE : null);
194+
}
195+
196+
private String resolveAppDomain(App app) {
197+
return Optional.ofNullable(app)
198+
.map(App::getDomain)
199+
.map(SparteoBidder::normalizeHostname)
200+
.filter(StringUtils::isNotEmpty)
201+
.orElse(app != null ? UNKNOWN_VALUE : null);
202+
}
203+
204+
private String resolveBundle(App app) {
205+
if (app == null) {
206+
return null;
207+
}
208+
209+
return Optional.ofNullable(app.getBundle())
210+
.filter(rawBundle -> !rawBundle.isBlank())
211+
.map(String::trim)
212+
.filter(bundle -> !"null".equalsIgnoreCase(bundle))
213+
.orElse(UNKNOWN_VALUE);
214+
}
215+
216+
public static String normalizeHostname(String host) {
207217
String h = StringUtils.trimToEmpty(host);
208218
if (h.isEmpty()) {
209219
return "";
@@ -232,69 +242,24 @@ private static String normalizeHostname(String host) {
232242
return "null".equals(h) ? "" : h;
233243
}
234244

235-
private String resolveSiteDomain(Site site) {
236-
if (site != null) {
237-
final String siteDomain = normalizeHostname(site.getDomain());
238-
if (siteDomain != null && !siteDomain.isEmpty()) {
239-
return siteDomain;
240-
} else {
241-
final String fromPage = normalizeHostname(site.getPage());
242-
if (fromPage != null && !fromPage.isEmpty()) {
243-
return fromPage;
244-
}
245-
}
246-
return UNKNOWN_VALUE;
247-
}
248-
249-
return null;
250-
}
245+
private String resolveEndpoint(String siteDomain, String appDomain, String networkId, String bundle) {
246+
final String baseUrl = endpointUrl.replace(NETWORK_ID_MACRO, StringUtils.defaultString(networkId));
251247

252-
private String resolveAppDomain(App app) {
253-
if (app != null) {
254-
final String appDomain = normalizeHostname(app.getDomain());
255-
if (appDomain != null && !appDomain.isEmpty()) {
256-
return appDomain;
248+
try {
249+
final URIBuilder uriBuilder = new URIBuilder(baseUrl);
250+
if (StringUtils.isNotBlank(siteDomain)) {
251+
uriBuilder.addParameter("site_domain", siteDomain);
257252
}
258-
return UNKNOWN_VALUE;
259-
}
260-
261-
return null;
262-
}
263-
264-
private String resolveBundle(App app) {
265-
if (app == null) {
266-
return null;
267-
}
268-
269-
final String rawBundle = app.getBundle();
270-
if (rawBundle == null || rawBundle.isBlank()) {
271-
return UNKNOWN_VALUE;
272-
}
273-
274-
final String bundle = rawBundle.trim();
275-
if ("null".equalsIgnoreCase(bundle)) {
276-
return UNKNOWN_VALUE;
253+
if (StringUtils.isNotBlank(appDomain)) {
254+
uriBuilder.addParameter("app_domain", appDomain);
255+
}
256+
if (StringUtils.isNotBlank(bundle)) {
257+
uriBuilder.addParameter("bundle", bundle);
258+
}
259+
return uriBuilder.build().toString();
260+
} catch (URISyntaxException e) {
261+
throw new PreBidException("Failed to build endpoint URL", e);
277262
}
278-
279-
return bundle;
280-
}
281-
282-
private String resolveEndpoint(String siteDomain, String appDomain, String networkId, String bundle) {
283-
final String siteDomainQuery = StringUtils.isNotBlank(siteDomain)
284-
? "&site_domain=" + HttpUtil.encodeUrl(siteDomain)
285-
: "";
286-
final String appDomainQuery = StringUtils.isNotBlank(appDomain)
287-
? "&app_domain=" + HttpUtil.encodeUrl(appDomain)
288-
: "";
289-
final String bundleQuery = StringUtils.isNotBlank(bundle)
290-
? "&bundle=" + HttpUtil.encodeUrl(bundle)
291-
: "";
292-
293-
return endpointUrl
294-
.replace(NETWORK_ID_MACRO, StringUtils.defaultString(networkId))
295-
.replace(BUNDLE_QUERY_MACRO, bundleQuery)
296-
.replace(SITE_DOMAIN_QUERY_MACRO, siteDomainQuery)
297-
.replace(APP_DOMAIN_QUERY_MACRO, appDomainQuery);
298263
}
299264

300265
@Override

0 commit comments

Comments
 (0)