From 016c8e1a551836aa3b875ad4a041d1a739f07059 Mon Sep 17 00:00:00 2001 From: Danylo Date: Mon, 6 Apr 2026 16:57:13 +0200 Subject: [PATCH 1/6] Add `vertx-uri-template` --- ...elIdentityProcessedAuctionRequestHook.java | 2 +- extra/pom.xml | 19 ---- pom.xml | 12 +-- .../server/auction/IpAddressHelper.java | 10 +- .../bidder/eplanning/EplanningBidder.java | 4 +- .../server/bidder/missena/MissenaBidder.java | 5 +- .../richaudience/RichaudienceBidder.java | 19 ++-- .../server/cache/utils/CacheServiceUtil.java | 23 +++-- .../server/floors/PriceFloorFetcher.java | 4 +- .../prebid/server/handler/OptoutHandler.java | 7 +- .../settings/HttpApplicationSettings.java | 8 +- .../java/org/prebid/server/util/HttpUtil.java | 58 +++-------- .../org/prebid/server/util/UriTemplate.java | 97 +++++++++++++++++++ .../vertx/httpclient/BasicHttpClient.java | 6 +- .../CircuitBreakerSecuredHttpClient.java | 6 +- .../cache/BasicPbcStorageServiceTest.java | 6 +- .../server/cache/CoreCacheServiceTest.java | 60 ++++++------ 17 files changed, 203 insertions(+), 143 deletions(-) create mode 100644 src/main/java/org/prebid/server/util/UriTemplate.java diff --git a/extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java b/extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java index 3afdb146018..47fb66db407 100644 --- a/extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java +++ b/extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java @@ -72,7 +72,7 @@ public LiveIntentOmniChannelIdentityProcessedAuctionRequestHook(LiveIntentOmniCh double logSamplingRate) { this.config = Objects.requireNonNull(config); - HttpUtil.validateUrlSyntax(config.getIdentityResolutionEndpoint()); + HttpUtil.validateUrl(config.getIdentityResolutionEndpoint()); this.mapper = Objects.requireNonNull(mapper); this.httpClient = Objects.requireNonNull(httpClient); this.logSamplingRate = logSamplingRate; diff --git a/extra/pom.xml b/extra/pom.xml index 1a43c1b8ace..873ce0e65c3 100644 --- a/extra/pom.xml +++ b/extra/pom.xml @@ -39,9 +39,7 @@ 4.4 1.27.1 3.6.1 - 1.10.0 2.1 - 4.5.14 5.5.1 6.8.0 1.5.6 @@ -137,23 +135,6 @@ commons-math3 ${commons-math3.version} - - commons-validator - commons-validator - ${commons-validator.version} - - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - commons-logging - commons-logging - - - com.github.seancfoley ipaddress diff --git a/pom.xml b/pom.xml index 8ef80350c78..86fa067ddfb 100644 --- a/pom.xml +++ b/pom.xml @@ -80,6 +80,10 @@ io.vertx vertx-auth-common + + io.vertx + vertx-uri-template + com.ongres.scram client @@ -110,14 +114,6 @@ org.apache.commons commons-math3 - - org.apache.httpcomponents - httpclient - - - commons-validator - commons-validator - com.github.seancfoley ipaddress diff --git a/src/main/java/org/prebid/server/auction/IpAddressHelper.java b/src/main/java/org/prebid/server/auction/IpAddressHelper.java index 523219fd511..36a2a3e61c5 100644 --- a/src/main/java/org/prebid/server/auction/IpAddressHelper.java +++ b/src/main/java/org/prebid/server/auction/IpAddressHelper.java @@ -5,17 +5,23 @@ import inet.ipaddr.IPAddressString; import inet.ipaddr.IPAddressStringParameters; import org.apache.commons.lang3.StringUtils; -import org.apache.http.conn.util.InetAddressUtils; import org.prebid.server.auction.model.IpAddress; import org.prebid.server.log.Logger; import org.prebid.server.log.LoggerFactory; import java.util.List; +import java.util.regex.Pattern; public class IpAddressHelper { private static final Logger logger = LoggerFactory.getLogger(IpAddressHelper.class); + private static final Pattern IP_V4_PATTERN = Pattern.compile(""" + ^\ + (?:[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.\ + (?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){2}\ + (?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ + """); private static final IPAddressStringParameters IP_ADDRESS_VALIDATION_OPTIONS = IPAddressString.DEFAULT_VALIDATION_OPTIONS.toBuilder() .allowSingleSegment(false) @@ -73,7 +79,7 @@ public IpAddress toIpAddress(String ip) { } public String maskIpv4(String ip) { - if (StringUtils.isBlank(ip) || !InetAddressUtils.isIPv4Address(ip)) { + if (StringUtils.isBlank(ip) || !IP_V4_PATTERN.matcher(ip).matches()) { return ip; } diff --git a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java index 99beb0538bf..03422d2b75b 100644 --- a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java +++ b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java @@ -286,8 +286,8 @@ private String resolveRequestUri(BidRequest request, List requestsString private static URL parseUrl(String url) { try { - return new URL(url); - } catch (MalformedURLException e) { + return HttpUtil.parseUrl(url); + } catch (MalformedURLException | URISyntaxException e) { throw new PreBidException("Invalid url: " + url, e); } } diff --git a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java index eacc3a49541..a9f363d6b4b 100644 --- a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java +++ b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java @@ -29,6 +29,7 @@ import java.math.BigDecimal; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -169,10 +170,10 @@ private MultiMap makeHeaders(Device device, Site site) { if (site != null && StringUtils.isNotBlank(site.getPage())) { HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.REFERER_HEADER, site.getPage()); try { - final URL url = new URL(site.getPage()); + final URL url = HttpUtil.parseUrl(site.getPage()); final String origin = url.getProtocol() + "://" + url.getHost(); HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.ORIGIN_HEADER, origin); - } catch (MalformedURLException e) { + } catch (MalformedURLException | URISyntaxException e) { // do nothing } } diff --git a/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java b/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java index a156be6c94e..ebc38e37ffb 100644 --- a/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java +++ b/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java @@ -31,6 +31,7 @@ import org.prebid.server.util.HttpUtil; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -163,13 +164,17 @@ private static App modifyApp(App originalApp, String tagId) { } private static Optional extractUrl(Site site) { - return Optional.ofNullable(site).map(Site::getPage).map(page -> { - try { - return new URL(page); - } catch (MalformedURLException e) { - return null; - } - }); + return Optional.ofNullable(site) + .map(Site::getPage) + .map(RichaudienceBidder::parseUrl); + } + + private static URL parseUrl(String page) { + try { + return HttpUtil.parseUrl(page); + } catch (MalformedURLException | URISyntaxException e) { + return null; + } } private static Imp modifyImp(Imp imp, ExtImpRichaudience extImp, boolean isSecure) { diff --git a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java index fdde5f610c0..9fd2531d275 100644 --- a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java +++ b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java @@ -4,6 +4,8 @@ import org.prebid.server.util.HttpUtil; import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; public class CacheServiceUtil { @@ -17,28 +19,29 @@ private CacheServiceUtil() { public static URL getCacheEndpointUrl(String cacheSchema, String cacheHost, String path) { try { - final URL baseUrl = getCacheBaseUrl(cacheSchema, cacheHost); - return new URL(baseUrl, path); - } catch (MalformedURLException e) { + return toUrl(cacheSchema, cacheHost, path, null); + } catch (URISyntaxException | MalformedURLException e) { throw new IllegalArgumentException("Could not get cache endpoint for prebid cache service", e); } } - private static URL getCacheBaseUrl(String cacheSchema, String cacheHost) throws MalformedURLException { - return new URL(cacheSchema + "://" + cacheHost); - } - public static String getCachedAssetUrlTemplate(String cacheSchema, String cacheHost, String path, String cacheQuery) { try { - final URL baseUrl = getCacheBaseUrl(cacheSchema, cacheHost); - return new URL(baseUrl, path + "?" + cacheQuery).toString(); - } catch (MalformedURLException e) { + return toUrl(cacheSchema, cacheHost, path, cacheQuery).toString(); + } catch (URISyntaxException | MalformedURLException e) { throw new IllegalArgumentException("Could not get cached asset url template for prebid cache service", e); } } + private static URL toUrl(String cacheSchema, + String cacheHost, + String path, + String cacheQuery) throws URISyntaxException, MalformedURLException { + + return new URI(cacheSchema, null, cacheHost, -1, path, cacheQuery, null).toURL(); + } } diff --git a/src/main/java/org/prebid/server/floors/PriceFloorFetcher.java b/src/main/java/org/prebid/server/floors/PriceFloorFetcher.java index b1cc8c257b2..4db7d31d0e7 100644 --- a/src/main/java/org/prebid/server/floors/PriceFloorFetcher.java +++ b/src/main/java/org/prebid/server/floors/PriceFloorFetcher.java @@ -2,6 +2,7 @@ import com.github.benmanes.caffeine.cache.Caffeine; import io.netty.channel.ConnectTimeoutException; +import io.netty.handler.codec.http.HttpResponseStatus; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.http.HttpHeaders; @@ -11,7 +12,6 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.apache.http.HttpStatus; import org.prebid.server.exception.PreBidException; import org.prebid.server.execution.timeout.TimeoutFactory; import org.prebid.server.floors.model.PriceFloorData; @@ -165,7 +165,7 @@ private ResponseCacheInfo parseFloorResponse(HttpClientResponse httpClientRespon AccountPriceFloorsFetchConfig fetchConfig) { final int statusCode = httpClientResponse.getStatusCode(); - if (statusCode != HttpStatus.SC_OK) { + if (statusCode != HttpResponseStatus.OK.code()) { throw new PreBidException("Failed to request, provider respond with status %s".formatted(statusCode)); } final String body = httpClientResponse.getBody(); diff --git a/src/main/java/org/prebid/server/handler/OptoutHandler.java b/src/main/java/org/prebid/server/handler/OptoutHandler.java index 5d9885c70ec..c6557bec430 100644 --- a/src/main/java/org/prebid/server/handler/OptoutHandler.java +++ b/src/main/java/org/prebid/server/handler/OptoutHandler.java @@ -18,7 +18,7 @@ import org.prebid.server.vertx.verticles.server.application.ApplicationResource; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URISyntaxException; import java.util.List; import java.util.Objects; @@ -121,9 +121,8 @@ private static String getRequestParam(RoutingContext routingContext, String para public static String getOptoutRedirectUrl(String externalUrl) { try { - final URL url = new URL(externalUrl); - return new URL(url.toExternalForm() + "/static/optout.html").toString(); - } catch (MalformedURLException e) { + return HttpUtil.parseUrl(externalUrl + "/static/optout.html").toString(); + } catch (URISyntaxException | MalformedURLException e) { throw new IllegalArgumentException("Could not get optout redirect url", e); } } diff --git a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java index c0d899508c4..13f20d2c4f9 100644 --- a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java @@ -95,10 +95,10 @@ public HttpApplicationSettings(boolean isRfc3986Compatible, JacksonMapper mapper) { this.isRfc3986Compatible = isRfc3986Compatible; - this.endpoint = HttpUtil.validateUrlSyntax(Objects.requireNonNull(endpoint)); - this.ampEndpoint = HttpUtil.validateUrlSyntax(Objects.requireNonNull(ampEndpoint)); - this.videoEndpoint = HttpUtil.validateUrlSyntax(Objects.requireNonNull(videoEndpoint)); - this.categoryEndpoint = HttpUtil.validateUrlSyntax(Objects.requireNonNull(categoryEndpoint)); + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.ampEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(ampEndpoint)); + this.videoEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(videoEndpoint)); + this.categoryEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(categoryEndpoint)); this.httpClient = Objects.requireNonNull(httpClient); this.mapper = Objects.requireNonNull(mapper); } diff --git a/src/main/java/org/prebid/server/util/HttpUtil.java b/src/main/java/org/prebid/server/util/HttpUtil.java index e08a276c6fa..6329bab7074 100644 --- a/src/main/java/org/prebid/server/util/HttpUtil.java +++ b/src/main/java/org/prebid/server/util/HttpUtil.java @@ -8,7 +8,6 @@ import io.vertx.core.http.HttpServerResponse; import io.vertx.ext.web.RoutingContext; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.validator.routines.UrlValidator; import org.prebid.server.log.ConditionalLogger; import org.prebid.server.log.Logger; import org.prebid.server.log.LoggerFactory; @@ -16,6 +15,8 @@ import org.prebid.server.model.HttpRequestContext; import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; @@ -28,9 +29,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; -/** - * This class consists of {@code static} utility methods for operating HTTP requests. - */ public final class HttpUtil { private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class); @@ -82,55 +80,26 @@ public final class HttpUtil { public static final CharSequence SEC_CH_UA_MODEL = HttpHeaders.createOptimized("Sec-CH-UA-Model"); public static final CharSequence SEC_CH_UA_FULL_VERSION_LIST = HttpHeaders.createOptimized("Sec-CH-UA-Full-Version-List"); - public static final String MACROS_OPEN = "{{"; - public static final String MACROS_CLOSE = "}}"; - - private static final UrlValidator URL_VALIDAROR = UrlValidator.getInstance(); private HttpUtil() { } - /** - * Checks the input string for using as URL. - */ - @Deprecated - public static String validateUrl(String url) { - if (containsMacrosses(url)) { - return url; - } + public static URL parseUrl(String url) throws URISyntaxException, MalformedURLException { + return new URI(url).toURL(); + } + public static String validateUrl(String url) { try { - return new URL(url).toString(); - } catch (MalformedURLException e) { + return parseUrl(url).toString(); + } catch (URISyntaxException | MalformedURLException e) { throw new IllegalArgumentException("URL supplied is not valid: " + url, e); } } - public static String validateUrlSyntax(String url) { - if (containsMacrosses(url) || URL_VALIDAROR.isValid(url)) { - return url; - } - - throw new IllegalArgumentException("URL supplied is not valid: " + url); - } - - // TODO: We need our own way to work with url macrosses - private static boolean containsMacrosses(String url) { - return StringUtils.contains(url, MACROS_OPEN) && StringUtils.contains(url, MACROS_CLOSE); - } - - /** - * Returns encoded URL for the given value. - *

- * The result can be safety used as the query string. - */ public static String encodeUrl(String value) { return URLEncoder.encode(value, StandardCharsets.UTF_8); } - /** - * Returns decoded value if supplied is not null, otherwise returns null. - */ public static String decodeUrl(String value) { if (StringUtils.isBlank(value)) { return null; @@ -138,18 +107,12 @@ public static String decodeUrl(String value) { return URLDecoder.decode(value, StandardCharsets.UTF_8); } - /** - * Creates general headers for request. - */ public static MultiMap headers() { return MultiMap.caseInsensitiveMultiMap() .add(CONTENT_TYPE_HEADER, APPLICATION_JSON_CONTENT_TYPE) .add(ACCEPT_HEADER, HttpHeaderValues.APPLICATION_JSON); } - /** - * Creates header from name and value, when value is not null or empty string. - */ public static void addHeaderIfValueIsNotEmpty(MultiMap headers, CharSequence headerName, CharSequence headerValue) { if (StringUtils.isNotEmpty(headerValue)) { headers.add(headerName, headerValue); @@ -160,9 +123,10 @@ public static String getHostFromUrl(String url) { if (StringUtils.isBlank(url)) { return null; } + try { - return new URL(url).getHost(); - } catch (MalformedURLException e) { + return parseUrl(url).getHost(); + } catch (URISyntaxException | MalformedURLException e) { return null; } } diff --git a/src/main/java/org/prebid/server/util/UriTemplate.java b/src/main/java/org/prebid/server/util/UriTemplate.java new file mode 100644 index 00000000000..d0da1a98b29 --- /dev/null +++ b/src/main/java/org/prebid/server/util/UriTemplate.java @@ -0,0 +1,97 @@ +package org.prebid.server.util; + +import io.vertx.uritemplate.ExpandOptions; +import io.vertx.uritemplate.Variables; + +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.stream.Collectors; + +public class UriTemplate { + + private static final ExpandOptions REQUIRE_ALL_PARAMS = new ExpandOptions().setAllowVariableMiss(false); + + private static final String DYNAMIC_QUERY_PARAM = "DYNAMIC_QUERY_PARAM"; + private static final String DYNAMIC_QUERY_START_MACRO = "{?" + DYNAMIC_QUERY_PARAM + "*}"; + private static final String DYNAMIC_QUERY_CONTINUATION_MACRO = "{&" + DYNAMIC_QUERY_PARAM + "*}"; + + private final io.vertx.uritemplate.UriTemplate template; + + private UriTemplate(String uri) { + validateTemplate(Objects.requireNonNull(uri)); + this.template = io.vertx.uritemplate.UriTemplate.of(uri + chooseMacro(uri)); + } + + public static UriTemplate of(String uri) throws IllegalArgumentException { + return new UriTemplate(uri); + } + + private static void validateTemplate(String template) { + final int queryStartIndex = template.indexOf('?'); + if (queryStartIndex != -1 && template.indexOf('}', queryStartIndex) != -1) { + throw new IllegalArgumentException(UriTemplate.class.getName() + " does not support query variables."); + } + + HttpUtil.validateUrl(template + .replace("{", "") + .replace("}", "")); + } + + private static String chooseMacro(String template) { + return template.contains("?") + ? DYNAMIC_QUERY_CONTINUATION_MACRO + : DYNAMIC_QUERY_START_MACRO; + } + + public UriBuilder toBuilder() { + return new UriBuilder(template); + } + + @Override + public String toString() throws NoSuchElementException { + return toBuilder().build(); + } + + public static class UriBuilder { + + private final io.vertx.uritemplate.UriTemplate template; + private final Variables variables; + + public UriBuilder(io.vertx.uritemplate.UriTemplate template) { + this.template = template; + this.variables = Variables.variables(); + variables.set(DYNAMIC_QUERY_PARAM, new LinkedHashMap<>()); + } + + public UriBuilder pathParam(String key, String value) { + variables.set(key, value); + return this; + } + + public UriBuilder queryParam(String key, String value) { + if (value != null) { + variables.getMap(DYNAMIC_QUERY_PARAM).put(key, value); + } + return this; + } + + public UriBuilder queryParam(String key, Collection value) { + if (value == null) { + return this; + } + + final String listAsString = value.stream() + .map(Objects::toString) + .collect(Collectors.joining(",")); + variables.getMap(DYNAMIC_QUERY_PARAM).put(key, listAsString); + + return this; + } + + public String build() throws NoSuchElementException { + return template.expandToString(variables, REQUIRE_ALL_PARAMS); + } + } +} diff --git a/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java b/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java index 35dd808c97d..e94cbec0694 100644 --- a/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java +++ b/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java @@ -10,9 +10,11 @@ import io.vertx.core.http.HttpMethod; import io.vertx.core.http.RequestOptions; import org.prebid.server.exception.PreBidException; +import org.prebid.server.util.HttpUtil; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Objects; @@ -54,8 +56,8 @@ private Future request(HttpMethod method, String url, MultiM final URL absoluteUrl; try { - absoluteUrl = new URL(url); - } catch (MalformedURLException e) { + absoluteUrl = HttpUtil.parseUrl(url); + } catch (URISyntaxException | MalformedURLException e) { return Future.failedFuture(e); } diff --git a/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java b/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java index 0843a04de12..c3ad01d78c6 100644 --- a/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java +++ b/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java @@ -10,10 +10,12 @@ import org.prebid.server.log.Logger; import org.prebid.server.log.LoggerFactory; import org.prebid.server.metric.Metrics; +import org.prebid.server.util.HttpUtil; import org.prebid.server.vertx.CircuitBreaker; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.time.Clock; import java.util.Map; @@ -146,8 +148,8 @@ private static String idFrom(String urlAsString) { private static URL parseUrl(String url) { try { - return new URL(url); - } catch (MalformedURLException e) { + return HttpUtil.parseUrl(url); + } catch (URISyntaxException | MalformedURLException e) { throw new PreBidException("Invalid url: " + url, e); } } diff --git a/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java b/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java index a995429ba79..1d0e2e86d3c 100644 --- a/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java +++ b/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java @@ -22,7 +22,7 @@ import org.prebid.server.vertx.httpclient.model.HttpClientResponse; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URISyntaxException; import java.time.Clock; import java.time.Instant; import java.time.ZoneId; @@ -49,10 +49,10 @@ public class BasicPbcStorageServiceTest extends VertxTest { private BasicPbcStorageService target; @BeforeEach - public void setUp() throws MalformedURLException, JsonProcessingException { + public void setUp() throws MalformedURLException, JsonProcessingException, URISyntaxException { target = new BasicPbcStorageService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), "pbc-api-key", 10, jacksonMapper, diff --git a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java index 9138183597f..ee561e9e3b5 100644 --- a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java +++ b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java @@ -49,7 +49,7 @@ import java.io.IOException; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URISyntaxException; import java.time.Clock; import java.time.Instant; import java.time.ZoneId; @@ -105,12 +105,12 @@ public class CoreCacheServiceTest extends VertxTest { private Timeout expiredTimeout; @BeforeEach - public void setUp() throws MalformedURLException, JsonProcessingException { + public void setUp() throws MalformedURLException, JsonProcessingException, URISyntaxException { clock = Clock.fixed(Instant.now(), ZoneId.systemDefault()); target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -256,13 +256,13 @@ public void cacheBidsOpenrtbShouldTolerateReadingHttpResponseFails() throws Json @Test public void cacheBidsOpenrtbShouldTryCallingInternalEndpointAndTolerateReadingHttpResponseFails() - throws JsonProcessingException, MalformedURLException { + throws JsonProcessingException, MalformedURLException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), - new URL("http://cache-service-internal/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service-internal/cache"), "http://cache-service-host/cache?uuid=", 100L, null, @@ -437,11 +437,11 @@ public void cacheBidsOpenrtbShouldReturnExpectedDebugInfo() throws JsonProcessin } @Test - public void cacheBidsOpenrtbShouldUseApiKeyWhenProvided() throws MalformedURLException { + public void cacheBidsOpenrtbShouldUseApiKeyWhenProvided() throws MalformedURLException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1229,12 +1229,12 @@ public void cachePutObjectsShouldNotLogErrorMetricsWhenCacheServiceIsNotConnecte } @Test - public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws IOException { + public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws IOException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), - new URL("http://cache-service-internal/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service-internal/cache"), "http://cache-service-host/cache?uuid=", 100L, null, @@ -1281,11 +1281,11 @@ public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws } @Test - public void cachePutObjectsShouldUseApiKeyWhenProvided() throws MalformedURLException { + public void cachePutObjectsShouldUseApiKeyWhenProvided() throws MalformedURLException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1324,11 +1324,11 @@ public void cachePutObjectsShouldUseApiKeyWhenProvided() throws MalformedURLExce } @Test - public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOException { + public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1394,11 +1394,13 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOExcepti } @Test - public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() throws IOException { + public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() + throws IOException, URISyntaxException { + // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1464,11 +1466,11 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() th } @Test - public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throws IOException { + public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throws IOException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1515,11 +1517,11 @@ public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throw } @Test - public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOException { + public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1564,11 +1566,13 @@ public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOExceptio } @Test - public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() throws IOException { + public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() + throws IOException, URISyntaxException { + // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1613,11 +1617,11 @@ public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() thr } @Test - public void cachePutObjectsShouldNotPrependTraceInfoToPassedInKey() throws IOException { + public void cachePutObjectsShouldNotPrependTraceInfoToPassedInKey() throws IOException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), null, "http://cache-service-host/cache?uuid=", 100L, @@ -1755,13 +1759,13 @@ public void getCachedObjectShouldAddUuidQueryParamsBeforeSendingWhenChIsAbsent() @Test public void getCachedObjectShouldAddUuidQueryParamsToInternalBeforeSendingWhenChIsAbsent() - throws MalformedURLException { + throws MalformedURLException, URISyntaxException { // given target = new CoreCacheService( httpClient, - new URL("http://cache-service/cache"), - new URL("http://internal-cache-service/cache"), + HttpUtil.parseUrl("http://cache-service/cache"), + HttpUtil.parseUrl("http://internal-cache-service/cache"), "http://cache-service-host/cache?uuid=", 100L, "ApiKey", From abe62d16ef883b92ccf0e8f6a91bff39f9827661 Mon Sep 17 00:00:00 2001 From: Danylo Date: Tue, 7 Apr 2026 23:54:37 +0200 Subject: [PATCH 2/6] Replace apache `URIBuilder` usages --- .../LiveIntentAnalyticsReporter.java | 34 ++-- .../adgeneration/AdgenerationBidder.java | 42 ++--- .../bidder/adnuntius/AdnuntiusBidder.java | 50 +++--- .../prebid/server/bidder/amx/AmxBidder.java | 16 +- .../bidder/appnexus/AppnexusBidder.java | 16 +- .../server/bidder/bluesea/BlueSeaBidder.java | 23 +-- .../bidder/connatix/ConnatixBidder.java | 28 +--- .../bidder/dxkulture/DxKultureBidder.java | 23 +-- .../bidder/eplanning/EplanningBidder.java | 112 ++++++-------- .../server/bidder/flipp/FlippBidder.java | 21 +-- .../server/bidder/nexx360/Nexx360Bidder.java | 27 +--- .../server/bidder/rubicon/RubiconBidder.java | 20 +-- .../smartadserver/SmartadserverBidder.java | 33 ++-- .../server/bidder/sparteo/SparteoBidder.java | 35 ++--- .../server/bidder/sspbc/SspbcBidder.java | 22 +-- .../server/bidder/tappx/TappxBidder.java | 54 ++----- .../bidder/videobyte/VideobyteBidder.java | 36 ++--- .../server/bidder/yandex/YandexBidder.java | 33 ++-- .../bidder/yieldlab/YieldlabBidder.java | 126 ++++++--------- .../prebid/server/cache/CoreCacheService.java | 22 +-- .../server/cache/utils/CacheServiceUtil.java | 2 +- .../settings/HttpApplicationSettings.java | 85 +++++----- .../bidder/SmartadserverConfiguration.java | 5 +- .../org/prebid/server/util/UriTemplate.java | 10 ++ .../resources/bidder-config/eplanning.yaml | 2 +- .../bidder-config/smartadserver.yaml | 4 +- src/main/resources/bidder-config/tappx.yaml | 2 +- src/main/resources/bidder-config/yandex.yaml | 2 +- .../resources/bidder-config/yieldlab.yaml | 2 +- .../prebid/server/it/SmartadserverTest.java | 2 +- .../server/it/test-application.properties | 145 +++++++++--------- 31 files changed, 407 insertions(+), 627 deletions(-) diff --git a/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java b/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java index d404a12397e..26baa60f2db 100644 --- a/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java +++ b/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java @@ -6,7 +6,6 @@ import com.iab.openrtb.response.SeatBid; import io.vertx.core.Future; import org.apache.commons.collections4.CollectionUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.analytics.AnalyticsReporter; import org.prebid.server.analytics.model.AuctionEvent; import org.prebid.server.analytics.model.NotificationEvent; @@ -27,9 +26,9 @@ import org.prebid.server.log.LoggerFactory; import org.prebid.server.proto.openrtb.ext.request.ExtRequest; import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid; +import org.prebid.server.util.UriTemplate; import org.prebid.server.vertx.httpclient.HttpClient; -import java.net.URISyntaxException; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -43,6 +42,7 @@ public class LiveIntentAnalyticsReporter implements AnalyticsReporter { private final HttpClient httpClient; private final LiveIntentAnalyticsProperties properties; + private final UriTemplate analyticsEndpointTemplate; private final JacksonMapper jacksonMapper; public LiveIntentAnalyticsReporter( @@ -52,6 +52,7 @@ public LiveIntentAnalyticsReporter( this.httpClient = Objects.requireNonNull(httpClient); this.properties = Objects.requireNonNull(properties); + this.analyticsEndpointTemplate = UriTemplate.of(properties.getAnalyticsEndpoint()); this.jacksonMapper = Objects.requireNonNull(jacksonMapper); } @@ -96,12 +97,11 @@ private Future processAuctionEvent(AuctionContext auctionContext) { try { return httpClient.post( - new URIBuilder(properties.getAnalyticsEndpoint()) - .setPath("/analytic-events/pbsj-bids") - .build() - .toString(), - jacksonMapper.encodeToString(pbsjBids), - properties.getTimeoutMs()) + analyticsEndpointTemplate.toBuilder() + .pathParam("path", "/analytic-events/pbsj-bids") + .build(), + jacksonMapper.encodeToString(pbsjBids), + properties.getTimeoutMs()) .mapEmpty(); } catch (Exception e) { logger.error("Error processing event: {}", e.getMessage()); @@ -169,18 +169,12 @@ private Optional buildPbsjBid( } private Future processNotificationEvent(NotificationEvent notificationEvent) { - try { - final String url = new URIBuilder(properties.getAnalyticsEndpoint()) - .setPath("/analytic-events/pbsj-winning-bid") - .setParameter("b", notificationEvent.getBidder()) - .setParameter("bidId", notificationEvent.getBidId()) - .build() - .toString(); - return httpClient.get(url, properties.getTimeoutMs()).mapEmpty(); - } catch (URISyntaxException e) { - logger.error("Error composing url for notification event: {}", e.getMessage()); - return Future.failedFuture(e); - } + final String url = analyticsEndpointTemplate.toBuilder() + .pathParam("path", "/analytic-events/pbsj-winning-bid") + .queryParam("b", notificationEvent.getBidder()) + .queryParam("bidId", notificationEvent.getBidId()) + .build(); + return httpClient.get(url, properties.getTimeoutMs()).mapEmpty(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java b/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java index 22fc3dc5309..13659f0e533 100644 --- a/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java +++ b/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java @@ -14,7 +14,6 @@ import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.adgeneration.model.AdgenerationResponse; import org.prebid.server.bidder.model.BidderBid; @@ -31,8 +30,8 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -51,11 +50,11 @@ public class AdgenerationBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public AdgenerationBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -96,21 +95,14 @@ private ExtImpAdgeneration parseAndValidateImpExt(Imp imp) { } private String getUri(String adSize, String id, String currency, BidRequest bidRequest) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(endpointUrl); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(endpointUrl, e.getMessage())); - } - - uriBuilder - .addParameter("posall", "SSPLOC") - .addParameter("id", id) - .addParameter("hb", "true") - .addParameter("t", "json3") - .addParameter("currency", currency) - .addParameter("sdkname", "prebidserver") - .addParameter("adapterver", VERSION); + final UriTemplate.UriBuilder uriBuilder = endpointTemplate.toBuilder() + .queryParam("posall", "SSPLOC") + .queryParam("id", id) + .queryParam("hb", "true") + .queryParam("t", "json3") + .queryParam("currency", currency) + .queryParam("sdkname", "prebidserver") + .queryParam("adapterver", VERSION); addParameterIfNotEmpty(uriBuilder, "sizes", adSize); addParameterIfNotEmpty(uriBuilder, "tp", ObjectUtil.getIfNotNull(bidRequest.getSite(), Site::getPage)); @@ -122,21 +114,21 @@ private String getUri(String adSize, String id, String currency, BidRequest bidR final Device device = bidRequest.getDevice(); final String deviceOs = device != null ? device.getOs() : null; if ("android".equals(deviceOs)) { - uriBuilder.addParameter("sdktype", "1"); + uriBuilder.queryParam("sdktype", "1"); addParameterIfNotEmpty(uriBuilder, "advertising_id", device.getIfa()); } else if ("ios".equals(deviceOs)) { - uriBuilder.addParameter("sdktype", "2"); + uriBuilder.queryParam("sdktype", "2"); addParameterIfNotEmpty(uriBuilder, "idfa", device.getIfa()); } else { - uriBuilder.addParameter("sdktype", "0"); + uriBuilder.queryParam("sdktype", "0"); } - return uriBuilder.toString(); + return uriBuilder.build(); } - private static void addParameterIfNotEmpty(URIBuilder uriBuilder, String parameter, String value) { + private static void addParameterIfNotEmpty(UriTemplate.UriBuilder uriBuilder, String parameter, String value) { if (StringUtils.isNotEmpty(value)) { - uriBuilder.addParameter(parameter, value); + uriBuilder.queryParam(parameter, value); } } diff --git a/src/main/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidder.java b/src/main/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidder.java index 127d02ae000..ea7ae151179 100644 --- a/src/main/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidder.java +++ b/src/main/java/org/prebid/server/bidder/adnuntius/AdnuntiusBidder.java @@ -22,7 +22,6 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.adnuntius.model.request.AdnuntiusMetaData; import org.prebid.server.bidder.adnuntius.model.request.AdnuntiusNativeRequest; @@ -58,9 +57,9 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.time.Clock; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -83,8 +82,8 @@ public class AdnuntiusBidder implements Bidder { private static final int BANNER_MTYPE = 1; private static final int NATIVE_MTYPE = 4; - private final String endpointUrl; - private final String euEndpoint; + private final UriTemplate endpointTemplate; + private final UriTemplate euEndpointTemplate; private final Clock clock; private final JacksonMapper mapper; @@ -93,8 +92,8 @@ public AdnuntiusBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); - this.euEndpoint = euEndpoint == null ? null : HttpUtil.validateUrl(euEndpoint); + this.endpointTemplate = UriTemplate.of(endpointUrl); + this.euEndpointTemplate = euEndpoint != null ? UriTemplate.of(euEndpoint) : null; this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -261,35 +260,22 @@ private List> createHttpRequests( } private String makeEndpoint(BidRequest bidRequest, Boolean noCookies) { - try { - final String gdpr = extractGdpr(bidRequest.getRegs()); - final String url = StringUtils.isNotBlank(gdpr) ? euEndpoint : endpointUrl; - - if (url == null) { - throw new PreBidException("an EU endpoint is required but invalid"); - } - - final URIBuilder uriBuilder = new URIBuilder(url) - .addParameter("format", "prebidServer") - .addParameter("tzo", getTimeZoneOffset()); - - if (StringUtils.isNotEmpty(gdpr)) { - uriBuilder.addParameter("gdpr", gdpr); - } + final String gdpr = extractGdpr(bidRequest.getRegs()); + final UriTemplate template = StringUtils.isNotBlank(gdpr) ? euEndpointTemplate : endpointTemplate; - final String consent = extractConsent(bidRequest.getUser()); - if (StringUtils.isNotEmpty(consent)) { - uriBuilder.addParameter("consentString", consent); - } + if (template == null) { + throw new PreBidException("an EU endpoint is required but invalid"); + } - if (noCookies || extractNoCookies(bidRequest.getDevice())) { - uriBuilder.addParameter("noCookies", "true"); - } + final String consent = extractConsent(bidRequest.getUser()); - return uriBuilder.build().toString(); - } catch (URISyntaxException | IllegalArgumentException e) { - throw new PreBidException(e.getMessage()); - } + return template.toBuilder() + .queryParam("format", "prebidServer") + .queryParam("tzo", getTimeZoneOffset()) + .queryParam("gdpr", StringUtils.isNotEmpty(gdpr) ? gdpr : null) + .queryParam("consentString", StringUtils.isNotEmpty(consent) ? consent : null) + .queryParam("noCookies", noCookies || extractNoCookies(bidRequest.getDevice()) ? "true" : null) + .build(); } private String getTimeZoneOffset() { diff --git a/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java b/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java index f9d309a3495..7346a1f3e4e 100644 --- a/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java +++ b/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java @@ -13,7 +13,6 @@ import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.amx.model.AmxBidExt; import org.prebid.server.bidder.model.BidderBid; @@ -30,9 +29,8 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidMeta; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -52,20 +50,12 @@ public class AmxBidder implements Bidder { private final JacksonMapper mapper; public AmxBidder(String endpointUrl, JacksonMapper mapper) { - this.mapper = Objects.requireNonNull(mapper); this.endpointUrl = resolveEndpointUrl(endpointUrl); + this.mapper = Objects.requireNonNull(mapper); } private static String resolveEndpointUrl(String url) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(HttpUtil.validateUrl(Objects.requireNonNull(url))); - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Invalid url: %s, error: %s".formatted(url, e.getMessage())); - } - return uriBuilder - .addParameter(VERSION_PARAM, ADAPTER_VERSION) - .toString(); + return UriTemplate.of(url).toBuilder().queryParam(VERSION_PARAM, ADAPTER_VERSION).build(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java b/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java index 06a37460655..46a817dcb06 100644 --- a/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java +++ b/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java @@ -19,7 +19,6 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.auction.model.Endpoint; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.appnexus.proto.AppnexusBidExt; @@ -51,12 +50,11 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; import jakarta.validation.ValidationException; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -83,7 +81,7 @@ public class AppnexusBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final Integer headerBiddingSource; private final Map iabCategories; private final JacksonMapper mapper; @@ -93,7 +91,7 @@ public AppnexusBidder(String endpointUrl, Map iabCategories, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.headerBiddingSource = ObjectUtils.defaultIfNull(platformId, DEFAULT_PLATFORM_ID); this.iabCategories = ObjectUtils.defaultIfNull(iabCategories, Collections.emptyMap()); this.mapper = Objects.requireNonNull(mapper); @@ -307,13 +305,7 @@ private String readKeywordsFromArray(JsonNode keywords) { } private String makeUrl(String member) { - try { - return member != null - ? new URIBuilder(endpointUrl).addParameter("member_id", member).build().toString() - : endpointUrl; - } catch (URISyntaxException e) { - throw new PreBidException(e.getMessage()); - } + return endpointTemplate.toBuilder().queryParam("member_id", member).build(); } private static String extractEndpointName(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java b/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java index 8c93ba9f73d..985bb1a1006 100644 --- a/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java +++ b/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java @@ -9,7 +9,6 @@ import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -23,9 +22,8 @@ import org.prebid.server.proto.openrtb.ext.request.bluesea.ExtImpBlueSea; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -39,11 +37,11 @@ public class BlueSeaBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public BlueSeaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -78,17 +76,10 @@ private HttpRequest makeRequest(BidRequest bidRequest, ExtImpBlueSea } private String resolveUrl(ExtImpBlueSea extImpBlueSea) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(endpointUrl); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(endpointUrl, e.getMessage())); - } - - return uriBuilder - .addParameter("pubid", extImpBlueSea.getPubId()) - .addParameter("token", extImpBlueSea.getToken()) - .toString(); + return endpointTemplate.toBuilder() + .queryParam("pubid", extImpBlueSea.getPubId()) + .queryParam("token", extImpBlueSea.getToken()) + .build(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java b/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java index aef2abcaf61..cd78ef78e5a 100644 --- a/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java +++ b/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java @@ -7,9 +7,9 @@ import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.User; import com.iab.openrtb.request.Format; import com.iab.openrtb.request.Imp; +import com.iab.openrtb.request.User; import com.iab.openrtb.response.Bid; import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; @@ -17,7 +17,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -35,9 +34,9 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -53,9 +52,8 @@ public class ConnatixBidder implements Bidder { private static final String BIDDER_CURRENCY = "USD"; private static final String FORMATTING = "%s-%s"; - private static final String GPID_KEY = "gpid"; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; private final CurrencyConversionService currencyConversionService; @@ -64,7 +62,7 @@ public ConnatixBidder(String endpointUrl, CurrencyConversionService currencyConversionService, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.mapper = Objects.requireNonNull(mapper); } @@ -106,20 +104,10 @@ public Result>> makeHttpRequests(BidRequest request } private String getOptimalEndpointUrl(BidRequest request) { - final Optional dataCenterCode = getUserId(request).map(ConnatixBidder::getDataCenterCode); - - if (dataCenterCode.isEmpty()) { - return endpointUrl; - } - - try { - return new URIBuilder(endpointUrl) - .addParameter("dc", dataCenterCode.get()) - .build() - .toString(); - } catch (URISyntaxException e) { - throw new PreBidException(e.getMessage()); - } + final String dataCenterCode = getUserId(request) + .map(ConnatixBidder::getDataCenterCode) + .orElse(null); + return endpointTemplate.toBuilder().queryParam("dc", dataCenterCode).build(); } private static Optional getUserId(BidRequest request) { diff --git a/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java b/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java index ad3c146795d..247dada09aa 100644 --- a/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java +++ b/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java @@ -10,7 +10,6 @@ import com.iab.openrtb.response.SeatBid; import io.vertx.core.MultiMap; import org.apache.commons.collections4.CollectionUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -26,8 +25,8 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -41,11 +40,11 @@ public class DxKultureBidder implements Bidder { }; private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public DxKultureBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -78,18 +77,10 @@ private ExtImpDxKulture parseImpExt(Imp imp) { } private String getUri(ExtImpDxKulture extImpDxKulture) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(endpointUrl); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(endpointUrl, e.getMessage())); - } - - uriBuilder - .addParameter("publisher_id", extImpDxKulture.getPublisherId()) - .addParameter("placement_id", extImpDxKulture.getPlacementId()); - - return uriBuilder.toString(); + return endpointTemplate.toBuilder() + .queryParam("publisher_id", extImpDxKulture.getPublisherId()) + .queryParam("placement_id", extImpDxKulture.getPlacementId()) + .build(); } private static MultiMap resolveHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java index 03422d2b75b..634032e9886 100644 --- a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java +++ b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java @@ -18,7 +18,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.eplanning.model.CleanStepName; import org.prebid.server.bidder.eplanning.model.HbResponse; @@ -37,6 +36,7 @@ import org.prebid.server.proto.openrtb.ext.request.eplanning.ExtImpEplanning; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; import java.math.BigDecimal; import java.net.MalformedURLException; @@ -79,11 +79,11 @@ public class EplanningBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public EplanningBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -213,75 +213,64 @@ private static MultiMap createHeaders(Device device) { private String resolveRequestUri(BidRequest request, List requestsStrings, String clientId) { final Site site = request.getSite(); - String pageUrl = DEFAULT_PAGE_URL; - if (site != null && StringUtils.isNotBlank(site.getPage())) { - pageUrl = site.getPage(); - } - - String pageDomain = DEFAULT_PAGE_URL; - if (site != null) { - if (StringUtils.isNotBlank(site.getDomain())) { - pageDomain = site.getDomain(); - } else if (StringUtils.isNotBlank(site.getPage())) { - pageDomain = parseUrl(site.getPage()).getHost(); - } - } + final String pageUrl = Optional.ofNullable(site) + .map(Site::getPage) + .filter(StringUtils::isNotBlank) + .orElse(DEFAULT_PAGE_URL); final App app = request.getApp(); - final String requestTarget = app != null && StringUtils.isNotBlank(app.getBundle()) - ? app.getBundle() - : pageDomain; + final String requestTarget = Optional.ofNullable(app) + .map(App::getBundle) + .filter(StringUtils::isNotBlank) + .orElseGet(() -> getPageDomain(site)); + final String appName = app != null ? app.getName() : null; + final String appId = app != null ? app.getId() : null; + + final String buyeruid = Optional.ofNullable(request.getUser()) + .map(User::getBuyeruid) + .filter(StringUtils::isNotBlank) + .orElse(null); - final String uri = "%s/%s/%s/%s/%s".formatted(endpointUrl, clientId, DFP_CLIENT_ID, requestTarget, SEC); + final Device device = request.getDevice(); + final String ip = device != null ? device.getIp() : null; + final String ifa = app != null && device != null ? device.getIfa() : null; - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(uri); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(uri, e.getMessage())); - } + final String schain = getSchainParameter(request.getSource()); - uriBuilder - .addParameter("r", "pbs") - .addParameter("ncb", "1"); + return endpointTemplate.toBuilder() + .pathParam("ClientId", clientId) + .pathParam("DfpClientId", DFP_CLIENT_ID) + .pathParam("RequestTarget", requestTarget) + .pathParam("Sec", SEC) - if (app == null) { - uriBuilder.addParameter("ur", pageUrl); - } - uriBuilder.addParameter("e", String.join("+", requestsStrings)); + .queryParam("r", "pbs") + .queryParam("ncb", "1") + .queryParam("e", String.join("+", requestsStrings)) - final User user = request.getUser(); - final String buyeruid = user != null ? user.getBuyeruid() : null; - if (StringUtils.isNotBlank(buyeruid)) { - uriBuilder.addParameter("uid", buyeruid); - } + .queryParam("ur", app == null ? pageUrl : null) - final Device device = request.getDevice(); - final String ip = device != null ? device.getIp() : null; - if (StringUtils.isNotBlank(ip)) { - uriBuilder.addParameter("ip", ip); - } + .queryParam("uid", buyeruid) + .queryParam("appn", StringUtils.isNotBlank(appName) ? appName : null) + .queryParam("appid", StringUtils.isNotBlank(appId) ? appId : null) + .queryParam("app", app != null ? REQUEST_TARGET_INVENTORY : null) - if (app != null) { - if (StringUtils.isNotBlank(app.getName())) { - uriBuilder.addParameter("appn", app.getName()); - } - if (StringUtils.isNotBlank(app.getId())) { - uriBuilder.addParameter("appid", app.getId()); - } - if (request.getDevice() != null && StringUtils.isNotBlank(request.getDevice().getIfa())) { - uriBuilder.addParameter("ifa", request.getDevice().getIfa()); - } - uriBuilder.addParameter("app", REQUEST_TARGET_INVENTORY); - } + .queryParam("ip", StringUtils.isNotBlank(ip) ? ip : null) + .queryParam("ifa", StringUtils.isNotBlank(ifa) ? ifa : null) - String schain = getSchainParameter(request.getSource()); - if (schain != null) { - schain = schain.replace(" ", "%20"); - uriBuilder.addParameter("sch", schain); - } + .queryParam("sch", schain) + .build(); + } - return uriBuilder.toString(); + private static String getPageDomain(Site site) { + return Optional.ofNullable(site) + .map(Site::getDomain) + .filter(StringUtils::isNotBlank) + .or(() -> Optional.ofNullable(site) + .map(Site::getPage) + .filter(StringUtils::isNotBlank) + .map(EplanningBidder::parseUrl) + .map(URL::getHost)) + .orElse(DEFAULT_PAGE_URL); } private static URL parseUrl(String url) { @@ -297,6 +286,7 @@ private String getSchainParameter(Source source) { .map(Source::getExt) .map(ExtSource::getSchain) .map(this::resolveSupplyChain) + .map(schain -> schain.replace(" ", "%20")) .orElse(null); } diff --git a/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java b/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java index dedd8399f1b..67090b4140a 100644 --- a/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java +++ b/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java @@ -16,8 +16,6 @@ import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.NameValuePair; -import org.apache.http.client.utils.URLEncodedUtils; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.flipp.model.request.CampaignRequestBody; import org.prebid.server.bidder.flipp.model.request.CampaignRequestBodyUser; @@ -47,7 +45,6 @@ import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -57,6 +54,8 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class FlippBidder implements Bidder { @@ -72,6 +71,7 @@ public class FlippBidder implements Bidder { private static final String EXT_REQUEST_TRANSMIT_EIDS = "transmitEids"; private static final int DEFAULT_STANDARD_HEIGHT = 2400; private static final int DEFAULT_COMPACT_HEIGHT = 600; + private static final Pattern CONTENT_CODE_PATTERN = Pattern.compile("[?&]flipp-content-code=([^&]+)"); private final String endpointUrl; private final JacksonMapper mapper; @@ -167,13 +167,16 @@ private static String resolveContentCode(Site site, ExtImpFlipp extImp) { final String pageUrl = Optional.ofNullable(site) .map(Site::getPage) .orElse(null); + if (StringUtils.isBlank(pageUrl)) { + return null; + } - return URLEncodedUtils.parse(pageUrl, StandardCharsets.UTF_8) - .stream() - .filter(nameValuePair -> nameValuePair.getName().contains("flipp-content-code")) - .map(NameValuePair::getValue) - .findFirst() - .orElse(null); + final Matcher matcher = CONTENT_CODE_PATTERN.matcher(pageUrl); + if (!matcher.matches()) { + return null; + } + + return matcher.group(0); } private static List resolveKeywords(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java b/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java index b4b643cc3eb..a724ce19635 100644 --- a/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java +++ b/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java @@ -9,7 +9,6 @@ import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -24,10 +23,9 @@ import org.prebid.server.proto.openrtb.ext.request.nexx360.ExtImpNexx360; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; import org.prebid.server.version.PrebidVersionProvider; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -41,12 +39,12 @@ public class Nexx360Bidder implements Bidder { }; private static final String BIDDER_NAME = "nexx360"; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; private final PrebidVersionProvider prebidVersionProvider; public Nexx360Bidder(String endpointUrl, JacksonMapper mapper, PrebidVersionProvider prebidVersionProvider) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); this.prebidVersionProvider = Objects.requireNonNull(prebidVersionProvider); } @@ -100,21 +98,10 @@ private BidRequest makeRequest(BidRequest request, List imps) { } private String makeUrl(String tagId, String placement) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(endpointUrl); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(endpointUrl, e.getMessage())); - } - - if (StringUtils.isNotBlank(placement)) { - uriBuilder.addParameter("placement", placement); - } - if (StringUtils.isNotBlank(tagId)) { - uriBuilder.addParameter("tag_id", tagId); - } - - return uriBuilder.toString(); + return endpointTemplate.toBuilder() + .queryParam("placement", StringUtils.isNotBlank(placement) ? placement : null) + .queryParam("tag_id", StringUtils.isNotBlank(tagId) ? tagId : null) + .build(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index 5760b9f4242..4e0f065053c 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -32,7 +32,6 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.ViewabilityVendors; import org.prebid.server.bidder.model.BidderBid; @@ -106,10 +105,10 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; import org.prebid.server.version.PrebidVersionProvider; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; @@ -178,7 +177,7 @@ public class RubiconBidder implements Bidder { private static final boolean DEFAULT_MULTIFORMAT_VALUE = false; private final String bidderName; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final String externalUrl; private final String xapiUsername; private final Set supportedVendors; @@ -207,7 +206,7 @@ public RubiconBidder(String bidderName, JacksonMapper mapper) { this.bidderName = Objects.requireNonNull(bidderName); - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpointTemplate = UriTemplate.of(endpoint); this.externalUrl = HttpUtil.validateUrl(Objects.requireNonNull(externalUrl)); this.xapiUsername = Objects.requireNonNull(xapiUsername); this.supportedVendors = Set.copyOf(Objects.requireNonNull(supportedVendors)); @@ -449,16 +448,9 @@ private BidRequest createSingleRequest(BidRequest bidRequest, private String makeUri(BidRequest bidRequest) { final String tkXint = tkXintValue(bidRequest); - if (StringUtils.isNotBlank(tkXint)) { - try { - return new URIBuilder(endpointUrl) - .setParameter(TK_XINT_QUERY_PARAMETER, tkXint) - .build().toString(); - } catch (URISyntaxException e) { - throw new PreBidException("Cant add the tk_xint value for url: " + tkXint, e); - } - } - return endpointUrl; + return endpointTemplate.toBuilder() + .queryParam(TK_XINT_QUERY_PARAMETER, StringUtils.isNotBlank(tkXint) ? tkXint : null) + .build(); } private String tkXintValue(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java b/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java index 150c37fd255..775a8d786ca 100644 --- a/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java +++ b/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java @@ -9,8 +9,6 @@ import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -25,9 +23,8 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URI; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -41,13 +38,13 @@ public class SmartadserverBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; - private final String secondaryEndpointUrl; + private final UriTemplate endpointTemplate; + private final String pgEndpoint; private final JacksonMapper mapper; - public SmartadserverBidder(String endpointUrl, String secondaryEndpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); - this.secondaryEndpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(secondaryEndpointUrl)); + public SmartadserverBidder(String endpointUrl, String pgEndpoint, JacksonMapper mapper) { + this.endpointTemplate = UriTemplate.of(endpointUrl); + this.pgEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(pgEndpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -120,21 +117,9 @@ private static Publisher modifyPublisher(Publisher publisher, Integer networkId) } private String makeUrl(boolean isProgrammaticGuaranteed) { - final String url = isProgrammaticGuaranteed ? secondaryEndpointUrl : endpointUrl; - try { - final URI uri = new URI(url); - final String path = isProgrammaticGuaranteed ? "/ortb" : "/api/bid"; - final URIBuilder uriBuilder = new URIBuilder(uri) - .setPath(StringUtils.removeEnd(uri.getPath(), "/") + path); - - if (!isProgrammaticGuaranteed) { - uriBuilder.addParameter("callerId", "5"); - } - - return uriBuilder.toString(); - } catch (URISyntaxException e) { - throw new PreBidException("Malformed URL: %s.".formatted(url)); - } + return isProgrammaticGuaranteed + ? pgEndpoint + : endpointTemplate.toBuilder().queryParam("callerId", "5").build(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java index 42c12a48d1c..48a724196c6 100644 --- a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java +++ b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java @@ -30,10 +30,8 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; -import org.apache.http.client.utils.URIBuilder; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -46,13 +44,14 @@ public class SparteoBidder implements Bidder { private static final String UNKNOWN_VALUE = "unknown"; private static final TypeReference> TYPE_REFERENCE = - new TypeReference<>() { }; + new TypeReference<>() { + }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public SparteoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -222,24 +221,12 @@ private String resolveBundle(App app) { } private String resolveEndpoint(String siteDomain, String appDomain, String networkId, String bundle) { - try { - final URIBuilder uriBuilder = new URIBuilder(endpointUrl); - if (StringUtils.isNotBlank(networkId)) { - uriBuilder.addParameter("network_id", networkId); - } - if (StringUtils.isNotBlank(siteDomain)) { - uriBuilder.addParameter("site_domain", siteDomain); - } - if (StringUtils.isNotBlank(appDomain)) { - uriBuilder.addParameter("app_domain", appDomain); - } - if (StringUtils.isNotBlank(bundle)) { - uriBuilder.addParameter("bundle", bundle); - } - return uriBuilder.build().toString(); - } catch (URISyntaxException e) { - throw new PreBidException("Failed to build endpoint URL", e); - } + return endpointTemplate.toBuilder() + .queryParam("site_domain", StringUtils.isNotBlank(siteDomain) ? siteDomain : null) + .queryParam("app_domain", StringUtils.isNotBlank(appDomain) ? appDomain : null) + .queryParam("network_id", StringUtils.isNotBlank(networkId) ? networkId : null) + .queryParam("bundle", StringUtils.isNotBlank(bundle) ? bundle : null) + .build(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java b/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java index 47419fb21a7..5caaa57164d 100644 --- a/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java +++ b/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java @@ -6,7 +6,6 @@ import com.iab.openrtb.response.SeatBid; import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -19,8 +18,8 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -34,10 +33,14 @@ public class SspbcBidder implements Bidder { private final JacksonMapper mapper; public SspbcBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = resolveEndpointUrl(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } + private static String resolveEndpointUrl(String base) { + return UriTemplate.of(base).toBuilder().queryParam("bdver", ADAPTER_VERSION).build(); + } + @Override public Result>> makeHttpRequests(BidRequest request) { return Result.withValue(createHttpRequest(request)); @@ -47,7 +50,7 @@ private HttpRequest createHttpRequest(BidRequest request) { final SspbcRequest outgoingRequest = SspbcRequest.of(request); return HttpRequest.builder() .method(HttpMethod.POST) - .uri(makeUrl(endpointUrl)) + .uri(endpointUrl) .headers(HttpUtil.headers()) .impIds(BidderUtil.impIds(outgoingRequest.getBidRequest())) .body(mapper.encodeToBytes(outgoingRequest)) @@ -55,17 +58,6 @@ private HttpRequest createHttpRequest(BidRequest request) { .build(); } - private static String makeUrl(String endpointUrl) { - try { - return new URIBuilder(endpointUrl) - .addParameter("bdver", ADAPTER_VERSION) - .build() - .toString(); - } catch (URISyntaxException e) { - throw new PreBidException("Malformed URL: %s.".formatted(endpointUrl)); - } - } - @Override public Result> makeBids(BidderCall httpCall, BidRequest bidRequest) { try { diff --git a/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java b/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java index 67224479693..d3447388ae6 100644 --- a/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java +++ b/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java @@ -6,8 +6,6 @@ import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.ListUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -23,9 +21,9 @@ import org.prebid.server.proto.openrtb.ext.request.tappx.ExtImpTappx; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; +import org.prebid.server.util.UriTemplate; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.time.Clock; import java.util.ArrayList; import java.util.Collection; @@ -43,14 +41,13 @@ public class TappxBidder implements Bidder { new TypeReference<>() { }; private static final Pattern NEW_ENDPOINT_PATTERN = Pattern.compile("^(zz|vz)[0-9]{3,}([a-z]{2,3}|test)$"); - private static final String SUBDOMAIN_MACRO = "{{subdomain}}"; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final Clock clock; private final JacksonMapper mapper; public TappxBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointUrl = Objects.requireNonNull(endpointUrl); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -88,39 +85,18 @@ private static List modifyImps(List imps, ExtImpTappx extImpTappx) { } private String resolveUrl(ExtImpTappx extImpTappx, Integer test) { - final String subdomain = extImpTappx.getEndpoint(); - final boolean isNewEndpoint = NEW_ENDPOINT_PATTERN.matcher(subdomain).matches(); - - final String baseUri = isNewEndpoint ? resolveNewHost(subdomain) : resolveOldHost(); - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(baseUri); - } catch (URISyntaxException e) { - throw new PreBidException("Failed to build endpoint URL: " + e.getMessage()); - } - - if (!isNewEndpoint) { - final List pathSegments = uriBuilder.getPathSegments(); - uriBuilder.setPathSegments(ListUtils.union(pathSegments, Collections.singletonList(subdomain))); - } - - uriBuilder.addParameter("tappxkey", extImpTappx.getTappxkey()); - uriBuilder.addParameter("v", VERSION); - uriBuilder.addParameter("type_cnn", TYPE_CNN); - - if (!BidderUtil.isNullOrZero(test)) { - uriBuilder.addParameter("ts", String.valueOf(clock.millis())); - } - - return uriBuilder.toString(); - } - - private String resolveNewHost(String subdomain) { - return endpointUrl.replace(SUBDOMAIN_MACRO, subdomain + ".pub") + "/rtb/"; - } - - private String resolveOldHost() { - return endpointUrl.replace(SUBDOMAIN_MACRO, "ssp.api") + "/rtb/v2"; + final String subdomainPart = extImpTappx.getEndpoint(); + final boolean isNewEndpoint = NEW_ENDPOINT_PATTERN.matcher(subdomainPart).matches(); + final String subdomain = isNewEndpoint ? subdomainPart + ".pub" : "ssp.api"; + + return endpointTemplate.toBuilder() + .domainParam("subdomain", subdomain) + .pathParam("path", isNewEndpoint ? "/rtb" : "/rtb/v2/" + subdomainPart) + .queryParam("tappxkey", extImpTappx.getTappxkey()) + .queryParam("v", VERSION) + .queryParam("type_cnn", TYPE_CNN) + .queryParam("ts", !BidderUtil.isNullOrZero(test) ? String.valueOf(clock.millis()) : null) + .build(); } private static Imp modifyImp(Imp imp, ExtImpTappx extImpTappx) { diff --git a/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java b/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java index cdbac176521..b52ef73096e 100644 --- a/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java +++ b/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java @@ -10,7 +10,6 @@ import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -24,8 +23,8 @@ import org.prebid.server.proto.openrtb.ext.request.videobyte.ExtImpVideobyte; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -39,11 +38,11 @@ public class VideobyteBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public VideobyteBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -86,26 +85,15 @@ private HttpRequest createRequest(BidRequest bidRequest, Imp imp, Ex } private String createUri(ExtImpVideobyte extImpVideobyte) { - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(endpointUrl); - } catch (URISyntaxException e) { - throw new PreBidException(e.getMessage()); - } - - uriBuilder.addParameter("source", "pbs") - .addParameter("pid", extImpVideobyte.getPublisherId()); - - addUriParameterIfNotEmpty(uriBuilder, "placementId", extImpVideobyte.getPlacementId()); - addUriParameterIfNotEmpty(uriBuilder, "nid", extImpVideobyte.getNetworkId()); - - return uriBuilder.toString(); - } - - private static void addUriParameterIfNotEmpty(URIBuilder uriBuilder, String parameter, String value) { - if (StringUtils.isNotEmpty(value)) { - uriBuilder.addParameter(parameter, value); - } + final String placementId = extImpVideobyte.getPlacementId(); + final String networkId = extImpVideobyte.getNetworkId(); + + return endpointTemplate.toBuilder() + .queryParam("source", "pbs") + .queryParam("pid", extImpVideobyte.getPublisherId()) + .queryParam("placementId", StringUtils.isNotEmpty(placementId) ? placementId : null) + .queryParam("nid", StringUtils.isNotEmpty(networkId) ? networkId : null) + .build(); } private static MultiMap headers(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java b/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java index d3851455d1d..43f589b5027 100644 --- a/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java +++ b/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java @@ -15,7 +15,6 @@ import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -29,8 +28,8 @@ import org.prebid.server.proto.openrtb.ext.request.yandex.ExtImpYandex; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -45,16 +44,14 @@ public class YandexBidder implements Bidder { new TypeReference<>() { }; - private static final String PAGE_ID_MACRO = "{{PageId}}"; - private static final String IMP_ID_MACRO = "{{ImpId}}"; private static final String DISPLAY_MANAGER = "prebid.java"; private static final String DISPLAY_MANAGER_VERSION = "1.1"; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final JacksonMapper mapper; public YandexBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -171,24 +168,12 @@ private static Video modifyVideo(Video video) { } private String modifyUrl(ExtImpYandex extImpYandex, String referer, String currency) { - final String resolvedUrl = endpointUrl - .replace(PAGE_ID_MACRO, HttpUtil.encodeUrl(extImpYandex.getPageId().toString())) - .replace(IMP_ID_MACRO, HttpUtil.encodeUrl(extImpYandex.getImpId().toString())); - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(resolvedUrl); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(endpointUrl, e.getMessage())); - } - addParameterIfNotBlank(uriBuilder, "target-ref", referer); - addParameterIfNotBlank(uriBuilder, "ssp-cur", currency); - return uriBuilder.toString(); - } - - private static void addParameterIfNotBlank(URIBuilder uriBuilder, String parameter, String value) { - if (StringUtils.isNotBlank(value)) { - uriBuilder.addParameter(parameter, value); - } + return endpointTemplate.toBuilder() + .pathParam("PageId", extImpYandex.getPageId().toString()) + .queryParam("imp-id", extImpYandex.getImpId().toString()) + .queryParam("target-ref", StringUtils.isNotBlank(referer) ? referer : null) + .queryParam("ssp-cur", StringUtils.isNotBlank(currency) ? currency : null) + .build(); } private HttpRequest buildHttpRequest(BidRequest outgoingRequest, String url) { diff --git a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java index 47f6cd44523..d8f05a90b2d 100644 --- a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java +++ b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java @@ -23,7 +23,6 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -45,9 +44,9 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidDsa; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; import java.math.BigDecimal; -import java.net.URISyntaxException; import java.time.Clock; import java.util.ArrayList; import java.util.Calendar; @@ -88,12 +87,12 @@ public class YieldlabBidder implements Bidder { """; - private final String endpointUrl; + private final UriTemplate endpointTemplate; private final Clock clock; private final JacksonMapper mapper; public YieldlabBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointTemplate = UriTemplate.of(endpointUrl); this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -153,78 +152,49 @@ private ExtImpYieldlab parseImpExt(Imp imp) { } private String makeUrl(ExtImpYieldlab extImpYieldlab, BidRequest request, Map extImps) { - final String updatedPath = "%s/%s".formatted(endpointUrl, extImpYieldlab.getAdslotId()); - - final URIBuilder uriBuilder; - try { - uriBuilder = new URIBuilder(updatedPath); - } catch (URISyntaxException e) { - throw new PreBidException("Invalid url: %s, error: %s".formatted(updatedPath, e.getMessage())); - } - - uriBuilder - .addParameter("content", "json") - .addParameter("pvid", "true") - .addParameter("ts", resolveNumberParameter(clock.instant().getEpochSecond())) - .addParameter("t", getTargetingValues(extImpYieldlab)); - final String formats = makeFormats(request, extImps); - if (formats != null) { - uriBuilder.addParameter("sizes", formats); - } - - final User user = request.getUser(); - if (user != null && StringUtils.isNotBlank(user.getBuyeruid())) { - uriBuilder.addParameter("ids", "ylid:" + StringUtils.defaultString(user.getBuyeruid())); - } + final String buyerUid = Optional.ofNullable(request.getUser()) + .map(User::getBuyeruid) + .filter(StringUtils::isNotBlank) + .orElse(null); final Device device = request.getDevice(); - if (device != null) { - uriBuilder.addParameter("yl_rtb_ifa", device.getIfa()); - - uriBuilder.addParameter("yl_rtb_devicetype", resolveNumberParameter(device.getDevicetype())); - final Integer connectionType = device.getConnectiontype(); - if (connectionType != null) { - uriBuilder.addParameter("yl_rtb_connectiontype", device.getConnectiontype().toString()); - } - - final Geo geo = device.getGeo(); - if (geo != null) { - uriBuilder.addParameter("lat", ObjectUtils.defaultIfNull(geo.getLat(), 0f).toString()); - uriBuilder.addParameter("lon", ObjectUtils.defaultIfNull(geo.getLon(), 0f).toString()); - } - } - + final Geo geo = device != null ? device.getGeo() : null; final App app = request.getApp(); - if (app != null) { - uriBuilder.addParameter("pubappname", app.getName()) - .addParameter("pubbundlename", app.getBundle()); - } final String gdpr = getGdprParameter(request.getRegs()); - if (StringUtils.isNotBlank(gdpr)) { - uriBuilder.addParameter("gdpr", gdpr); - } - final String consent = getConsentParameter(request.getUser()); - if (StringUtils.isNotBlank(consent)) { - uriBuilder.addParameter("gdpr_consent", consent); - } - - final String schain = getSchainParameter(request.getSource()); - if (schain != null) { - uriBuilder.addParameter("schain", schain); - } - - extractDsaRequestParamsFromBidRequest(request).forEach(uriBuilder::addParameter); - return uriBuilder.toString(); + final UriTemplate.UriBuilder uriBuilder = endpointTemplate.toBuilder() + .pathParam("AdSlotId", extImpYieldlab.getAdslotId()) + .queryParam("content", "json") + .queryParam("pvid", "true") + .queryParam("ts", resolveNumberParameter(clock.instant().getEpochSecond())) + .queryParam("t", getTargetingValues(extImpYieldlab)) + .queryParam("sizes", formats) + .queryParam("ids", buyerUid != null ? "ylid:" + buyerUid : null) + .queryParam("yl_rtb_ifa", device != null ? device.getIfa() : null) + .queryParam("yl_rtb_devicetype", device != null ? resolveNumberParameter(device.getDevicetype()) : null) + .queryParam("yl_rtb_connectiontype", device != null + ? resolveNumberParameter(device.getConnectiontype()) + : null) + .queryParam("lat", geo != null ? Objects.toString(geo.getLat(), "0") : null) + .queryParam("lon", geo != null ? Objects.toString(geo.getLon(), "0") : null) + .queryParam("pubappname", app != null ? app.getName() : null) + .queryParam("pubbundlename", app != null ? app.getBundle() : null) + .queryParam("gdpr", StringUtils.isNotBlank(gdpr) ? gdpr : null) + .queryParam("gdpr_consent", StringUtils.isNotBlank(consent) ? consent : null) + .queryParam("schain", getSchainParameter(request.getSource())); + + extractDsaRequestParamsFromBidRequest(request).forEach(uriBuilder::queryParam); + + return uriBuilder.build(); } private String makeFormats(BidRequest request, Map extImps) { final List formats = new LinkedList<>(); - for (Imp imp: request.getImp()) { + for (Imp imp : request.getImp()) { if (!isBanner(imp)) { continue; } @@ -248,13 +218,13 @@ private boolean isBanner(Imp imp) { } private String getTargetingValues(ExtImpYieldlab extImpYieldlab) { - final URIBuilder uriBuilder = new URIBuilder(); + final UriTemplate.UriBuilder uriBuilder = UriTemplate.of(StringUtils.EMPTY).toBuilder(); for (Map.Entry targeting : extImpYieldlab.getTargeting().entrySet()) { - uriBuilder.addParameter(targeting.getKey(), targeting.getValue()); + uriBuilder.queryParam(targeting.getKey(), targeting.getValue()); } - return uriBuilder.toString().replace("?", ""); + return uriBuilder.build().replace("?", ""); } private static String getGdprParameter(Regs regs) { @@ -326,10 +296,10 @@ private static String encodeValue(String value) { private static Map extractDsaRequestParamsFromBidRequest(BidRequest request) { return Optional.ofNullable(request.getRegs()) - .map(Regs::getExt) - .map(ExtRegs::getDsa) - .map(YieldlabBidder::extractDsaRequestParamsFromDsaRegsExtension) - .orElse(Collections.emptyMap()); + .map(Regs::getExt) + .map(ExtRegs::getDsa) + .map(YieldlabBidder::extractDsaRequestParamsFromDsaRegsExtension) + .orElse(Collections.emptyMap()); } private static Map extractDsaRequestParamsFromDsaRegsExtension(final ExtRegsDsa dsa) { @@ -527,29 +497,29 @@ private String makeVast(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBi } private String makeNurl(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBid yieldlabBid) { - final URIBuilder uriBuilder = new URIBuilder() - .addParameter("ts", resolveNumberParameter(clock.instant().getEpochSecond())) - .addParameter("id", extImp.getExtId()) - .addParameter("pvid", yieldlabBid.getPvid()); + final UriTemplate.UriBuilder uriBuilder = UriTemplate.of(StringUtils.EMPTY).toBuilder() + .queryParam("ts", resolveNumberParameter(clock.instant().getEpochSecond())) + .queryParam("id", extImp.getExtId()) + .queryParam("pvid", yieldlabBid.getPvid()); final User user = bidRequest.getUser(); if (user != null && StringUtils.isNotBlank(user.getBuyeruid())) { - uriBuilder.addParameter("ids", "ylid:" + StringUtils.defaultString(user.getBuyeruid())); + uriBuilder.queryParam("ids", "ylid:" + StringUtils.defaultString(user.getBuyeruid())); } final String gdpr = getGdprParameter(bidRequest.getRegs()); final String consent = getConsentParameter(bidRequest.getUser()); if (StringUtils.isNotBlank(gdpr) && StringUtils.isNotBlank(consent)) { uriBuilder - .addParameter("gdpr", gdpr) - .addParameter("gdpr_consent", consent); + .queryParam("gdpr", gdpr) + .queryParam("gdpr_consent", consent); } return AD_SOURCE_URL.formatted( extImp.getAdslotId(), extImp.getSupplyId(), yieldlabBid.getAdSize(), - uriBuilder.toString().replace("?", "")); + uriBuilder.build().replace("?", "")); } private ObjectNode resolveBidExt(YieldlabBid bid, List errors) { diff --git a/src/main/java/org/prebid/server/cache/CoreCacheService.java b/src/main/java/org/prebid/server/cache/CoreCacheService.java index 6b028eb9ae8..c70ecd0200f 100644 --- a/src/main/java/org/prebid/server/cache/CoreCacheService.java +++ b/src/main/java/org/prebid/server/cache/CoreCacheService.java @@ -9,7 +9,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.auction.model.AuctionContext; import org.prebid.server.auction.model.BidInfo; import org.prebid.server.auction.model.CachedDebugLog; @@ -43,11 +42,11 @@ import org.prebid.server.settings.model.AccountAuctionConfig; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.UriTemplate; import org.prebid.server.vast.VastModifier; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import java.net.URISyntaxException; import java.net.URL; import java.time.Clock; import java.util.ArrayList; @@ -76,6 +75,7 @@ public class CoreCacheService { private final HttpClient httpClient; private final URL externalEndpointUrl; private final URL internalEndpointUrl; + private final UriTemplate cachedObjectEndpointTemplate; private final String cachedAssetUrlTemplate; private final long expectedCacheTimeMs; private final VastModifier vastModifier; @@ -111,6 +111,8 @@ public CoreCacheService( this.httpClient = Objects.requireNonNull(httpClient); this.externalEndpointUrl = Objects.requireNonNull(externalEndpointUrl); this.internalEndpointUrl = internalEndpointUrl; + this.cachedObjectEndpointTemplate = UriTemplate.of( + ObjectUtils.firstNonNull(internalEndpointUrl, externalEndpointUrl).toString()); this.cachedAssetUrlTemplate = Objects.requireNonNull(cachedAssetUrlTemplate); this.expectedCacheTimeMs = expectedCacheTimeMs; this.vastModifier = Objects.requireNonNull(vastModifier); @@ -657,18 +659,10 @@ public Future getCachedObject(String key, String ch, Timeout return Future.failedFuture(new TimeoutException("Timeout has been exceeded")); } - final URL endpointUrl = ObjectUtils.firstNonNull(internalEndpointUrl, externalEndpointUrl); - final String url; - try { - final URIBuilder uriBuilder = new URIBuilder(endpointUrl.toString()); - uriBuilder.addParameter(UUID_QUERY_PARAMETER, key); - if (StringUtils.isNotBlank(ch)) { - uriBuilder.addParameter(CH_QUERY_PARAMETER, ch); - } - url = uriBuilder.build().toString(); - } catch (URISyntaxException e) { - return Future.failedFuture(new IllegalArgumentException("Configured cache url is malformed", e)); - } + final String url = cachedObjectEndpointTemplate.toBuilder() + .queryParam(UUID_QUERY_PARAMETER, key) + .queryParam(CH_QUERY_PARAMETER, StringUtils.isNotBlank(ch) ? ch : null) + .build(); final long startTime = clock.millis(); return httpClient.get(url, cacheHeaders, remainingTimeout) diff --git a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java index 9fd2531d275..5e4fad67862 100644 --- a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java +++ b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java @@ -42,6 +42,6 @@ private static URL toUrl(String cacheSchema, String path, String cacheQuery) throws URISyntaxException, MalformedURLException { - return new URI(cacheSchema, null, cacheHost, -1, path, cacheQuery, null).toURL(); + return new URI(cacheSchema, cacheHost, path, cacheQuery, null).toURL(); } } diff --git a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java index 13f20d2c4f9..f37e3b4755a 100644 --- a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java @@ -8,7 +8,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; import org.prebid.server.exception.PreBidException; import org.prebid.server.execution.timeout.Timeout; import org.prebid.server.json.DecodeException; @@ -24,10 +23,10 @@ import org.prebid.server.settings.proto.response.HttpAccountsResponse; import org.prebid.server.settings.proto.response.HttpFetcherResponse; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.UriTemplate; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -79,9 +78,9 @@ public class HttpApplicationSettings implements ApplicationSettings { }; private final boolean isRfc3986Compatible; - private final String endpoint; - private final String ampEndpoint; - private final String videoEndpoint; + private final UriTemplate endpointTemplate; + private final UriTemplate ampEndpointTemplate; + private final UriTemplate videoEndpointTemplate; private final String categoryEndpoint; private final HttpClient httpClient; private final JacksonMapper mapper; @@ -95,9 +94,9 @@ public HttpApplicationSettings(boolean isRfc3986Compatible, JacksonMapper mapper) { this.isRfc3986Compatible = isRfc3986Compatible; - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); - this.ampEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(ampEndpoint)); - this.videoEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(videoEndpoint)); + this.endpointTemplate = UriTemplate.of(endpoint); + this.ampEndpointTemplate = UriTemplate.of(ampEndpoint); + this.videoEndpointTemplate = UriTemplate.of(videoEndpoint); this.categoryEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(categoryEndpoint)); this.httpClient = Objects.requireNonNull(httpClient); this.mapper = Objects.requireNonNull(mapper); @@ -122,24 +121,21 @@ private Future> fetchAccountsByIds(Set accountIds, Timeout return Future.failedFuture(new TimeoutException("Timeout has been exceeded")); } - return httpClient.get(accountsRequestUrlFrom(endpoint, accountIds), HttpUtil.headers(), remainingTimeout) + return httpClient.get( + accountsRequestUrlFrom(endpointTemplate, accountIds), + HttpUtil.headers(), + remainingTimeout) .map(response -> processAccountsResponse(response, accountIds)); } - private String accountsRequestUrlFrom(String endpoint, Set accountIds) { - try { - final URIBuilder uriBuilder = new URIBuilder(endpoint); - if (!accountIds.isEmpty()) { - if (isRfc3986Compatible) { - accountIds.forEach(accountId -> uriBuilder.addParameter("account-id", accountId)); - } else { - uriBuilder.addParameter("account-ids", "[\"%s\"]".formatted(joinIds(accountIds))); - } - } - return uriBuilder.build().toString(); - } catch (URISyntaxException e) { - throw new PreBidException("URL %s has bad syntax".formatted(endpoint)); + private String accountsRequestUrlFrom(UriTemplate endpointTemplate, Set accountIds) { + final UriTemplate.UriBuilder builder = endpointTemplate.toBuilder(); + if (isRfc3986Compatible) { + builder.queryParam("account-id", accountIds); + } else { + builder.queryParam("account-ids", "[\"%s\"]".formatted(joinIds(accountIds))); } + return builder.build(); } private Set processAccountsResponse(HttpClientResponse httpClientResponse, Set accountIds) { @@ -167,7 +163,7 @@ public Future> getStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(endpoint, requestIds, impIds, timeout); + return fetchStoredData(endpointTemplate, requestIds, impIds, timeout); } @Override @@ -176,7 +172,7 @@ public Future> getAmpStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(ampEndpoint, requestIds, Collections.emptySet(), timeout); + return fetchStoredData(ampEndpointTemplate, requestIds, Collections.emptySet(), timeout); } @Override @@ -185,10 +181,10 @@ public Future> getVideoStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(videoEndpoint, requestIds, impIds, timeout); + return fetchStoredData(videoEndpointTemplate, requestIds, impIds, timeout); } - private Future> fetchStoredData(String endpoint, + private Future> fetchStoredData(UriTemplate endpointTemplate, Set requestIds, Set impIds, Timeout timeout) { @@ -203,7 +199,10 @@ private Future> fetchStoredData(String endpoint, return failStoredDataResponse(new TimeoutException("Timeout has been exceeded"), requestIds, impIds); } - return httpClient.get(storeRequestUrlFrom(endpoint, requestIds, impIds), HttpUtil.headers(), remainingTimeout) + return httpClient.get( + storeRequestUrlFrom(endpointTemplate, requestIds, impIds), + HttpUtil.headers(), + remainingTimeout) .map(response -> processStoredDataResponse(response, requestIds, impIds)) .recover(exception -> failStoredDataResponse(exception, requestIds, impIds)); } @@ -231,27 +230,23 @@ private static StoredDataResult toFailedStoredDataResult(Set req return StoredDataResult.of(Collections.emptyMap(), Collections.emptyMap(), Collections.singletonList(error)); } - private String storeRequestUrlFrom(String endpoint, Set requestIds, Set impIds) { - try { - final URIBuilder uriBuilder = new URIBuilder(endpoint); - if (!requestIds.isEmpty()) { - if (isRfc3986Compatible) { - requestIds.forEach(requestId -> uriBuilder.addParameter("request-id", requestId)); - } else { - uriBuilder.addParameter("request-ids", "[\"%s\"]".formatted(joinIds(requestIds))); - } + private String storeRequestUrlFrom(UriTemplate endpointTemplate, Set requestIds, Set impIds) { + final UriTemplate.UriBuilder builder = endpointTemplate.toBuilder(); + if (!requestIds.isEmpty()) { + if (isRfc3986Compatible) { + builder.queryParam("request-id", requestIds); + } else { + builder.queryParam("request-ids", "[\"%s\"]".formatted(joinIds(requestIds))); } - if (!impIds.isEmpty()) { - if (isRfc3986Compatible) { - impIds.forEach(impId -> uriBuilder.addParameter("imp-id", impId)); - } else { - uriBuilder.addParameter("imp-ids", "[\"%s\"]".formatted(joinIds(impIds))); - } + } + if (!impIds.isEmpty()) { + if (isRfc3986Compatible) { + builder.queryParam("imp-id", impIds); + } else { + builder.queryParam("imp-ids", "[\"%s\"]".formatted(joinIds(impIds))); } - return uriBuilder.build().toString(); - } catch (URISyntaxException e) { - throw new PreBidException("URL %s has bad syntax".formatted(endpoint)); } + return builder.build(); } private StoredDataResult processStoredDataResponse(HttpClientResponse httpClientResponse, diff --git a/src/main/java/org/prebid/server/spring/config/bidder/SmartadserverConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/SmartadserverConfiguration.java index 3d831685aff..b6fabf5ae56 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/SmartadserverConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/SmartadserverConfiguration.java @@ -38,8 +38,7 @@ BidderDeps smartadserverBidderDeps(SmartadserverConfigurationProperties smartads return BidderDepsAssembler.forBidder(BIDDER_NAME) .withConfig(smartadserverConfigurationProperties) .usersyncerCreator(UsersyncerCreator.create(externalUrl)) - .bidderCreator(config -> new SmartadserverBidder( - config.getEndpoint(), config.getSecondaryEndpoint(), mapper)) + .bidderCreator(config -> new SmartadserverBidder(config.getEndpoint(), config.getPgEndpoint(), mapper)) .assemble(); } @@ -48,6 +47,6 @@ BidderDeps smartadserverBidderDeps(SmartadserverConfigurationProperties smartads @NoArgsConstructor private static class SmartadserverConfigurationProperties extends BidderConfigurationProperties { - private String secondaryEndpoint; + private String pgEndpoint; } } diff --git a/src/main/java/org/prebid/server/util/UriTemplate.java b/src/main/java/org/prebid/server/util/UriTemplate.java index d0da1a98b29..870464320b3 100644 --- a/src/main/java/org/prebid/server/util/UriTemplate.java +++ b/src/main/java/org/prebid/server/util/UriTemplate.java @@ -65,6 +65,11 @@ public UriBuilder(io.vertx.uritemplate.UriTemplate template) { variables.set(DYNAMIC_QUERY_PARAM, new LinkedHashMap<>()); } + public UriBuilder domainParam(String key, String value) { + variables.set(key, value); + return this; + } + public UriBuilder pathParam(String key, String value) { variables.set(key, value); return this; @@ -93,5 +98,10 @@ public UriBuilder queryParam(String key, Collection value) { public String build() throws NoSuchElementException { return template.expandToString(variables, REQUIRE_ALL_PARAMS); } + + @Override + public String toString() { + return build(); + } } } diff --git a/src/main/resources/bidder-config/eplanning.yaml b/src/main/resources/bidder-config/eplanning.yaml index db89054080a..c81a7a3b5a6 100644 --- a/src/main/resources/bidder-config/eplanning.yaml +++ b/src/main/resources/bidder-config/eplanning.yaml @@ -1,6 +1,6 @@ adapters: eplanning: - endpoint: http://rtb.e-planning.net/pbs/1 + endpoint: http://rtb.e-planning.net/pbs/1/{ClientId}/{DfpClientId}/{RequestTarget}/{Sec} meta-info: maintainer-email: producto@e-planning.net app-media-types: diff --git a/src/main/resources/bidder-config/smartadserver.yaml b/src/main/resources/bidder-config/smartadserver.yaml index 343bec392de..f35175e4445 100644 --- a/src/main/resources/bidder-config/smartadserver.yaml +++ b/src/main/resources/bidder-config/smartadserver.yaml @@ -1,7 +1,7 @@ adapters: smartadserver: - endpoint: https://ssb-global.smartadserver.com - secondary-endpoint: https://prebid-global.smartadserver.com + endpoint: https://ssb-global.smartadserver.com/api/bid + pg-endpoint: https://prebid-global.smartadserver.com/ortb endpoint-compression: gzip aliases: equativ: diff --git a/src/main/resources/bidder-config/tappx.yaml b/src/main/resources/bidder-config/tappx.yaml index ef6541beb8f..f9933c9e6ee 100644 --- a/src/main/resources/bidder-config/tappx.yaml +++ b/src/main/resources/bidder-config/tappx.yaml @@ -1,6 +1,6 @@ adapters: tappx: - endpoint: https://{{subdomain}}.tappx.com + endpoint: https://{subdomain}.tappx.com/{path} meta-info: maintainer-email: tappx@tappx.com app-media-types: diff --git a/src/main/resources/bidder-config/yandex.yaml b/src/main/resources/bidder-config/yandex.yaml index 11800ddb11a..2c48e474a1e 100644 --- a/src/main/resources/bidder-config/yandex.yaml +++ b/src/main/resources/bidder-config/yandex.yaml @@ -1,6 +1,6 @@ adapters: yandex: - endpoint: https://bs-metadsp.yandex.ru/prebid/{{PageId}}?imp-id={{ImpId}}&ssp-id=10500 + endpoint: https://bs-metadsp.yandex.ru/prebid/{PageId}?ssp-id=10500 endpoint-compression: gzip meta-info: maintainer-email: prebid@yandex-team.ru diff --git a/src/main/resources/bidder-config/yieldlab.yaml b/src/main/resources/bidder-config/yieldlab.yaml index 806d279bc26..d632c3c43fe 100644 --- a/src/main/resources/bidder-config/yieldlab.yaml +++ b/src/main/resources/bidder-config/yieldlab.yaml @@ -1,6 +1,6 @@ adapters: yieldlab: - endpoint: https://ad.yieldlab.net/yp + endpoint: https://ad.yieldlab.net/yp/{AdSlotId} meta-info: maintainer-email: solutions@yieldlab.de app-media-types: diff --git a/src/test/java/org/prebid/server/it/SmartadserverTest.java b/src/test/java/org/prebid/server/it/SmartadserverTest.java index 296883918e8..d5c06731c12 100644 --- a/src/test/java/org/prebid/server/it/SmartadserverTest.java +++ b/src/test/java/org/prebid/server/it/SmartadserverTest.java @@ -18,7 +18,7 @@ public class SmartadserverTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromSmartadserver() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-secondary-exchange/ortb")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-pg-exchange/ortb")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smartadserver/test-smartadserver-bid-request.json"))) .willReturn(aResponse() .withBody(jsonFrom("openrtb2/smartadserver/test-smartadserver-bid-response.json")))); diff --git a/src/test/resources/org/prebid/server/it/test-application.properties b/src/test/resources/org/prebid/server/it/test-application.properties index 5611899aa11..17f864aa414 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -32,7 +32,7 @@ adapters.adgeneration.endpoint=http://localhost:8090/adgeneration-exchange adapters.adhese.enabled=true adapters.adhese.endpoint=http://localhost:8090/adhese-exchange adapters.adkerneladn.enabled=true -adapters.adkerneladn.endpoint=http://localhost:8090/adkerneladn-exchange?account={{PublisherID}} +adapters.adkerneladn.endpoint=http://localhost:8090/adkerneladn-exchange adapters.adkernel.enabled=true adapters.adkernel.endpoint=http://localhost:8090/adkernel-exchange adapters.adkernel.aliases.xapads.enabled=true @@ -44,19 +44,19 @@ adapters.adkernel.aliases.152media.endpoint=http://localhost:8090/152media-excha adapters.adman.enabled=true adapters.adman.endpoint=http://localhost:8090/adman-exchange adapters.admatic.enabled=true -adapters.admatic.endpoint=http://localhost:8090/admatic-exchange?host={{Host}} +adapters.admatic.endpoint=http://localhost:8090/admatic-exchange adapters.admatic.aliases.adt.enabled=true -adapters.admatic.aliases.adt.endpoint=http://localhost:8090/adt-exchange?host={{Host}} +adapters.admatic.aliases.adt.endpoint=http://localhost:8090/adt-exchange adapters.admatic.aliases.pixad.enabled=true -adapters.admatic.aliases.pixad.endpoint=http://localhost:8090/pixad-exchange?host={{Host}} +adapters.admatic.aliases.pixad.endpoint=http://localhost:8090/pixad-exchange adapters.admatic.aliases.monetixads.enabled=true -adapters.admatic.aliases.monetixads.endpoint=http://localhost:8090/monetixads-exchange?host={{Host}} +adapters.admatic.aliases.monetixads.endpoint=http://localhost:8090/monetixads-exchange adapters.admatic.aliases.admaticde.enabled=true -adapters.admatic.aliases.admaticde.endpoint=http://localhost:8090/admaticde-exchange?host={{Host}} +adapters.admatic.aliases.admaticde.endpoint=http://localhost:8090/admaticde-exchange adapters.admatic.aliases.yobee.enabled=true -adapters.admatic.aliases.yobee.endpoint=http://localhost:8090/yobee-exchange?host={{Host}} +adapters.admatic.aliases.yobee.endpoint=http://localhost:8090/yobee-exchange adapters.admatic.aliases.netaddiction.enabled=true -adapters.admatic.aliases.netaddiction.endpoint=http://localhost:8090/netaddiction-exchange?host={{Host}} +adapters.admatic.aliases.netaddiction.endpoint=http://localhost:8090/netaddiction-exchange adapters.admixer.enabled=true adapters.admixer.endpoint=http://localhost:8090/admixer-exchange adapters.adnuntius.enabled=true @@ -69,13 +69,13 @@ adapters.adpone.endpoint=http://localhost:8090/adpone-exchange adapters.adot.enabled=true adapters.adot.endpoint=http://localhost:8090/adot-exchange adapters.adverxo.enabled=true -adapters.adverxo.endpoint=http://localhost:8090/adverxo-exchange?adUnitId={{adUnitId}}&auth={{auth}} +adapters.adverxo.endpoint=http://localhost:8090/adverxo-exchange adapters.adverxo.aliases.adport.enabled=true adapters.adverxo.aliases.adport.endpoint=http://localhost:8090/adport-exchange adapters.adverxo.aliases.bidsmind.enabled=true adapters.adverxo.aliases.bidsmind.endpoint=http://localhost:8090/bidsmind-exchange adapters.adview.enabled=true -adapters.adview.endpoint=http://localhost:8090/adview-exchange?accountId={{AccountId}} +adapters.adview.endpoint=http://localhost:8090/adview-exchange adapters.adprime.enabled=true adapters.adprime.endpoint=http://localhost:8090/adprime-exchange adapters.adquery.enabled=true @@ -94,14 +94,14 @@ adapters.adtelligent.aliases.copper6.endpoint=http://localhost:8090/copper6-exch adapters.adtelligent.aliases.indicue.enabled=true adapters.adtelligent.aliases.indicue.endpoint=http://localhost:8090/indicue-exchange adapters.adtonos.enabled=true -adapters.adtonos.endpoint=http://localhost:8090/adtonos-exchange/{{PublisherId}} +adapters.adtonos.endpoint=http://localhost:8090/adtonos-exchange adapters.adtrgtme.enabled=true adapters.adtrgtme.endpoint=http://localhost:8090/adtrgtme-exchange adapters.aduptech.enabled=true adapters.aduptech.endpoint=http://localhost:8090/aduptech-exchange adapters.aduptech.target-currency=EUR adapters.advangelists.enabled=true -adapters.advangelists.endpoint=http://localhost:8090/advangelists-exchange?pubid={{PublisherID}} +adapters.advangelists.endpoint=http://localhost:8090/advangelists-exchange adapters.adxcg.enabled=true adapters.adxcg.endpoint=http://localhost:8090/adxcg-exchange adapters.adyoulike.enabled=true @@ -138,13 +138,13 @@ adapters.appnexus.aliases.mediafuse.endpoint=http://localhost:8090/mediafuse-exc adapters.appush.enabled=true adapters.appush.endpoint=http://localhost:8090/appush-exchange adapters.aso.enabled=true -adapters.aso.endpoint=http://localhost:8090/aso-exchange?zid={{ZoneID}} +adapters.aso.endpoint=http://localhost:8090/aso-exchange adapters.aso.aliases.bcmint.enabled=true -adapters.aso.aliases.bcmint.endpoint=http://localhost:8090/bcmint-exchange?zid={{ZoneID}} +adapters.aso.aliases.bcmint.endpoint=http://localhost:8090/bcmint-exchange adapters.aso.aliases.bidagency.enabled=true -adapters.aso.aliases.bidagency.endpoint=http://localhost:8090/bidagency-exchange?zid={{ZoneID}} +adapters.aso.aliases.bidagency.endpoint=http://localhost:8090/bidagency-exchange adapters.aso.aliases.kuantyx.enabled=true -adapters.aso.aliases.kuantyx.endpoint=http://localhost:8090/kuantyx-exchange?zid={{ZoneID}} +adapters.aso.aliases.kuantyx.endpoint=http://localhost:8090/kuantyx-exchange adapters.automatad.enabled=true adapters.automatad.endpoint=http://localhost:8090/automatad-exchange adapters.avocet.enabled=true @@ -160,7 +160,7 @@ adapters.beachfront.platform-id=142 adapters.beintoo.enabled=true adapters.beintoo.endpoint=http://localhost:8090/beintoo-exchange adapters.bematterfull.enabled=true -adapters.bematterfull.endpoint=http://localhost:8090/bematterfull-exchange?host={{Host}}&pid={{SourceId}} +adapters.bematterfull.endpoint=http://localhost:8090/bematterfull-exchange adapters.bidscube.enabled=true adapters.bidscube.endpoint=http://localhost:8090/bidscube-exchange adapters.bidstack.enabled=true @@ -170,7 +170,7 @@ adapters.bidtheatre.endpoint=http://localhost:8090/bidtheatre-exchange adapters.bigoad.enabled=true adapters.bigoad.endpoint=http://localhost:8090/bigoad-exchange adapters.blasto.enabled=true -adapters.blasto.endpoint=http://localhost:8090/blasto-exchange?source={{SourceId}}&account={{AccountID}} +adapters.blasto.endpoint=http://localhost:8090/blasto-exchange adapters.bliink.enabled=true adapters.bliink.endpoint=http://localhost:8090/bliink-exchange adapters.blis.enabled=true @@ -213,7 +213,7 @@ adapters.criteo.enabled=true adapters.criteo.endpoint=http://localhost:8090/criteo-exchange adapters.criteo.generate-slot-id=false adapters.datablocks.enabled=true -adapters.datablocks.endpoint=http://localhost:8090/datablocks-exchange?sid={{SourceId}} +adapters.datablocks.endpoint=http://localhost:8090/datablocks-exchange adapters.decenterads.enabled=true adapters.decenterads.endpoint=http://localhost:8090/decenterads-exchange adapters.deepintent.enabled=true @@ -223,11 +223,11 @@ adapters.definemedia.endpoint=http://localhost:8090/definemedia-exchange adapters.dianomi.enabled=true adapters.dianomi.endpoint=http://localhost:8090/dianomi-exchange adapters.displayio.enabled=true -adapters.displayio.endpoint=http://localhost:8090/displayio-exchange?publisher={{PublisherID}} +adapters.displayio.endpoint=http://localhost:8090/displayio-exchange adapters.dmx.enabled=true adapters.dmx.endpoint=http://localhost:8090/dmx-exchange adapters.driftpixel.enabled=true -adapters.driftpixel.endpoint=http://localhost:8090/driftpixel-exchange?env={{Host}}&pid={{SourceId}} +adapters.driftpixel.endpoint=http://localhost:8090/driftpixel-exchange adapters.dxkulture.enabled=true adapters.dxkulture.endpoint=http://localhost:8090/dxkulture-exchange adapters.edge226.enabled=true @@ -245,7 +245,7 @@ adapters.epsilon.enabled=true adapters.epsilon.endpoint=http://localhost:8090/epsilon-exchange adapters.epsilon.generate-bid-id=false adapters.escalax.enabled=true -adapters.escalax.endpoint=http://localhost:8090/escalax-exchange?k={{AccountID}}&name={{SourceId}} +adapters.escalax.endpoint=http://localhost:8090/escalax-exchange adapters.evolution.enabled=true adapters.evolution.endpoint=http://localhost:8090/evolution-exchange adapters.exco.enabled=true @@ -259,6 +259,7 @@ adapters.flipp.enabled=true adapters.flipp.endpoint=http://localhost:8090/flipp-exchange adapters.audiencenetwork.enabled=true adapters.audiencenetwork.endpoint=http://localhost:8090/audienceNetwork-exchange +adapters.audiencenetwork.timeout-notification-url-template=http://localhost:8090/audienceNetwork-timeout adapters.audiencenetwork.platform-id=101 adapters.audiencenetwork.app-secret=67234 adapters.freewheelssp.enabled=true @@ -289,6 +290,8 @@ adapters.huaweiads.extra-info.europeanEndpoint=http://localhost:8090/huaweiads-e adapters.huaweiads.extra-info.asianEndpoint=http://localhost:8090/huaweiads-exchange-as adapters.imds.enabled=true adapters.imds.endpoint=http://localhost:8090/imds-exchange +adapters.imds.aliases.synacormedia.enabled=true +adapters.imds.aliases.synacormedia.endpoint=http://localhost:8090/synacormedia-exchange adapters.impactify.enabled=true adapters.impactify.endpoint=http://localhost:8090/impactify-exchange adapters.improvedigital.enabled=true @@ -318,7 +321,7 @@ adapters.krushmedia.endpoint=http://localhost:8090/krushmedia-exchange adapters.kueezrtb.enabled=true adapters.kueezrtb.endpoint=http://localhost:8090/kueezrtb-exchange/ adapters.lemmadigital.enabled=true -adapters.lemmadigital.endpoint=http://localhost:8090/lemmadigital-exchange/{{PublisherID}}/{{AdUnit}} +adapters.lemmadigital.endpoint=http://localhost:8090/lemmadigital-exchange adapters.vungle.enabled=true adapters.vungle.endpoint=http://localhost:8090/vungle-exchange adapters.vungle.aliases.liftoff.enabled=true @@ -328,27 +331,27 @@ adapters.kargo.endpoint=http://localhost:8090/kargo-exchange adapters.kayzen.enabled=true adapters.kayzen.endpoint=http://localhost:8090/kayzen-exchange adapters.limelightDigital.enabled=true -adapters.limelightDigital.endpoint=http://localhost:8090/limelightDigital-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.endpoint=http://localhost:8090/limelightDigital-exchange adapters.limelightDigital.aliases.iionads.enabled=true -adapters.limelightDigital.aliases.iionads.endpoint=http://localhost:8090/iionads-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.iionads.endpoint=http://localhost:8090/iionads-exchange adapters.limelightDigital.aliases.adsyield.enabled=true -adapters.limelightDigital.aliases.adsyield.endpoint=http://localhost:8090/adsyield-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.adsyield.endpoint=http://localhost:8090/adsyield-exchange adapters.limelightDigital.aliases.greedygame.enabled=true -adapters.limelightDigital.aliases.greedygame.endpoint=http://localhost:8090/greedygame-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.greedygame.endpoint=http://localhost:8090/greedygame-exchange adapters.limelightDigital.aliases.xtrmqb.enabled=true -adapters.limelightDigital.aliases.xtrmqb.endpoint=http://localhost:8090/xtrmqb-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.xtrmqb.endpoint=http://localhost:8090/xtrmqb-exchange adapters.limelightDigital.aliases.embimedia.enabled=true -adapters.limelightDigital.aliases.embimedia.endpoint=http://localhost:8090/embimedia-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.embimedia.endpoint=http://localhost:8090/embimedia-exchange adapters.limelightDigital.aliases.filmzie.enabled=true -adapters.limelightDigital.aliases.filmzie.endpoint=http://localhost:8090/filmzie-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.filmzie.endpoint=http://localhost:8090/filmzie-exchange adapters.limelightDigital.aliases.tgm.enabled=true -adapters.limelightDigital.aliases.tgm.endpoint=http://localhost:8090/tgm-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.tgm.endpoint=http://localhost:8090/tgm-exchange adapters.limelightDigital.aliases.streamlyn.enabled=true -adapters.limelightDigital.aliases.streamlyn.endpoint=http://localhost:8090/streamlyn-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.streamlyn.endpoint=http://localhost:8090/streamlyn-exchange adapters.limelightDigital.aliases.streamvision.enabled=true -adapters.limelightDigital.aliases.streamvision.endpoint=http://localhost:8090/streamvision-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.streamvision.endpoint=http://localhost:8090/streamvision-exchange adapters.limelightDigital.aliases.orangeclickmedia.enabled=true -adapters.limelightDigital.aliases.orangeclickmedia.endpoint=http://localhost:8090/orangeclickmedia-exchange/{{Host}}/{{PublisherID}} +adapters.limelightDigital.aliases.orangeclickmedia.endpoint=http://localhost:8090/orangeclickmedia-exchange adapters.limelightDigital.aliases.velonium.enabled=true adapters.limelightDigital.aliases.velonium.endpoint=http://localhost:8090/velonium-exchange/ adapters.limelightDigital.aliases.adtg_org.enabled=true @@ -356,7 +359,7 @@ adapters.limelightDigital.aliases.adtg_org.endpoint=http://localhost:8090/adtg_o adapters.limelightDigital.aliases.performist.enabled=true adapters.limelightDigital.aliases.performist.endpoint=http://localhost:8090/performist-exchange/ adapters.lmkiviads.enabled=true -adapters.lmkiviads.endpoint=http://localhost:8090/lm-kiviads-exchange/{{SourceId}}/{{Host}} +adapters.lmkiviads.endpoint=http://localhost:8090/lm-kiviads-exchange adapters.lockerdome.enabled=true adapters.lockerdome.endpoint=http://localhost:8090/lockerdome-exchange adapters.logan.enabled=true @@ -368,7 +371,7 @@ adapters.loopme.endpoint=http://localhost:8090/loopme-exchange adapters.loyal.enabled=true adapters.loyal.endpoint=http://localhost:8090/loyal-exchange adapters.lunamedia.enabled=true -adapters.lunamedia.endpoint=http://localhost:8090/lunamedia-exchange?pubid= +adapters.lunamedia.endpoint=http://localhost:8090/lunamedia-exchange adapters.mabidder.enabled=true adapters.mabidder.endpoint=http://localhost:8090/mabidder-exchange adapters.madsense.enabled=true @@ -376,34 +379,34 @@ adapters.madsense.endpoint=http://localhost:8090/madsense-exchange adapters.madvertise.enabled=true adapters.madvertise.endpoint=http://localhost:8090/madvertise-exchange adapters.marsmedia.enabled=true -adapters.marsmedia.endpoint=http://localhost:8090/marsmedia-exchange?param=testParam +adapters.marsmedia.endpoint=http://localhost:8090/marsmedia-exchange adapters.mediago.enabled=true -adapters.mediago.endpoint=http://localhost:8090/mediago-exchange?token={{AccountID}}®ion={{Host}} +adapters.mediago.endpoint=http://localhost:8090/mediago-exchange adapters.medianet.enabled=true adapters.medianet.endpoint=http://localhost:8090/medianet-exchange adapters.melozen.enabled=true -adapters.melozen.endpoint=http://localhost:8090/melozen-exchange?pubId={{PublisherID}} +adapters.melozen.endpoint=http://localhost:8090/melozen-exchange adapters.mediasquare.enabled=true adapters.mediasquare.endpoint=http://localhost:8090/mediasquare-exchange adapters.metax.enabled=true -adapters.metax.endpoint=http://localhost:8090/metax-exchange?publisher_id={{publisherId}}&adunit={{adUnit}} +adapters.metax.endpoint=http://localhost:8090/metax-exchange adapters.mgid.enabled=true adapters.mgid.endpoint=http://localhost:8090/mgid-exchange/ adapters.mgidX.enabled=true adapters.mgidX.endpoint=http://localhost:8090/mgidx-exchange adapters.minutemedia.enabled=true -adapters.minutemedia.endpoint=http://localhost:8090/minutemedia-exchange?publisherId={{PublisherId}} -adapters.minutemedia.test-endpoint=http://localhost:8090/minutemedia-exchange?publisherId={{PublisherId}} +adapters.minutemedia.endpoint=http://localhost:8090/minutemedia-exchange +adapters.minutemedia.test-endpoint=http://localhost:8090/minutemedia-exchange adapters.missena.enabled=true adapters.missena.endpoint=http://localhost:8090/missena-exchange adapters.mobfoxpb.enabled=true -adapters.mobfoxpb.endpoint=http://localhost:8090/mobfoxpb-exchange?c=__route__&m=__method__&key=__key__ +adapters.mobfoxpb.endpoint=http://localhost:8090/mobfoxpb-exchange adapters.mobilefuse.enabled=true adapters.mobilefuse.endpoint=http://localhost:8090/mobilefuse-exchange/ adapters.mobkoi.enabled=true adapters.mobkoi.endpoint=http://localhost:8090/mobkoi-exchange adapters.motorik.enabled=true -adapters.motorik.endpoint=http://localhost:8090/motorik-exchange?k={{AccountID}}&name={{SourceId}} +adapters.motorik.endpoint=http://localhost:8090/motorik-exchange adapters.nativery.enabled=true adapters.nativery.endpoint=http://localhost:8090/nativery-exchange adapters.nextmillennium.enabled=true @@ -418,7 +421,7 @@ adapters.nexx360.aliases.prismassp.endpoint=http://localhost:8090/prismassp-exch adapters.nexx360.aliases.easybid.enabled=true adapters.nexx360.aliases.easybid.endpoint=http://localhost:8090/easybid-exchange adapters.nobid.enabled=true -adapters.nobid.endpoint=http://localhost:8090/nobid-exchange?pubid= +adapters.nobid.endpoint=http://localhost:8090/nobid-exchange adapters.ogury.enabled=true adapters.ogury.endpoint=http://localhost:8090/ogury-exchange adapters.oms.enabled=true @@ -440,7 +443,7 @@ adapters.orbidder.endpoint=http://localhost:8090/orbidder-exchange adapters.outbrain.enabled=true adapters.outbrain.endpoint=http://localhost:8090/outbrain-exchange adapters.ownadx.enabled=true -adapters.ownadx.endpoint=http://localhost:8090/ownadx-exchange/bid/{{SeatID}}/{{SspID}}?token={{TokenID}} +adapters.ownadx.endpoint=http://localhost:8090/ownadx-exchange adapters.pangle.enabled=true adapters.pangle.endpoint=http://localhost:8090/pangle-exchange adapters.pgamssp.enabled=true @@ -464,10 +467,10 @@ adapters.qt.endpoint=http://localhost:8090/qt-exchange adapters.readpeak.enabled=true adapters.readpeak.endpoint=http://localhost:8090/readpeak-exchange adapters.rediads.enabled=true -adapters.rediads.endpoint=http://{{SUBDOMAIN}}:8090/rediads-exchange +adapters.rediads.endpoint=http://localhost:8090/rediads-exchange adapters.rediads.default-subdomain=localhost adapters.relevantdigital.enabled=true -adapters.relevantdigital.endpoint=http://localhost:8090/relevantdigital-exchange?pbsHost={{Host}} +adapters.relevantdigital.endpoint=http://localhost:8090/relevantdigital-exchange adapters.resetdigital.enabled=true adapters.resetdigital.endpoint=http://localhost:8090/resetdigital-exchange adapters.revcontent.enabled=true @@ -477,13 +480,13 @@ adapters.richaudience.endpoint=http://localhost:8090/richaudience-exchange adapters.rise.enabled=true adapters.rise.endpoint=http://localhost:8090/rise-exchange adapters.roulax.enabled=true -adapters.roulax.endpoint=http://localhost:8090/roulax-exchange/{{PublisherID}}?pid={{AccountID}} +adapters.roulax.endpoint=http://localhost:8090/roulax-exchange adapters.rtbhouse.enabled=true adapters.rtbhouse.endpoint=http://localhost:8090/rtbhouse-exchange adapters.rubicon.enabled=true -adapters.rubicon.endpoint=http://localhost:8090/rubicon-exchange?tk_xint=rp-pbs +adapters.rubicon.endpoint=http://localhost:8090/rubicon-exchange adapters.rubicon.aliases.magnite.enabled=true -adapters.rubicon.aliases.magnite.endpoint=http://localhost:8090/magnite-exchange?tk_xint=rp-pbs +adapters.rubicon.aliases.magnite.endpoint=http://localhost:8090/magnite-exchange adapters.rubicon.XAPI.Username=rubicon_user adapters.rubicon.XAPI.Password=rubicon_password adapters.rubicon.usersync.redirect.url=http://localhost:8090/rubicon-usersync?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}} @@ -494,51 +497,51 @@ adapters.salunamedia.endpoint=http://localhost:8090/salunamedia-exchange adapters.screencore.enabled=true adapters.screencore.endpoint=http://localhost:8090/screencore-exchange adapters.seedingAlliance.enabled=true -adapters.seedingAlliance.endpoint=http://localhost:8090/seedingAlliance-exchange?ssp={{AccountId}} +adapters.seedingAlliance.endpoint=http://localhost:8090/seedingAlliance-exchange adapters.seedingAlliance.aliases.suntContent.enabled=true -adapters.seedingAlliance.aliases.suntContent.endpoint=http://localhost:8090/suntContent-exchange?ssp={{AccountId}} +adapters.seedingAlliance.aliases.suntContent.endpoint=http://localhost:8090/suntContent-exchange adapters.seedingAlliance.aliases.finative.enabled=true -adapters.seedingAlliance.aliases.finative.endpoint=http://localhost:8090/finative-exchange?ssp={{AccountId}} +adapters.seedingAlliance.aliases.finative.endpoint=http://localhost:8090/finative-exchange adapters.seedtag.enabled=true adapters.seedtag.endpoint=http://localhost:8090/seedtag-exchange adapters.smaato.enabled=true adapters.smaato.endpoint=http://localhost:8090/smaato-exchange adapters.smartadserver.enabled=true adapters.smartadserver.endpoint=http://localhost:8090/smartadserver-exchange -adapters.smartadserver.secondary-endpoint=http://localhost:8090/smartadserver-secondary-exchange +adapters.smartadserver.pg-endpoint=http://localhost:8090/smartadserver-pg-exchange adapters.smartadserver.aliases.equativ.enabled=true adapters.smartrtb.enabled=true adapters.smartrtb.endpoint=http://localhost:8090/smartrtb-exchange/ adapters.smartx.enabled=true adapters.smartx.endpoint=http://localhost:8090/smartx-exchange adapters.smarthub.enabled=true -adapters.smarthub.endpoint=http://localhost:8090/smarthub-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.endpoint=http://localhost:8090/smarthub-exchange adapters.smarthub.aliases.markapp.enabled=true -adapters.smarthub.aliases.markapp.endpoint=http://localhost:8090/markapp-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.markapp.endpoint=http://localhost:8090/markapp-exchange adapters.smarthub.aliases.jdpmedia.enabled=true -adapters.smarthub.aliases.jdpmedia.endpoint=http://localhost:8090/jdpmedia-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.jdpmedia.endpoint=http://localhost:8090/jdpmedia-exchange adapters.smarthub.aliases.tredio.enabled=true -adapters.smarthub.aliases.tredio.endpoint=http://localhost:8090/tredio-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.tredio.endpoint=http://localhost:8090/tredio-exchange adapters.smarthub.aliases.felixads.enabled=true -adapters.smarthub.aliases.felixads.endpoint=http://localhost:8090/felixads-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.felixads.endpoint=http://localhost:8090/felixads-exchange adapters.smarthub.aliases.jambojar.enabled=true -adapters.smarthub.aliases.jambojar.endpoint=http://localhost:8090/jambojar-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.jambojar.endpoint=http://localhost:8090/jambojar-exchange adapters.smarthub.aliases.adinify.enabled=true -adapters.smarthub.aliases.adinify.endpoint=http://localhost:8090/adinify-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.adinify.endpoint=http://localhost:8090/adinify-exchange adapters.smarthub.aliases.addigi.enabled=true adapters.smarthub.aliases.addigi.endpoint=http://localhost:8090/addigi-exchange adapters.smarthub.aliases.artechnology.enabled=true -adapters.smarthub.aliases.artechnology.endpoint=http://localhost:8090/artechnology-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.artechnology.endpoint=http://localhost:8090/artechnology-exchange adapters.smarthub.aliases.radianfusion.enabled=true -adapters.smarthub.aliases.radianfusion.endpoint=http://localhost:8090/radianfusion-exchange?host={{Host}}&accountId={{AccountID}}&sourceId={{SourceId}} +adapters.smarthub.aliases.radianfusion.endpoint=http://localhost:8090/radianfusion-exchange adapters.smartyads.enabled=true adapters.smartyads.endpoint=http://localhost:8090/smartyads-exchange adapters.smilewanted.enabled=true -adapters.smilewanted.endpoint=http://localhost:8090/smilewanted-exchange/java/{{ZoneId}} +adapters.smilewanted.endpoint=http://localhost:8090/smilewanted-exchange adapters.smoot.enabled=true adapters.smoot.endpoint=http://localhost:8090/smoot-exchange adapters.smrtconnect.enabled=true -adapters.smrtconnect.endpoint=http://localhost:8090/smrtconnect-exchange?supply_id={{SupplyId}} +adapters.smrtconnect.endpoint=http://localhost:8090/smrtconnect-exchange adapters.sonobi.enabled=true adapters.sonobi.endpoint=http://localhost:8090/sonobi-exchange adapters.sovrn.enabled=true @@ -594,9 +597,9 @@ adapters.teqblaze.aliases.progx.endpoint=http://localhost:8090/progx-exchange/ adapters.theadx.enabled=true adapters.theadx.endpoint=http://localhost:8090/theadx-exchange adapters.tradplus.enabled=true -adapters.tradplus.endpoint=http://{{ZoneID}}localhost:8090/{{AccountID}}/tradplus-exchange +adapters.tradplus.endpoint=http://localhost:8090/tradplus-exchange adapters.thetradedesk.enabled=true -adapters.thetradedesk.endpoint=http://localhost:8090/thetradedesk-exchange/{{SupplyId}} +adapters.thetradedesk.endpoint=http://localhost:8090/thetradedesk-exchange adapters.triplelift.enabled=true adapters.triplelift.endpoint=http://localhost:8090/triplelift-exchange adapters.tripleliftnative.enabled=true @@ -622,7 +625,7 @@ adapters.undertone.endpoint=http://localhost:8090/undertone-exchange adapters.unicorn.enabled=true adapters.unicorn.endpoint=http://localhost:8090/unicorn-exchange adapters.between.enabled=true -adapters.between.endpoint=http://localhost:8090/between-exchange?pubId={{PublisherId}} +adapters.between.endpoint=http://localhost:8090/between-exchange adapters.bidmachine.enabled=true adapters.bidmachine.endpoint=http://localhost:8090/bidmachine-exchange adapters.bidmatic.enabled=true @@ -652,7 +655,7 @@ adapters.vidazoo.aliases.tagoras.endpoint=http://localhost:8090/tagoras-exchange adapters.videobyte.enabled=true adapters.videobyte.endpoint=http://localhost:8090/videobyte-exchange adapters.videoheroes.enabled=true -adapters.videoheroes.endpoint=http://localhost:8090/videoheroes-exchange?partner={{PublisherID}} +adapters.videoheroes.endpoint=http://localhost:8090/videoheroes-exchange adapters.vidoomy.enabled=true adapters.vidoomy.endpoint=http://localhost:8090/vidoomy-exchange adapters.visx.enabled=true @@ -680,7 +683,7 @@ adapters.yieldone.endpoint=http://localhost:8090/yieldone-exchange adapters.zentotem.enabled=true adapters.zentotem.endpoint=http://localhost:8090/zentotem-exchange adapters.zeroclickfraud.enabled=true -adapters.zeroclickfraud.endpoint=http://{{Host}}/zeroclickfraud-exchange?sid={{SourceId}} +adapters.zeroclickfraud.endpoint=http://localhost:8090/zeroclickfraud-exchange adapters.aax.enabled=true adapters.aax.endpoint=http://localhost:8090/aax-exchange adapters.zmaticoo.enabled=true From 0227b042fa9e9a9fcee63a658c134cfe3a6a531d Mon Sep 17 00:00:00 2001 From: Danylo Date: Tue, 14 Apr 2026 22:43:15 +0200 Subject: [PATCH 3/6] Refactor --- .../LiveIntentAnalyticsReporter.java | 20 +++--- .../adgeneration/AdgenerationBidder.java | 51 +++++++------- .../bidder/adkernel/AdkernelBidder.java | 8 +-- .../bidder/adnuntius/AdnuntiusBidder.java | 28 ++++---- .../prebid/server/bidder/amx/AmxBidder.java | 4 +- .../bidder/appnexus/AppnexusBidder.java | 8 +-- .../server/bidder/bluesea/BlueSeaBidder.java | 14 ++-- .../bidder/connatix/ConnatixBidder.java | 8 +-- .../bidder/datablocks/DatablocksBidder.java | 8 +-- .../bidder/dxkulture/DxKultureBidder.java | 14 ++-- .../bidder/elementaltv/ElementalTVBidder.java | 8 +-- .../bidder/eplanning/EplanningBidder.java | 40 +++++------ .../server/bidder/nexx360/Nexx360Bidder.java | 14 ++-- .../server/bidder/rubicon/RubiconBidder.java | 12 ++-- .../smartadserver/SmartadserverBidder.java | 8 +-- .../bidder/smarthub/SmarthubBidder.java | 8 +-- .../server/bidder/sparteo/SparteoBidder.java | 18 ++--- .../server/bidder/sspbc/SspbcBidder.java | 4 +- .../server/bidder/taboola/TaboolaBidder.java | 8 +-- .../server/bidder/tappx/TappxBidder.java | 22 +++--- .../bidder/videobyte/VideobyteBidder.java | 18 ++--- .../server/bidder/yandex/YandexBidder.java | 18 ++--- .../bidder/yieldlab/YieldlabBidder.java | 70 +++++++++---------- .../zeroclickfraud/ZeroclickfraudBidder.java | 8 +-- .../prebid/server/cache/CoreCacheService.java | 14 ++-- .../gdpr/vendorlist/VendorListService.java | 8 +-- .../settings/HttpApplicationSettings.java | 50 ++++++------- .../util/{UriTemplate.java => Uri.java} | 60 ++++++++++------ src/main/resources/bidder-config/yandex.yaml | 2 +- 29 files changed, 285 insertions(+), 268 deletions(-) rename src/main/java/org/prebid/server/util/{UriTemplate.java => Uri.java} (56%) diff --git a/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java b/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java index 26baa60f2db..aee542e7e89 100644 --- a/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java +++ b/src/main/java/org/prebid/server/analytics/reporter/liveintent/LiveIntentAnalyticsReporter.java @@ -26,7 +26,7 @@ import org.prebid.server.log.LoggerFactory; import org.prebid.server.proto.openrtb.ext.request.ExtRequest; import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import org.prebid.server.vertx.httpclient.HttpClient; import java.util.Collection; @@ -42,7 +42,7 @@ public class LiveIntentAnalyticsReporter implements AnalyticsReporter { private final HttpClient httpClient; private final LiveIntentAnalyticsProperties properties; - private final UriTemplate analyticsEndpointTemplate; + private final Uri analyticsEndpoint; private final JacksonMapper jacksonMapper; public LiveIntentAnalyticsReporter( @@ -52,7 +52,7 @@ public LiveIntentAnalyticsReporter( this.httpClient = Objects.requireNonNull(httpClient); this.properties = Objects.requireNonNull(properties); - this.analyticsEndpointTemplate = UriTemplate.of(properties.getAnalyticsEndpoint()); + this.analyticsEndpoint = Uri.of(properties.getAnalyticsEndpoint()); this.jacksonMapper = Objects.requireNonNull(jacksonMapper); } @@ -97,9 +97,7 @@ private Future processAuctionEvent(AuctionContext auctionContext) { try { return httpClient.post( - analyticsEndpointTemplate.toBuilder() - .pathParam("path", "/analytic-events/pbsj-bids") - .build(), + analyticsEndpoint.replaceMacro("path", "/analytic-events/pbsj-bids").expand(), jacksonMapper.encodeToString(pbsjBids), properties.getTimeoutMs()) .mapEmpty(); @@ -169,11 +167,11 @@ private Optional buildPbsjBid( } private Future processNotificationEvent(NotificationEvent notificationEvent) { - final String url = analyticsEndpointTemplate.toBuilder() - .pathParam("path", "/analytic-events/pbsj-winning-bid") - .queryParam("b", notificationEvent.getBidder()) - .queryParam("bidId", notificationEvent.getBidId()) - .build(); + final String url = analyticsEndpoint + .replaceMacro("path", "/analytic-events/pbsj-winning-bid") + .addQueryParam("b", notificationEvent.getBidder()) + .addQueryParam("bidId", notificationEvent.getBidId()) + .expand(); return httpClient.get(url, properties.getTimeoutMs()).mapEmpty(); } diff --git a/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java b/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java index 13659f0e533..01855b012f1 100644 --- a/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java +++ b/src/main/java/org/prebid/server/bidder/adgeneration/AdgenerationBidder.java @@ -30,7 +30,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.List; @@ -50,11 +50,11 @@ public class AdgenerationBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public AdgenerationBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -95,40 +95,41 @@ private ExtImpAdgeneration parseAndValidateImpExt(Imp imp) { } private String getUri(String adSize, String id, String currency, BidRequest bidRequest) { - final UriTemplate.UriBuilder uriBuilder = endpointTemplate.toBuilder() - .queryParam("posall", "SSPLOC") - .queryParam("id", id) - .queryParam("hb", "true") - .queryParam("t", "json3") - .queryParam("currency", currency) - .queryParam("sdkname", "prebidserver") - .queryParam("adapterver", VERSION); - - addParameterIfNotEmpty(uriBuilder, "sizes", adSize); - addParameterIfNotEmpty(uriBuilder, "tp", ObjectUtil.getIfNotNull(bidRequest.getSite(), Site::getPage)); - addParameterIfNotEmpty(uriBuilder, "appbundle", ObjectUtil.getIfNotNull(bidRequest.getApp(), App::getBundle)); - addParameterIfNotEmpty(uriBuilder, "appname", ObjectUtil.getIfNotNull(bidRequest.getApp(), App::getName)); + final Uri.ParameterizedUri parameterizedUri = endpoint + .addQueryParam("posall", "SSPLOC") + .addQueryParam("id", id) + .addQueryParam("hb", "true") + .addQueryParam("t", "json3") + .addQueryParam("currency", currency) + .addQueryParam("sdkname", "prebidserver") + .addQueryParam("adapterver", VERSION); + + addParameterIfNotEmpty(parameterizedUri, "sizes", adSize); + addParameterIfNotEmpty(parameterizedUri, "tp", ObjectUtil.getIfNotNull(bidRequest.getSite(), Site::getPage)); addParameterIfNotEmpty( - uriBuilder, "transactionid", ObjectUtil.getIfNotNull(bidRequest.getSource(), Source::getTid)); + parameterizedUri, "appbundle", ObjectUtil.getIfNotNull(bidRequest.getApp(), App::getBundle)); + addParameterIfNotEmpty(parameterizedUri, "appname", ObjectUtil.getIfNotNull(bidRequest.getApp(), App::getName)); + addParameterIfNotEmpty( + parameterizedUri, "transactionid", ObjectUtil.getIfNotNull(bidRequest.getSource(), Source::getTid)); final Device device = bidRequest.getDevice(); final String deviceOs = device != null ? device.getOs() : null; if ("android".equals(deviceOs)) { - uriBuilder.queryParam("sdktype", "1"); - addParameterIfNotEmpty(uriBuilder, "advertising_id", device.getIfa()); + parameterizedUri.addQueryParam("sdktype", "1"); + addParameterIfNotEmpty(parameterizedUri, "advertising_id", device.getIfa()); } else if ("ios".equals(deviceOs)) { - uriBuilder.queryParam("sdktype", "2"); - addParameterIfNotEmpty(uriBuilder, "idfa", device.getIfa()); + parameterizedUri.addQueryParam("sdktype", "2"); + addParameterIfNotEmpty(parameterizedUri, "idfa", device.getIfa()); } else { - uriBuilder.queryParam("sdktype", "0"); + parameterizedUri.addQueryParam("sdktype", "0"); } - return uriBuilder.build(); + return parameterizedUri.expand(); } - private static void addParameterIfNotEmpty(UriTemplate.UriBuilder uriBuilder, String parameter, String value) { + private static void addParameterIfNotEmpty(Uri.ParameterizedUri parameterizedUri, String parameter, String value) { if (StringUtils.isNotEmpty(value)) { - uriBuilder.queryParam(parameter, value); + parameterizedUri.addQueryParam(parameter, value); } } diff --git a/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java b/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java index c50b89b3417..a75d22eeec3 100644 --- a/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java +++ b/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java @@ -49,11 +49,11 @@ public class AdkernelBidder implements Bidder { private static final int MF_SUFFIX_LENGTH = MF_SUFFIX.length() + 1; - private final String endpointTemplate; + private final String endpoint; private final JacksonMapper mapper; - public AdkernelBidder(String endpointTemplate, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public AdkernelBidder(String endpoint, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -183,7 +183,7 @@ private HttpRequest createHttpRequest(Map.Entry { private static final int BANNER_MTYPE = 1; private static final int NATIVE_MTYPE = 4; - private final UriTemplate endpointTemplate; - private final UriTemplate euEndpointTemplate; + private final Uri endpoint; + private final Uri euEndpoint; private final Clock clock; private final JacksonMapper mapper; @@ -92,8 +92,8 @@ public AdnuntiusBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); - this.euEndpointTemplate = euEndpoint != null ? UriTemplate.of(euEndpoint) : null; + this.endpoint = Uri.of(endpointUrl); + this.euEndpoint = euEndpoint != null ? Uri.of(euEndpoint) : null; this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -261,21 +261,21 @@ private List> createHttpRequests( private String makeEndpoint(BidRequest bidRequest, Boolean noCookies) { final String gdpr = extractGdpr(bidRequest.getRegs()); - final UriTemplate template = StringUtils.isNotBlank(gdpr) ? euEndpointTemplate : endpointTemplate; + final Uri url = StringUtils.isNotBlank(gdpr) ? euEndpoint : endpoint; - if (template == null) { + if (url == null) { throw new PreBidException("an EU endpoint is required but invalid"); } final String consent = extractConsent(bidRequest.getUser()); - return template.toBuilder() - .queryParam("format", "prebidServer") - .queryParam("tzo", getTimeZoneOffset()) - .queryParam("gdpr", StringUtils.isNotEmpty(gdpr) ? gdpr : null) - .queryParam("consentString", StringUtils.isNotEmpty(consent) ? consent : null) - .queryParam("noCookies", noCookies || extractNoCookies(bidRequest.getDevice()) ? "true" : null) - .build(); + return url + .addQueryParam("format", "prebidServer") + .addQueryParam("tzo", getTimeZoneOffset()) + .addQueryParam("gdpr", StringUtils.isNotEmpty(gdpr) ? gdpr : null) + .addQueryParam("consentString", StringUtils.isNotEmpty(consent) ? consent : null) + .addQueryParam("noCookies", noCookies || extractNoCookies(bidRequest.getDevice()) ? "true" : null) + .expand(); } private String getTimeZoneOffset() { diff --git a/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java b/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java index 7346a1f3e4e..fc7d1bbeb61 100644 --- a/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java +++ b/src/main/java/org/prebid/server/bidder/amx/AmxBidder.java @@ -29,7 +29,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidMeta; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -55,7 +55,7 @@ public AmxBidder(String endpointUrl, JacksonMapper mapper) { } private static String resolveEndpointUrl(String url) { - return UriTemplate.of(url).toBuilder().queryParam(VERSION_PARAM, ADAPTER_VERSION).build(); + return Uri.of(url).addQueryParam(VERSION_PARAM, ADAPTER_VERSION).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java b/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java index 46a817dcb06..71c9cdc4cf4 100644 --- a/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java +++ b/src/main/java/org/prebid/server/bidder/appnexus/AppnexusBidder.java @@ -51,7 +51,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.ObjectUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import jakarta.validation.ValidationException; import java.math.BigDecimal; @@ -81,7 +81,7 @@ public class AppnexusBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final Integer headerBiddingSource; private final Map iabCategories; private final JacksonMapper mapper; @@ -91,7 +91,7 @@ public AppnexusBidder(String endpointUrl, Map iabCategories, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.headerBiddingSource = ObjectUtils.defaultIfNull(platformId, DEFAULT_PLATFORM_ID); this.iabCategories = ObjectUtils.defaultIfNull(iabCategories, Collections.emptyMap()); this.mapper = Objects.requireNonNull(mapper); @@ -305,7 +305,7 @@ private String readKeywordsFromArray(JsonNode keywords) { } private String makeUrl(String member) { - return endpointTemplate.toBuilder().queryParam("member_id", member).build(); + return endpoint.addQueryParam("member_id", member).expand(); } private static String extractEndpointName(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java b/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java index 985bb1a1006..731ceae3897 100644 --- a/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java +++ b/src/main/java/org/prebid/server/bidder/bluesea/BlueSeaBidder.java @@ -22,7 +22,7 @@ import org.prebid.server.proto.openrtb.ext.request.bluesea.ExtImpBlueSea; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -37,11 +37,11 @@ public class BlueSeaBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public BlueSeaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -76,10 +76,10 @@ private HttpRequest makeRequest(BidRequest bidRequest, ExtImpBlueSea } private String resolveUrl(ExtImpBlueSea extImpBlueSea) { - return endpointTemplate.toBuilder() - .queryParam("pubid", extImpBlueSea.getPubId()) - .queryParam("token", extImpBlueSea.getToken()) - .build(); + return endpoint + .addQueryParam("pubid", extImpBlueSea.getPubId()) + .addQueryParam("token", extImpBlueSea.getToken()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java b/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java index cd78ef78e5a..2259091da12 100644 --- a/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java +++ b/src/main/java/org/prebid/server/bidder/connatix/ConnatixBidder.java @@ -34,7 +34,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -53,7 +53,7 @@ public class ConnatixBidder implements Bidder { private static final String BIDDER_CURRENCY = "USD"; private static final String FORMATTING = "%s-%s"; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; private final CurrencyConversionService currencyConversionService; @@ -62,7 +62,7 @@ public ConnatixBidder(String endpointUrl, CurrencyConversionService currencyConversionService, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.mapper = Objects.requireNonNull(mapper); } @@ -107,7 +107,7 @@ private String getOptimalEndpointUrl(BidRequest request) { final String dataCenterCode = getUserId(request) .map(ConnatixBidder::getDataCenterCode) .orElse(null); - return endpointTemplate.toBuilder().queryParam("dc", dataCenterCode).build(); + return endpoint.addQueryParam("dc", dataCenterCode).expand(); } private static Optional getUserId(BidRequest request) { diff --git a/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java b/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java index 1e3daa4d82d..c88baab7e9f 100644 --- a/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java +++ b/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java @@ -36,11 +36,11 @@ public class DatablocksBidder implements Bidder { new TypeReference<>() { }; - private final String endpointTemplate; + private final String endpoint; private final JacksonMapper mapper; - public DatablocksBidder(String endpointTemplate, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public DatablocksBidder(String endpoint, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -83,7 +83,7 @@ private HttpRequest makeHttpRequest(Map.Entry { }; private static final String X_OPENRTB_VERSION = "2.5"; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public DxKultureBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -77,10 +77,10 @@ private ExtImpDxKulture parseImpExt(Imp imp) { } private String getUri(ExtImpDxKulture extImpDxKulture) { - return endpointTemplate.toBuilder() - .queryParam("publisher_id", extImpDxKulture.getPublisherId()) - .queryParam("placement_id", extImpDxKulture.getPlacementId()) - .build(); + return endpoint + .addQueryParam("publisher_id", extImpDxKulture.getPublisherId()) + .addQueryParam("placement_id", extImpDxKulture.getPlacementId()) + .expand(); } private static MultiMap resolveHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java b/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java index 17cd2950b7a..b67fbfe053a 100644 --- a/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java +++ b/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java @@ -42,11 +42,11 @@ public class ElementalTVBidder implements Bidder { new TypeReference<>() { }; - private final String endpointTemplate; + private final String endpoint; private final JacksonMapper mapper; - public ElementalTVBidder(String endpointTemplate, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public ElementalTVBidder(String endpoint, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -85,7 +85,7 @@ private ExtImpElementalTV parseAndValidateImpExt(Imp imp) { private String resolveUrl(ExtImpElementalTV extImp) { try { - return endpointTemplate + return endpoint .replace("{{AdUnit}}", HttpUtil.encodeUrl(extImp.getAdunit())); } catch (Exception e) { throw new PreBidException(e.getMessage()); diff --git a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java index 634032e9886..b09e7cf0e0b 100644 --- a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java +++ b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java @@ -36,7 +36,7 @@ import org.prebid.server.proto.openrtb.ext.request.eplanning.ExtImpEplanning; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.net.MalformedURLException; @@ -79,11 +79,11 @@ public class EplanningBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public EplanningBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -237,28 +237,28 @@ private String resolveRequestUri(BidRequest request, List requestsString final String schain = getSchainParameter(request.getSource()); - return endpointTemplate.toBuilder() - .pathParam("ClientId", clientId) - .pathParam("DfpClientId", DFP_CLIENT_ID) - .pathParam("RequestTarget", requestTarget) - .pathParam("Sec", SEC) + return endpoint + .replaceMacro("ClientId", clientId) + .replaceMacro("DfpClientId", DFP_CLIENT_ID) + .replaceMacro("RequestTarget", requestTarget) + .replaceMacro("Sec", SEC) - .queryParam("r", "pbs") - .queryParam("ncb", "1") - .queryParam("e", String.join("+", requestsStrings)) + .addQueryParam("r", "pbs") + .addQueryParam("ncb", "1") + .addQueryParam("e", String.join("+", requestsStrings)) - .queryParam("ur", app == null ? pageUrl : null) + .addQueryParam("ur", app == null ? pageUrl : null) - .queryParam("uid", buyeruid) - .queryParam("appn", StringUtils.isNotBlank(appName) ? appName : null) - .queryParam("appid", StringUtils.isNotBlank(appId) ? appId : null) - .queryParam("app", app != null ? REQUEST_TARGET_INVENTORY : null) + .addQueryParam("uid", buyeruid) + .addQueryParam("appn", StringUtils.isNotBlank(appName) ? appName : null) + .addQueryParam("appid", StringUtils.isNotBlank(appId) ? appId : null) + .addQueryParam("app", app != null ? REQUEST_TARGET_INVENTORY : null) - .queryParam("ip", StringUtils.isNotBlank(ip) ? ip : null) - .queryParam("ifa", StringUtils.isNotBlank(ifa) ? ifa : null) + .addQueryParam("ip", StringUtils.isNotBlank(ip) ? ip : null) + .addQueryParam("ifa", StringUtils.isNotBlank(ifa) ? ifa : null) - .queryParam("sch", schain) - .build(); + .addQueryParam("sch", schain) + .expand(); } private static String getPageDomain(Site site) { diff --git a/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java b/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java index a724ce19635..9741c87c2e3 100644 --- a/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java +++ b/src/main/java/org/prebid/server/bidder/nexx360/Nexx360Bidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.nexx360.ExtImpNexx360; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import org.prebid.server.version.PrebidVersionProvider; import java.util.ArrayList; @@ -39,12 +39,12 @@ public class Nexx360Bidder implements Bidder { }; private static final String BIDDER_NAME = "nexx360"; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; private final PrebidVersionProvider prebidVersionProvider; public Nexx360Bidder(String endpointUrl, JacksonMapper mapper, PrebidVersionProvider prebidVersionProvider) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); this.prebidVersionProvider = Objects.requireNonNull(prebidVersionProvider); } @@ -98,10 +98,10 @@ private BidRequest makeRequest(BidRequest request, List imps) { } private String makeUrl(String tagId, String placement) { - return endpointTemplate.toBuilder() - .queryParam("placement", StringUtils.isNotBlank(placement) ? placement : null) - .queryParam("tag_id", StringUtils.isNotBlank(tagId) ? tagId : null) - .build(); + return endpoint + .addQueryParam("placement", StringUtils.isNotBlank(placement) ? placement : null) + .addQueryParam("tag_id", StringUtils.isNotBlank(tagId) ? tagId : null) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index 4e0f065053c..c37efbf68d7 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -105,7 +105,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import org.prebid.server.version.PrebidVersionProvider; import java.math.BigDecimal; @@ -177,7 +177,7 @@ public class RubiconBidder implements Bidder { private static final boolean DEFAULT_MULTIFORMAT_VALUE = false; private final String bidderName; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final String externalUrl; private final String xapiUsername; private final Set supportedVendors; @@ -206,7 +206,7 @@ public RubiconBidder(String bidderName, JacksonMapper mapper) { this.bidderName = Objects.requireNonNull(bidderName); - this.endpointTemplate = UriTemplate.of(endpoint); + this.endpoint = Uri.of(endpoint); this.externalUrl = HttpUtil.validateUrl(Objects.requireNonNull(externalUrl)); this.xapiUsername = Objects.requireNonNull(xapiUsername); this.supportedVendors = Set.copyOf(Objects.requireNonNull(supportedVendors)); @@ -448,9 +448,9 @@ private BidRequest createSingleRequest(BidRequest bidRequest, private String makeUri(BidRequest bidRequest) { final String tkXint = tkXintValue(bidRequest); - return endpointTemplate.toBuilder() - .queryParam(TK_XINT_QUERY_PARAMETER, StringUtils.isNotBlank(tkXint) ? tkXint : null) - .build(); + return endpoint + .addQueryParam(TK_XINT_QUERY_PARAMETER, StringUtils.isNotBlank(tkXint) ? tkXint : null) + .expand(); } private String tkXintValue(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java b/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java index 775a8d786ca..2a27ba28079 100644 --- a/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java +++ b/src/main/java/org/prebid/server/bidder/smartadserver/SmartadserverBidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,12 +38,12 @@ public class SmartadserverBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final String pgEndpoint; private final JacksonMapper mapper; public SmartadserverBidder(String endpointUrl, String pgEndpoint, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.pgEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(pgEndpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -119,7 +119,7 @@ private static Publisher modifyPublisher(Publisher publisher, Integer networkId) private String makeUrl(boolean isProgrammaticGuaranteed) { return isProgrammaticGuaranteed ? pgEndpoint - : endpointTemplate.toBuilder().queryParam("callerId", "5").build(); + : endpoint.addQueryParam("callerId", "5").expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java b/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java index 73df9290df2..0004ae00ab3 100644 --- a/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java +++ b/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java @@ -36,11 +36,11 @@ public class SmarthubBidder implements Bidder { new TypeReference<>() { }; - private final String endpointTemplate; + private final String endpoint; private final JacksonMapper mapper; - public SmarthubBidder(String endpointTemplate, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public SmarthubBidder(String endpoint, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -68,7 +68,7 @@ private MultiMap resolveHeaders() { } private String buildEndpointUrl(ExtImpSmarthub extImpSmarthub) { - return endpointTemplate.replace("{{Host}}", StringUtils.defaultString(extImpSmarthub.getPartnerName())) + return endpoint.replace("{{Host}}", StringUtils.defaultString(extImpSmarthub.getPartnerName())) .replace("{{AccountID}}", extImpSmarthub.getSeat()) .replace("{{SourceId}}", extImpSmarthub.getToken()); } diff --git a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java index 48a724196c6..38f989a81a5 100644 --- a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java +++ b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java @@ -30,7 +30,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -47,11 +47,11 @@ public class SparteoBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public SparteoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -221,12 +221,12 @@ private String resolveBundle(App app) { } private String resolveEndpoint(String siteDomain, String appDomain, String networkId, String bundle) { - return endpointTemplate.toBuilder() - .queryParam("site_domain", StringUtils.isNotBlank(siteDomain) ? siteDomain : null) - .queryParam("app_domain", StringUtils.isNotBlank(appDomain) ? appDomain : null) - .queryParam("network_id", StringUtils.isNotBlank(networkId) ? networkId : null) - .queryParam("bundle", StringUtils.isNotBlank(bundle) ? bundle : null) - .build(); + return endpoint + .addQueryParam("site_domain", StringUtils.isNotBlank(siteDomain) ? siteDomain : null) + .addQueryParam("app_domain", StringUtils.isNotBlank(appDomain) ? appDomain : null) + .addQueryParam("network_id", StringUtils.isNotBlank(networkId) ? networkId : null) + .addQueryParam("bundle", StringUtils.isNotBlank(bundle) ? bundle : null) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java b/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java index 5caaa57164d..615ba3dbc7c 100644 --- a/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java +++ b/src/main/java/org/prebid/server/bidder/sspbc/SspbcBidder.java @@ -18,7 +18,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -38,7 +38,7 @@ public SspbcBidder(String endpointUrl, JacksonMapper mapper) { } private static String resolveEndpointUrl(String base) { - return UriTemplate.of(base).toBuilder().queryParam("bdver", ADAPTER_VERSION).build(); + return Uri.of(base).addQueryParam("bdver", ADAPTER_VERSION).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java b/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java index cbd180f2e6f..02e66f61b59 100644 --- a/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java +++ b/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java @@ -51,12 +51,12 @@ public class TaboolaBidder implements Bidder { new TypeReference<>() { }; - private final String endpointTemplate; + private final String endpoint; private final String gvlId; private final JacksonMapper mapper; - public TaboolaBidder(String endpointTemplate, Integer gvlId, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public TaboolaBidder(String endpoint, Integer gvlId, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.gvlId = gvlId != null ? String.valueOf(gvlId) : ""; this.mapper = Objects.requireNonNull(mapper); } @@ -219,7 +219,7 @@ private String buildEndpointUrl(BidRequest bidRequest, MediaType mediaType) { .or(() -> Optional.ofNullable(bidRequest.getApp()).map(App::getId)) .orElse(StringUtils.EMPTY); - return endpointTemplate + return endpoint .replace("{{GvlID}}", gvlId) .replace("{{MediaType}}", type) .replace("{{PublisherID}}", HttpUtil.encodeUrl(publisherId)); diff --git a/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java b/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java index d3447388ae6..513a2be0008 100644 --- a/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java +++ b/src/main/java/org/prebid/server/bidder/tappx/TappxBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.tappx.ExtImpTappx; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.time.Clock; @@ -42,12 +42,12 @@ public class TappxBidder implements Bidder { }; private static final Pattern NEW_ENDPOINT_PATTERN = Pattern.compile("^(zz|vz)[0-9]{3,}([a-z]{2,3}|test)$"); - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final Clock clock; private final JacksonMapper mapper; public TappxBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -89,14 +89,14 @@ private String resolveUrl(ExtImpTappx extImpTappx, Integer test) { final boolean isNewEndpoint = NEW_ENDPOINT_PATTERN.matcher(subdomainPart).matches(); final String subdomain = isNewEndpoint ? subdomainPart + ".pub" : "ssp.api"; - return endpointTemplate.toBuilder() - .domainParam("subdomain", subdomain) - .pathParam("path", isNewEndpoint ? "/rtb" : "/rtb/v2/" + subdomainPart) - .queryParam("tappxkey", extImpTappx.getTappxkey()) - .queryParam("v", VERSION) - .queryParam("type_cnn", TYPE_CNN) - .queryParam("ts", !BidderUtil.isNullOrZero(test) ? String.valueOf(clock.millis()) : null) - .build(); + return endpoint + .replaceMacro("subdomain", subdomain) + .replaceMacro("path", isNewEndpoint ? "/rtb" : "/rtb/v2/" + subdomainPart) + .addQueryParam("tappxkey", extImpTappx.getTappxkey()) + .addQueryParam("v", VERSION) + .addQueryParam("type_cnn", TYPE_CNN) + .addQueryParam("ts", !BidderUtil.isNullOrZero(test) ? String.valueOf(clock.millis()) : null) + .expand(); } private static Imp modifyImp(Imp imp, ExtImpTappx extImpTappx) { diff --git a/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java b/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java index b52ef73096e..2d960b9f091 100644 --- a/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java +++ b/src/main/java/org/prebid/server/bidder/videobyte/VideobyteBidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.videobyte.ExtImpVideobyte; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,11 +38,11 @@ public class VideobyteBidder implements Bidder { new TypeReference<>() { }; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public VideobyteBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -88,12 +88,12 @@ private String createUri(ExtImpVideobyte extImpVideobyte) { final String placementId = extImpVideobyte.getPlacementId(); final String networkId = extImpVideobyte.getNetworkId(); - return endpointTemplate.toBuilder() - .queryParam("source", "pbs") - .queryParam("pid", extImpVideobyte.getPublisherId()) - .queryParam("placementId", StringUtils.isNotEmpty(placementId) ? placementId : null) - .queryParam("nid", StringUtils.isNotEmpty(networkId) ? networkId : null) - .build(); + return endpoint + .addQueryParam("source", "pbs") + .addQueryParam("pid", extImpVideobyte.getPublisherId()) + .addQueryParam("placementId", StringUtils.isNotEmpty(placementId) ? placementId : null) + .addQueryParam("nid", StringUtils.isNotEmpty(networkId) ? networkId : null) + .expand(); } private static MultiMap headers(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java b/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java index 43f589b5027..f0ecdb9626a 100644 --- a/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java +++ b/src/main/java/org/prebid/server/bidder/yandex/YandexBidder.java @@ -28,7 +28,7 @@ import org.prebid.server.proto.openrtb.ext.request.yandex.ExtImpYandex; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -47,11 +47,11 @@ public class YandexBidder implements Bidder { private static final String DISPLAY_MANAGER = "prebid.java"; private static final String DISPLAY_MANAGER_VERSION = "1.1"; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final JacksonMapper mapper; public YandexBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -168,12 +168,12 @@ private static Video modifyVideo(Video video) { } private String modifyUrl(ExtImpYandex extImpYandex, String referer, String currency) { - return endpointTemplate.toBuilder() - .pathParam("PageId", extImpYandex.getPageId().toString()) - .queryParam("imp-id", extImpYandex.getImpId().toString()) - .queryParam("target-ref", StringUtils.isNotBlank(referer) ? referer : null) - .queryParam("ssp-cur", StringUtils.isNotBlank(currency) ? currency : null) - .build(); + return endpoint + .replaceMacro("PageId", extImpYandex.getPageId().toString()) + .replaceMacro("ImpId", extImpYandex.getImpId().toString()) + .addQueryParam("target-ref", StringUtils.isNotBlank(referer) ? referer : null) + .addQueryParam("ssp-cur", StringUtils.isNotBlank(currency) ? currency : null) + .expand(); } private HttpRequest buildHttpRequest(BidRequest outgoingRequest, String url) { diff --git a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java index d8f05a90b2d..f264db4e151 100644 --- a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java +++ b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java @@ -44,7 +44,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidDsa; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.time.Clock; @@ -87,12 +87,12 @@ public class YieldlabBidder implements Bidder { """; - private final UriTemplate endpointTemplate; + private final Uri endpoint; private final Clock clock; private final JacksonMapper mapper; public YieldlabBidder(String endpointUrl, Clock clock, JacksonMapper mapper) { - this.endpointTemplate = UriTemplate.of(endpointUrl); + this.endpoint = Uri.of(endpointUrl); this.clock = Objects.requireNonNull(clock); this.mapper = Objects.requireNonNull(mapper); } @@ -166,30 +166,30 @@ private String makeUrl(ExtImpYieldlab extImpYieldlab, BidRequest request, Map extImps) { @@ -218,13 +218,13 @@ private boolean isBanner(Imp imp) { } private String getTargetingValues(ExtImpYieldlab extImpYieldlab) { - final UriTemplate.UriBuilder uriBuilder = UriTemplate.of(StringUtils.EMPTY).toBuilder(); + final Uri.ParameterizedUri parameterizedUri = Uri.of(StringUtils.EMPTY).parameterized(); for (Map.Entry targeting : extImpYieldlab.getTargeting().entrySet()) { - uriBuilder.queryParam(targeting.getKey(), targeting.getValue()); + parameterizedUri.addQueryParam(targeting.getKey(), targeting.getValue()); } - return uriBuilder.build().replace("?", ""); + return parameterizedUri.expand().replace("?", ""); } private static String getGdprParameter(Regs regs) { @@ -497,29 +497,29 @@ private String makeVast(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBi } private String makeNurl(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBid yieldlabBid) { - final UriTemplate.UriBuilder uriBuilder = UriTemplate.of(StringUtils.EMPTY).toBuilder() - .queryParam("ts", resolveNumberParameter(clock.instant().getEpochSecond())) - .queryParam("id", extImp.getExtId()) - .queryParam("pvid", yieldlabBid.getPvid()); + final Uri.ParameterizedUri parameterizedUri = Uri.of(StringUtils.EMPTY) + .addQueryParam("ts", resolveNumberParameter(clock.instant().getEpochSecond())) + .addQueryParam("id", extImp.getExtId()) + .addQueryParam("pvid", yieldlabBid.getPvid()); final User user = bidRequest.getUser(); if (user != null && StringUtils.isNotBlank(user.getBuyeruid())) { - uriBuilder.queryParam("ids", "ylid:" + StringUtils.defaultString(user.getBuyeruid())); + parameterizedUri.addQueryParam("ids", "ylid:" + StringUtils.defaultString(user.getBuyeruid())); } final String gdpr = getGdprParameter(bidRequest.getRegs()); final String consent = getConsentParameter(bidRequest.getUser()); if (StringUtils.isNotBlank(gdpr) && StringUtils.isNotBlank(consent)) { - uriBuilder - .queryParam("gdpr", gdpr) - .queryParam("gdpr_consent", consent); + parameterizedUri + .addQueryParam("gdpr", gdpr) + .addQueryParam("gdpr_consent", consent); } return AD_SOURCE_URL.formatted( extImp.getAdslotId(), extImp.getSupplyId(), yieldlabBid.getAdSize(), - uriBuilder.build().replace("?", "")); + parameterizedUri.expand().replace("?", "")); } private ObjectNode resolveBidExt(YieldlabBid bid, List errors) { diff --git a/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java b/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java index c405c0981ae..77fd21ee2f6 100644 --- a/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java +++ b/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java @@ -40,11 +40,11 @@ public class ZeroclickfraudBidder implements Bidder { private static final String HOST = "{{Host}}"; private static final String SOURCE_ID = "{{SourceId}}"; - private final String endpointTemplate; + private final String endpoint; private final JacksonMapper mapper; - public ZeroclickfraudBidder(String endpointTemplate, JacksonMapper mapper) { - this.endpointTemplate = HttpUtil.validateUrl(Objects.requireNonNull(endpointTemplate)); + public ZeroclickfraudBidder(String endpoint, JacksonMapper mapper) { + this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); this.mapper = Objects.requireNonNull(mapper); } @@ -89,7 +89,7 @@ private ExtImpZeroclickfraud parseAndValidateImpExt(ObjectNode extNode) { private HttpRequest makeHttpRequest(ExtImpZeroclickfraud extImpZeroclickfraud, List imps, BidRequest bidRequest) { - final String uri = endpointTemplate + final String uri = endpoint .replace(HOST, extImpZeroclickfraud.getHost()) .replace(SOURCE_ID, extImpZeroclickfraud.getSourceId().toString()); diff --git a/src/main/java/org/prebid/server/cache/CoreCacheService.java b/src/main/java/org/prebid/server/cache/CoreCacheService.java index c70ecd0200f..c591e6090e7 100644 --- a/src/main/java/org/prebid/server/cache/CoreCacheService.java +++ b/src/main/java/org/prebid/server/cache/CoreCacheService.java @@ -42,7 +42,7 @@ import org.prebid.server.settings.model.AccountAuctionConfig; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import org.prebid.server.vast.VastModifier; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; @@ -75,7 +75,7 @@ public class CoreCacheService { private final HttpClient httpClient; private final URL externalEndpointUrl; private final URL internalEndpointUrl; - private final UriTemplate cachedObjectEndpointTemplate; + private final Uri cachedObjectEndpoint; private final String cachedAssetUrlTemplate; private final long expectedCacheTimeMs; private final VastModifier vastModifier; @@ -111,7 +111,7 @@ public CoreCacheService( this.httpClient = Objects.requireNonNull(httpClient); this.externalEndpointUrl = Objects.requireNonNull(externalEndpointUrl); this.internalEndpointUrl = internalEndpointUrl; - this.cachedObjectEndpointTemplate = UriTemplate.of( + this.cachedObjectEndpoint = Uri.of( ObjectUtils.firstNonNull(internalEndpointUrl, externalEndpointUrl).toString()); this.cachedAssetUrlTemplate = Objects.requireNonNull(cachedAssetUrlTemplate); this.expectedCacheTimeMs = expectedCacheTimeMs; @@ -659,10 +659,10 @@ public Future getCachedObject(String key, String ch, Timeout return Future.failedFuture(new TimeoutException("Timeout has been exceeded")); } - final String url = cachedObjectEndpointTemplate.toBuilder() - .queryParam(UUID_QUERY_PARAMETER, key) - .queryParam(CH_QUERY_PARAMETER, StringUtils.isNotBlank(ch) ? ch : null) - .build(); + final String url = cachedObjectEndpoint + .addQueryParam(UUID_QUERY_PARAMETER, key) + .addQueryParam(CH_QUERY_PARAMETER, StringUtils.isNotBlank(ch) ? ch : null) + .expand(); final long startTime = clock.millis(); return httpClient.get(url, cacheHeaders, remainingTimeout) diff --git a/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java b/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java index 51c9b3e9252..0826c777757 100644 --- a/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java +++ b/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java @@ -59,7 +59,7 @@ public class VendorListService { private final double logSamplingRate; private final String cacheDir; - private final String endpointTemplate; + private final String endpoint; private final int defaultTimeoutMs; private final long refreshMissingListPeriodMs; private final boolean deprecated; @@ -82,7 +82,7 @@ public class VendorListService { public VendorListService(double logSamplingRate, String cacheDir, - String endpointTemplate, + String endpoint, int defaultTimeoutMs, long refreshMissingListPeriodMs, boolean deprecated, @@ -97,7 +97,7 @@ public VendorListService(double logSamplingRate, this.logSamplingRate = logSamplingRate; this.cacheDir = Objects.requireNonNull(cacheDir); - this.endpointTemplate = Objects.requireNonNull(endpointTemplate); + this.endpoint = Objects.requireNonNull(endpoint); this.defaultTimeoutMs = defaultTimeoutMs; this.refreshMissingListPeriodMs = refreshMissingListPeriodMs; this.deprecated = deprecated; @@ -276,7 +276,7 @@ private boolean shouldFallback(int version) { * Proceeds obtaining new vendor list from HTTP resource. */ private void fetchNewVendorListFor(int version) { - final String url = endpointTemplate.replace(VERSION_PLACEHOLDER, String.valueOf(version)); + final String url = endpoint.replace(VERSION_PLACEHOLDER, String.valueOf(version)); httpClient.get(url, defaultTimeoutMs) .map(response -> processResponse(response, version)) diff --git a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java index f37e3b4755a..ed0170c07d4 100644 --- a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java @@ -23,7 +23,7 @@ import org.prebid.server.settings.proto.response.HttpAccountsResponse; import org.prebid.server.settings.proto.response.HttpFetcherResponse; import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.UriTemplate; +import org.prebid.server.util.Uri; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; @@ -78,9 +78,9 @@ public class HttpApplicationSettings implements ApplicationSettings { }; private final boolean isRfc3986Compatible; - private final UriTemplate endpointTemplate; - private final UriTemplate ampEndpointTemplate; - private final UriTemplate videoEndpointTemplate; + private final Uri endpoint; + private final Uri ampEndpoint; + private final Uri videoEndpoint; private final String categoryEndpoint; private final HttpClient httpClient; private final JacksonMapper mapper; @@ -94,9 +94,9 @@ public HttpApplicationSettings(boolean isRfc3986Compatible, JacksonMapper mapper) { this.isRfc3986Compatible = isRfc3986Compatible; - this.endpointTemplate = UriTemplate.of(endpoint); - this.ampEndpointTemplate = UriTemplate.of(ampEndpoint); - this.videoEndpointTemplate = UriTemplate.of(videoEndpoint); + this.endpoint = Uri.of(endpoint); + this.ampEndpoint = Uri.of(ampEndpoint); + this.videoEndpoint = Uri.of(videoEndpoint); this.categoryEndpoint = HttpUtil.validateUrl(Objects.requireNonNull(categoryEndpoint)); this.httpClient = Objects.requireNonNull(httpClient); this.mapper = Objects.requireNonNull(mapper); @@ -122,20 +122,20 @@ private Future> fetchAccountsByIds(Set accountIds, Timeout } return httpClient.get( - accountsRequestUrlFrom(endpointTemplate, accountIds), + accountsRequestUrlFrom(endpoint, accountIds), HttpUtil.headers(), remainingTimeout) .map(response -> processAccountsResponse(response, accountIds)); } - private String accountsRequestUrlFrom(UriTemplate endpointTemplate, Set accountIds) { - final UriTemplate.UriBuilder builder = endpointTemplate.toBuilder(); + private String accountsRequestUrlFrom(Uri endpoint, Set accountIds) { + final Uri.ParameterizedUri builder = endpoint.parameterized(); if (isRfc3986Compatible) { - builder.queryParam("account-id", accountIds); + builder.addQueryParam("account-id", accountIds); } else { - builder.queryParam("account-ids", "[\"%s\"]".formatted(joinIds(accountIds))); + builder.addQueryParam("account-ids", "[\"%s\"]".formatted(joinIds(accountIds))); } - return builder.build(); + return builder.expand(); } private Set processAccountsResponse(HttpClientResponse httpClientResponse, Set accountIds) { @@ -163,7 +163,7 @@ public Future> getStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(endpointTemplate, requestIds, impIds, timeout); + return fetchStoredData(endpoint, requestIds, impIds, timeout); } @Override @@ -172,7 +172,7 @@ public Future> getAmpStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(ampEndpointTemplate, requestIds, Collections.emptySet(), timeout); + return fetchStoredData(ampEndpoint, requestIds, Collections.emptySet(), timeout); } @Override @@ -181,10 +181,10 @@ public Future> getVideoStoredData(String accountId, Set impIds, Timeout timeout) { - return fetchStoredData(videoEndpointTemplate, requestIds, impIds, timeout); + return fetchStoredData(videoEndpoint, requestIds, impIds, timeout); } - private Future> fetchStoredData(UriTemplate endpointTemplate, + private Future> fetchStoredData(Uri endpoint, Set requestIds, Set impIds, Timeout timeout) { @@ -200,7 +200,7 @@ private Future> fetchStoredData(UriTemplate endpointTem } return httpClient.get( - storeRequestUrlFrom(endpointTemplate, requestIds, impIds), + storeRequestUrlFrom(endpoint, requestIds, impIds), HttpUtil.headers(), remainingTimeout) .map(response -> processStoredDataResponse(response, requestIds, impIds)) @@ -230,23 +230,23 @@ private static StoredDataResult toFailedStoredDataResult(Set req return StoredDataResult.of(Collections.emptyMap(), Collections.emptyMap(), Collections.singletonList(error)); } - private String storeRequestUrlFrom(UriTemplate endpointTemplate, Set requestIds, Set impIds) { - final UriTemplate.UriBuilder builder = endpointTemplate.toBuilder(); + private String storeRequestUrlFrom(Uri endpoint, Set requestIds, Set impIds) { + final Uri.ParameterizedUri builder = endpoint.parameterized(); if (!requestIds.isEmpty()) { if (isRfc3986Compatible) { - builder.queryParam("request-id", requestIds); + builder.addQueryParam("request-id", requestIds); } else { - builder.queryParam("request-ids", "[\"%s\"]".formatted(joinIds(requestIds))); + builder.addQueryParam("request-ids", "[\"%s\"]".formatted(joinIds(requestIds))); } } if (!impIds.isEmpty()) { if (isRfc3986Compatible) { - builder.queryParam("imp-id", impIds); + builder.addQueryParam("imp-id", impIds); } else { - builder.queryParam("imp-ids", "[\"%s\"]".formatted(joinIds(impIds))); + builder.addQueryParam("imp-ids", "[\"%s\"]".formatted(joinIds(impIds))); } } - return builder.build(); + return builder.expand(); } private StoredDataResult processStoredDataResponse(HttpClientResponse httpClientResponse, diff --git a/src/main/java/org/prebid/server/util/UriTemplate.java b/src/main/java/org/prebid/server/util/Uri.java similarity index 56% rename from src/main/java/org/prebid/server/util/UriTemplate.java rename to src/main/java/org/prebid/server/util/Uri.java index 870464320b3..7de1d7fed1b 100644 --- a/src/main/java/org/prebid/server/util/UriTemplate.java +++ b/src/main/java/org/prebid/server/util/Uri.java @@ -1,15 +1,17 @@ package org.prebid.server.util; import io.vertx.uritemplate.ExpandOptions; +import io.vertx.uritemplate.UriTemplate; import io.vertx.uritemplate.Variables; import java.util.Collection; import java.util.LinkedHashMap; +import java.util.List; import java.util.NoSuchElementException; import java.util.Objects; import java.util.stream.Collectors; -public class UriTemplate { +public class Uri { private static final ExpandOptions REQUIRE_ALL_PARAMS = new ExpandOptions().setAllowVariableMiss(false); @@ -17,21 +19,21 @@ public class UriTemplate { private static final String DYNAMIC_QUERY_START_MACRO = "{?" + DYNAMIC_QUERY_PARAM + "*}"; private static final String DYNAMIC_QUERY_CONTINUATION_MACRO = "{&" + DYNAMIC_QUERY_PARAM + "*}"; - private final io.vertx.uritemplate.UriTemplate template; + private final UriTemplate template; - private UriTemplate(String uri) { + private Uri(String uri) { validateTemplate(Objects.requireNonNull(uri)); - this.template = io.vertx.uritemplate.UriTemplate.of(uri + chooseMacro(uri)); + this.template = UriTemplate.of(uri + chooseMacro(uri)); } - public static UriTemplate of(String uri) throws IllegalArgumentException { - return new UriTemplate(uri); + public static Uri of(String uri) throws IllegalArgumentException { + return new Uri(uri); } private static void validateTemplate(String template) { - final int queryStartIndex = template.indexOf('?'); - if (queryStartIndex != -1 && template.indexOf('}', queryStartIndex) != -1) { - throw new IllegalArgumentException(UriTemplate.class.getName() + " does not support query variables."); + if (template.contains("{?")) { + throw new IllegalArgumentException( + Uri.class.getName() + " does not support optional query variables."); } HttpUtil.validateUrl(template @@ -45,44 +47,60 @@ private static String chooseMacro(String template) { : DYNAMIC_QUERY_START_MACRO; } - public UriBuilder toBuilder() { - return new UriBuilder(template); + public ParameterizedUri parameterized() { + return new ParameterizedUri(template); + } + + public ParameterizedUri replaceMacro(String key, String value) { + return parameterized().replaceMacro(key, value); + } + + public ParameterizedUri replaceMacro(String key, List value) { + return parameterized().replaceMacro(key, value); + } + + public ParameterizedUri addQueryParam(String key, String value) { + return parameterized().addQueryParam(key, value); + } + + public ParameterizedUri addQueryParam(String key, Collection value) { + return parameterized().addQueryParam(key, value); } @Override public String toString() throws NoSuchElementException { - return toBuilder().build(); + return parameterized().expand(); } - public static class UriBuilder { + public static class ParameterizedUri { - private final io.vertx.uritemplate.UriTemplate template; + private final UriTemplate template; private final Variables variables; - public UriBuilder(io.vertx.uritemplate.UriTemplate template) { + private ParameterizedUri(UriTemplate template) { this.template = template; this.variables = Variables.variables(); variables.set(DYNAMIC_QUERY_PARAM, new LinkedHashMap<>()); } - public UriBuilder domainParam(String key, String value) { + public ParameterizedUri replaceMacro(String key, String value) { variables.set(key, value); return this; } - public UriBuilder pathParam(String key, String value) { + public ParameterizedUri replaceMacro(String key, List value) { variables.set(key, value); return this; } - public UriBuilder queryParam(String key, String value) { + public ParameterizedUri addQueryParam(String key, String value) { if (value != null) { variables.getMap(DYNAMIC_QUERY_PARAM).put(key, value); } return this; } - public UriBuilder queryParam(String key, Collection value) { + public ParameterizedUri addQueryParam(String key, Collection value) { if (value == null) { return this; } @@ -95,13 +113,13 @@ public UriBuilder queryParam(String key, Collection value) { return this; } - public String build() throws NoSuchElementException { + public String expand() throws NoSuchElementException { return template.expandToString(variables, REQUIRE_ALL_PARAMS); } @Override public String toString() { - return build(); + return expand(); } } } diff --git a/src/main/resources/bidder-config/yandex.yaml b/src/main/resources/bidder-config/yandex.yaml index 2c48e474a1e..85821885371 100644 --- a/src/main/resources/bidder-config/yandex.yaml +++ b/src/main/resources/bidder-config/yandex.yaml @@ -1,6 +1,6 @@ adapters: yandex: - endpoint: https://bs-metadsp.yandex.ru/prebid/{PageId}?ssp-id=10500 + endpoint: https://bs-metadsp.yandex.ru/prebid/{PageId}?imp-id={ImpId}&ssp-id=10500 endpoint-compression: gzip meta-info: maintainer-email: prebid@yandex-team.ru From 61f9991d5405f2bffd33d0b0da72285a4505ffcd Mon Sep 17 00:00:00 2001 From: Danylo Date: Wed, 15 Apr 2026 16:50:52 +0200 Subject: [PATCH 4/6] Fix integration tests --- .../core/GreenbidsPayloadUpdaterTest.java | 1 - .../real/time/data/core/ModelCacheTest.java | 1 - .../appvideohtml/AppVideoHtmlCorrection.java | 1 - .../AppVideoHtmlCorrectionProducerTest.java | 1 - .../PbRichmediaFilterModuleConfiguration.java | 1 - .../filter/core/BidResponsesMraidFilter.java | 1 - .../core/BidResponsesMraidFilterTest.java | 1 - .../filter/core/ModuleConfigResolverTest.java | 1 - ...ilterAllProcessedBidResponsesHookTest.java | 1 - .../v1/PbRichmediaFilterModuleTest.java | 1 - .../schema/functions/DomainFunctionTest.java | 1 - .../prebid/server/auction/DsaEnforcer.java | 1 - .../server/auction/IpAddressHelper.java | 2 +- .../server/auction/model/ImpRejection.java | 1 - .../model/BidAdjustmentType.java | 1 - .../model/BidAdjustmentsRules.java | 1 - .../prebid/server/bidder/GenericBidder.java | 1 - .../server/bidder/admatic/AdmaticBidder.java | 1 - .../server/bidder/adprime/AdprimeBidder.java | 1 - .../bidder/adtrgtme/AdtrgtmeBidder.java | 1 - .../bidder/eplanning/EplanningBidder.java | 4 +- .../bidder/gotthamads/GothamAdsBidder.java | 1 - .../bidder/huaweiads/ClientTimeFormatter.java | 1 - .../bidder/huaweiads/CountryCodeResolver.java | 1 - .../bidder/huaweiads/HuaweiAdsBidder.java | 1 - .../bidder/huaweiads/HuaweiAppBuilder.java | 1 - .../bidder/huaweiads/HuaweiDeviceBuilder.java | 1 - .../bidder/huaweiads/model/AdsType.java | 1 - .../model/response/CreativeType.java | 1 - .../huaweiads/model/response/PictureAdm.java | 1 - .../model/response/RewardedVideoPartAdm.java | 1 - .../huaweiads/model/response/VideoAdm.java | 1 - .../server/bidder/loyal/LoyalBidder.java | 1 - .../bidder/mabidder/MabidderBidder.java | 1 - .../server/bidder/missena/MissenaBidder.java | 4 +- .../server/bidder/motorik/MotorikBidder.java | 1 - .../bidder/optidigital/OptidigitalBidder.java | 1 - .../server/bidder/preciso/PrecisoBidder.java | 1 - .../richaudience/RichaudienceBidder.java | 4 +- .../bidder/screencore/ScreencoreBidder.java | 1 - .../bidder/sovrnxsp/SovrnXspBidder.java | 1 - .../server/bidder/startio/StartioBidder.java | 1 - .../server/bidder/teads/TeadsBidder.java | 1 - .../bidder/tradplus/TradPlusBidder.java | 1 - .../bidder/undertone/UndertoneBidder.java | 1 - .../bidder/zmaticoo/ZMaticooBidder.java | 1 - .../prebid/server/handler/OptoutHandler.java | 4 +- .../filters/BidderInfoFilterStrategy.java | 1 - .../metric/CacheModuleStorageMetrics.java | 1 - .../server/metric/CacheReadMetrics.java | 1 - .../server/metric/CacheVtrackMetrics.java | 1 - .../purpose/Purpose07Strategy.java | 1 - .../config/GeoLocationConfiguration.java | 1 - .../config/bidder/AdtrgtmeConfiguration.java | 1 - .../config/bidder/AkceloConfiguration.java | 1 - .../config/bidder/AlgorixConfiguration.java | 1 - .../bidder/BidmachineConfiguration.java | 1 - .../config/bidder/HuaweiAdsConfiguration.java | 1 - .../config/bidder/KargoConfiguration.java | 1 - .../config/bidder/PrecisoConfiguration.java | 1 - .../config/bidder/PwbidConfiguration.java | 1 - .../config/bidder/TealConfiguration.java | 1 - .../config/bidder/UndertoneConfiguration.java | 1 - .../java/org/prebid/server/util/HttpUtil.java | 18 ++++---- .../server/validation/ImpValidator.java | 1 - .../server/validation/RequestValidator.java | 1 - .../vertx/httpclient/BasicHttpClient.java | 4 +- .../CircuitBreakerSecuredHttpClient.java | 4 +- .../server/bidder/aso/AsoBidderTest.java | 1 - .../bidder/criteo/CriteoBidderTest.java | 1 - .../bidder/gumgum/GumgumBidderTest.java | 13 +++--- .../server/bidder/pwbid/PwbidBidderTest.java | 1 - .../server/bidder/teads/TeadsBidderTest.java | 1 - .../bidder/theadx/TheadxBidderTest.java | 1 - .../server/bidder/vox/VoxBidderTest.java | 1 - .../cache/BasicPbcStorageServiceTest.java | 4 +- .../server/cache/CoreCacheServiceTest.java | 41 ++++++++----------- .../java/org/prebid/server/it/AdagioTest.java | 1 - .../org/prebid/server/it/AdinifyTest.java | 4 -- .../org/prebid/server/it/AdmaticDeTest.java | 3 -- .../org/prebid/server/it/AdmaticTest.java | 3 -- .../org/prebid/server/it/AdsyieldTest.java | 2 +- .../java/org/prebid/server/it/AdtTest.java | 6 +-- .../org/prebid/server/it/AdtonosTest.java | 2 +- .../org/prebid/server/it/AdtrgtmeTest.java | 1 - .../org/prebid/server/it/AduptechTest.java | 1 - .../org/prebid/server/it/AdverxoTest.java | 3 -- .../org/prebid/server/it/ApplicationTest.java | 4 +- .../prebid/server/it/ArtechnologyTest.java | 4 -- .../java/org/prebid/server/it/AsoTest.java | 2 - .../java/org/prebid/server/it/BcmintTest.java | 2 - .../prebid/server/it/BematterfullTest.java | 3 -- .../org/prebid/server/it/BidAgencyTest.java | 2 - .../org/prebid/server/it/BidstackTest.java | 1 - .../java/org/prebid/server/it/BlastoTest.java | 3 -- .../org/prebid/server/it/CointrafficTest.java | 4 +- .../org/prebid/server/it/DisplayioTest.java | 6 +-- .../org/prebid/server/it/DriftpixelTest.java | 7 +--- .../org/prebid/server/it/Edge226Test.java | 4 +- .../org/prebid/server/it/EmbimediaTest.java | 2 +- .../org/prebid/server/it/EplanningTest.java | 2 +- .../org/prebid/server/it/EquativTest.java | 2 +- .../org/prebid/server/it/EscalaxTest.java | 3 -- .../org/prebid/server/it/FelixadsTest.java | 4 -- .../org/prebid/server/it/FilmzieTest.java | 2 +- .../org/prebid/server/it/FinativeTest.java | 2 - .../org/prebid/server/it/GothamAdsTest.java | 4 +- .../org/prebid/server/it/GreedyGameTest.java | 2 +- .../org/prebid/server/it/HuaweiAdsTest.java | 1 - .../org/prebid/server/it/IionadsTest.java | 2 +- .../org/prebid/server/it/InsticatorTest.java | 1 - .../org/prebid/server/it/IntegrationTest.java | 12 ------ .../org/prebid/server/it/IntenzeTest.java | 4 +- .../java/org/prebid/server/it/IqzoneTest.java | 1 - .../org/prebid/server/it/JambojarTest.java | 4 -- .../org/prebid/server/it/JdpMediaTest.java | 4 -- .../org/prebid/server/it/KuantyxTest.java | 2 - .../prebid/server/it/LemmaDigitalTest.java | 2 +- .../server/it/LimeLightDigitalTest.java | 2 +- .../org/prebid/server/it/LmKiviAdsTest.java | 2 +- .../org/prebid/server/it/MarkappTest.java | 4 -- .../org/prebid/server/it/MarsmediaTest.java | 3 -- .../org/prebid/server/it/MediaGoTest.java | 7 +--- .../org/prebid/server/it/MediasquareTest.java | 1 - .../org/prebid/server/it/MeloZenTest.java | 6 +-- .../java/org/prebid/server/it/MetaxTest.java | 3 -- .../org/prebid/server/it/MinuteMediaTest.java | 2 - .../java/org/prebid/server/it/MobkoiTest.java | 3 +- .../org/prebid/server/it/MonetixAdsTest.java | 3 -- .../org/prebid/server/it/MotorikTest.java | 3 -- .../prebid/server/it/NetAddictionTest.java | 3 -- .../org/prebid/server/it/OmnidexTest.java | 4 +- .../java/org/prebid/server/it/OwnAdxTest.java | 4 +- .../org/prebid/server/it/PgamSspTest.java | 4 +- .../java/org/prebid/server/it/PixadTest.java | 3 -- .../org/prebid/server/it/PrecisoTest.java | 1 - .../java/org/prebid/server/it/ProgxTest.java | 4 +- .../prebid/server/it/RadianfusionTest.java | 4 -- .../prebid/server/it/RelevantDigitalTest.java | 2 - .../java/org/prebid/server/it/RoulaxTest.java | 4 +- .../org/prebid/server/it/ScreencoreTest.java | 4 +- .../prebid/server/it/SeedingAllianceTest.java | 2 - .../prebid/server/it/SmartadserverTest.java | 2 +- .../org/prebid/server/it/SmarthubTest.java | 4 -- .../org/prebid/server/it/SmileWantedTest.java | 2 +- .../org/prebid/server/it/SmrtconnectTest.java | 2 - .../org/prebid/server/it/StreamlynTest.java | 2 +- .../prebid/server/it/StreamvisionTest.java | 2 +- .../org/prebid/server/it/SuntContentTest.java | 2 - .../org/prebid/server/it/TagorasTest.java | 4 +- .../java/org/prebid/server/it/TappxTest.java | 2 +- .../java/org/prebid/server/it/TeadsTest.java | 4 +- .../java/org/prebid/server/it/TgmTest.java | 2 +- .../prebid/server/it/TheTradeDeskTest.java | 6 +-- .../org/prebid/server/it/TradPlusTest.java | 2 +- .../java/org/prebid/server/it/TredioTest.java | 4 -- .../org/prebid/server/it/UndertoneTest.java | 1 - .../org/prebid/server/it/VidazooTest.java | 4 +- .../org/prebid/server/it/VideoHeroesTest.java | 2 - .../java/org/prebid/server/it/XtrmqbTest.java | 2 +- .../java/org/prebid/server/it/YobeeTest.java | 3 -- .../it/hooks/SampleItExitpointHook.java | 1 - .../prebid/server/json/JsonMergerTest.java | 1 - .../OrangeClickMediaTest.java | 2 +- .../vertx/httpclient/BasicHttpClientTest.java | 7 ++-- 165 files changed, 84 insertions(+), 349 deletions(-) diff --git a/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/GreenbidsPayloadUpdaterTest.java b/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/GreenbidsPayloadUpdaterTest.java index 36ed3f8e980..261742146fa 100644 --- a/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/GreenbidsPayloadUpdaterTest.java +++ b/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/GreenbidsPayloadUpdaterTest.java @@ -56,5 +56,4 @@ public void updateShouldRemoveImpFromUpdateBidRequestWhenAllBiddersFiltered() { assertThat(result.getImp()).isEmpty(); } - } diff --git a/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/ModelCacheTest.java b/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/ModelCacheTest.java index 2ceeaa14e43..5e9d97fe9cd 100644 --- a/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/ModelCacheTest.java +++ b/extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/core/ModelCacheTest.java @@ -187,5 +187,4 @@ public void getShouldThrowExceptionWhenBucketNotFound() { assertThat(ar.cause().getMessage()).contains("Bucket not found"); }); } - } diff --git a/extra/modules/pb-response-correction/src/main/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrection.java b/extra/modules/pb-response-correction/src/main/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrection.java index 5b3ee918e86..73e1e30574d 100644 --- a/extra/modules/pb-response-correction/src/main/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrection.java +++ b/extra/modules/pb-response-correction/src/main/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrection.java @@ -134,5 +134,4 @@ private ExtBidPrebid parseExtBidPrebid(Bid bid) { return null; } } - } diff --git a/extra/modules/pb-response-correction/src/test/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrectionProducerTest.java b/extra/modules/pb-response-correction/src/test/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrectionProducerTest.java index 9a628f90029..d2280558ee8 100644 --- a/extra/modules/pb-response-correction/src/test/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrectionProducerTest.java +++ b/extra/modules/pb-response-correction/src/test/java/org/prebid/server/hooks/modules/pb/response/correction/core/correction/appvideohtml/AppVideoHtmlCorrectionProducerTest.java @@ -62,5 +62,4 @@ public void shouldProduceReturnTrueWhenConfigIsEnabledAndBidRequestHasApp() { private static Config givenConfig(boolean enabled) { return Config.of(true, AppVideoHtmlConfig.of(enabled, null)); } - } diff --git a/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/config/PbRichmediaFilterModuleConfiguration.java b/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/config/PbRichmediaFilterModuleConfiguration.java index fe3a8a37ac6..f463f0f9cef 100644 --- a/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/config/PbRichmediaFilterModuleConfiguration.java +++ b/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/config/PbRichmediaFilterModuleConfiguration.java @@ -34,5 +34,4 @@ PbRichmediaFilterModule pbRichmediaFilterModule( new BidResponsesMraidFilter(), new ModuleConfigResolver(mapper, globalProperties)))); } - } diff --git a/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilter.java b/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilter.java index 6cca35cdf7b..b8494d1103a 100644 --- a/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilter.java +++ b/extra/modules/pb-richmedia-filter/src/main/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilter.java @@ -64,5 +64,4 @@ public MraidFilterResult filterByPattern(String mraidScriptPattern, return MraidFilterResult.of(filteredResponses, analyticsResults); } - } diff --git a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilterTest.java b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilterTest.java index 02add5a0aad..dd7e336a834 100644 --- a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilterTest.java +++ b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/BidResponsesMraidFilterTest.java @@ -103,5 +103,4 @@ private static BidderBid givenBid(String impId, String adm) { private static BidderError givenError(String... rejectedImps) { return BidderError.of("Invalid bid", BidderError.Type.invalid_bid, Set.of(rejectedImps)); } - } diff --git a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/ModuleConfigResolverTest.java b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/ModuleConfigResolverTest.java index 8dbb33aa35e..666f1289091 100644 --- a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/ModuleConfigResolverTest.java +++ b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/core/ModuleConfigResolverTest.java @@ -99,5 +99,4 @@ public void resolveShouldReturnGlobalConfigWhenAccountConfigMissingProperties() // then assertThat(actualProperties).isEqualTo(GLOBAL_PROPERTIES); } - } diff --git a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterAllProcessedBidResponsesHookTest.java b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterAllProcessedBidResponsesHookTest.java index b5707a9fe22..0465336a65a 100644 --- a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterAllProcessedBidResponsesHookTest.java +++ b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterAllProcessedBidResponsesHookTest.java @@ -280,5 +280,4 @@ private static AnalyticsResult givenAnalyticsResult(String bidder, String... rej Bid.builder().id("bid-" + impId).impid(impId).build()).build()).toList(), RESPONSE_REJECTED_INVALID_CREATIVE); } - } diff --git a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterModuleTest.java b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterModuleTest.java index 9146788e0c1..345a0cedff7 100644 --- a/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterModuleTest.java +++ b/extra/modules/pb-richmedia-filter/src/test/java/org/prebid/server/hooks/modules/pb/richmedia/filter/v1/PbRichmediaFilterModuleTest.java @@ -11,5 +11,4 @@ public void shouldHaveValidInitialConfigs() { // given and when and then assertThat(PbRichmediaFilterModule.CODE).isEqualTo("pb-richmedia-filter"); } - } diff --git a/extra/modules/pb-rule-engine/src/test/java/org/prebid/server/hooks/modules/rule/engine/core/request/schema/functions/DomainFunctionTest.java b/extra/modules/pb-rule-engine/src/test/java/org/prebid/server/hooks/modules/rule/engine/core/request/schema/functions/DomainFunctionTest.java index 8183ce51dc2..02f6ae4fad4 100644 --- a/extra/modules/pb-rule-engine/src/test/java/org/prebid/server/hooks/modules/rule/engine/core/request/schema/functions/DomainFunctionTest.java +++ b/extra/modules/pb-rule-engine/src/test/java/org/prebid/server/hooks/modules/rule/engine/core/request/schema/functions/DomainFunctionTest.java @@ -132,5 +132,4 @@ private static SchemaFunctionArguments givenFunc null, RequestRuleContext.of(AuctionContext.builder().build(), Granularity.Request.instance(), "datacenter")); } - } diff --git a/src/main/java/org/prebid/server/auction/DsaEnforcer.java b/src/main/java/org/prebid/server/auction/DsaEnforcer.java index e123603b9a0..bdff8fadd46 100644 --- a/src/main/java/org/prebid/server/auction/DsaEnforcer.java +++ b/src/main/java/org/prebid/server/auction/DsaEnforcer.java @@ -145,5 +145,4 @@ private ExtBidDsa getDsaResponse(JsonNode dsaExt) { return null; } } - } diff --git a/src/main/java/org/prebid/server/auction/IpAddressHelper.java b/src/main/java/org/prebid/server/auction/IpAddressHelper.java index 36a2a3e61c5..156aaad4f65 100644 --- a/src/main/java/org/prebid/server/auction/IpAddressHelper.java +++ b/src/main/java/org/prebid/server/auction/IpAddressHelper.java @@ -21,7 +21,7 @@ public class IpAddressHelper { (?:[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.\ (?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){2}\ (?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ - """); + """.strip()); private static final IPAddressStringParameters IP_ADDRESS_VALIDATION_OPTIONS = IPAddressString.DEFAULT_VALIDATION_OPTIONS.toBuilder() .allowSingleSegment(false) diff --git a/src/main/java/org/prebid/server/auction/model/ImpRejection.java b/src/main/java/org/prebid/server/auction/model/ImpRejection.java index 578a9f0ccfc..6677a4ab8e5 100644 --- a/src/main/java/org/prebid/server/auction/model/ImpRejection.java +++ b/src/main/java/org/prebid/server/auction/model/ImpRejection.java @@ -16,5 +16,4 @@ public class ImpRejection implements Rejection { public static ImpRejection of(String impId, BidRejectionReason reason) { return ImpRejection.of(null, impId, reason); } - } diff --git a/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentType.java b/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentType.java index e9b790e5eab..858c27404fd 100644 --- a/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentType.java +++ b/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentType.java @@ -15,5 +15,4 @@ public static BidAdjustmentType of(String name) { return UNKNOWN; } } - } diff --git a/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentsRules.java b/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentsRules.java index 6d64ca1330e..e2f2083b056 100644 --- a/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentsRules.java +++ b/src/main/java/org/prebid/server/bidadjustments/model/BidAdjustmentsRules.java @@ -46,5 +46,4 @@ public static BidAdjustmentsRules of(BidAdjustments bidAdjustments) { return BidAdjustmentsRules.of(MapUtils.unmodifiableMap(rules)); } - } diff --git a/src/main/java/org/prebid/server/bidder/GenericBidder.java b/src/main/java/org/prebid/server/bidder/GenericBidder.java index a708de0ca1b..6dbb2c76034 100644 --- a/src/main/java/org/prebid/server/bidder/GenericBidder.java +++ b/src/main/java/org/prebid/server/bidder/GenericBidder.java @@ -66,5 +66,4 @@ private static List bidsFromResponse(BidRequest bidRequest, BidRespon .map(bid -> BidderBid.of(bid, BidderUtil.getBidType(bid, impMap), bidResponse.getCur())) .toList(); } - } diff --git a/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java b/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java index 08ed6c64903..f6b351b88f7 100644 --- a/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java +++ b/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java @@ -139,5 +139,4 @@ private static BidType getBidType(Bid bid, Map impIdToImpMap) { .orElseThrow(() -> new PreBidException( "The impression with ID %s is not present into the request".formatted(impId))); } - } diff --git a/src/main/java/org/prebid/server/bidder/adprime/AdprimeBidder.java b/src/main/java/org/prebid/server/bidder/adprime/AdprimeBidder.java index f78d6c34f49..b1773d3e2d5 100644 --- a/src/main/java/org/prebid/server/bidder/adprime/AdprimeBidder.java +++ b/src/main/java/org/prebid/server/bidder/adprime/AdprimeBidder.java @@ -171,5 +171,4 @@ private static BidType getBidType(Bid bid) { "Unable to fetch mediaType " + bid.getMtype() + " in multi-format: " + bid.getImpid()); }; } - } diff --git a/src/main/java/org/prebid/server/bidder/adtrgtme/AdtrgtmeBidder.java b/src/main/java/org/prebid/server/bidder/adtrgtme/AdtrgtmeBidder.java index f41a8d49200..a89bf76c4fe 100644 --- a/src/main/java/org/prebid/server/bidder/adtrgtme/AdtrgtmeBidder.java +++ b/src/main/java/org/prebid/server/bidder/adtrgtme/AdtrgtmeBidder.java @@ -160,5 +160,4 @@ private BidType getBidType(String impId, List imps) { } throw new PreBidException("Failed to find impression \"%s\"".formatted(impId)); } - } diff --git a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java index b09e7cf0e0b..26fb706b11f 100644 --- a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java +++ b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java @@ -39,8 +39,6 @@ import org.prebid.server.util.Uri; import java.math.BigDecimal; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -276,7 +274,7 @@ private static String getPageDomain(Site site) { private static URL parseUrl(String url) { try { return HttpUtil.parseUrl(url); - } catch (MalformedURLException | URISyntaxException e) { + } catch (IllegalArgumentException e) { throw new PreBidException("Invalid url: " + url, e); } } diff --git a/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java b/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java index 62b0ad34155..b176b8c1cfd 100644 --- a/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java @@ -144,5 +144,4 @@ private static BidType getBidMediaType(Bid bid) { "Unable to fetch mediaType " + bid.getMtype() + " in multi-format: " + bid.getImpid()); }; } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/ClientTimeFormatter.java b/src/main/java/org/prebid/server/bidder/huaweiads/ClientTimeFormatter.java index c48a509d57e..962904ab640 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/ClientTimeFormatter.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/ClientTimeFormatter.java @@ -48,5 +48,4 @@ private static boolean matchesPattern(String clientTime, Pattern pattern) { public String now() { return OffsetDateTime.now(clock).format(TIME_OUTPUT_FORMATTER); } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/CountryCodeResolver.java b/src/main/java/org/prebid/server/bidder/huaweiads/CountryCodeResolver.java index a9b8ffe5238..67768526222 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/CountryCodeResolver.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/CountryCodeResolver.java @@ -50,5 +50,4 @@ private Optional convertCountryCode(String countryCode) { default -> Optional.ofNullable(countryCodeMapper.mapToAlpha2(countryCode)); }; } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAdsBidder.java b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAdsBidder.java index ebc2b56987e..718e8c36d7f 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAdsBidder.java @@ -351,5 +351,4 @@ private String getNurl(List monitorList) { .findFirst() .orElse(StringUtils.EMPTY); } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAppBuilder.java b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAppBuilder.java index 441fe856295..9bb8bba4370 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAppBuilder.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiAppBuilder.java @@ -71,5 +71,4 @@ private String getPackageName(String bundleName) { return bundleName; } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiDeviceBuilder.java b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiDeviceBuilder.java index ff95dcd40ea..ab980027072 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiDeviceBuilder.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/HuaweiDeviceBuilder.java @@ -106,5 +106,4 @@ private ExtUserDataDeviceIdHuaweiAds parseUserExtData(ExtUser extUser) { private String formatClientTime(List clientTimes) { return CollectionUtils.isEmpty(clientTimes) ? null : clientTimeFormatter.format(clientTimes.getFirst()); } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/model/AdsType.java b/src/main/java/org/prebid/server/bidder/huaweiads/model/AdsType.java index a36039854ed..177e18dd9e6 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/model/AdsType.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/model/AdsType.java @@ -36,5 +36,4 @@ public static AdsType ofTypeNumber(Integer typeNumber) { .findFirst() .orElse(UNKNOWN); } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/CreativeType.java b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/CreativeType.java index 1ea45d9d735..3faafe0315d 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/CreativeType.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/CreativeType.java @@ -30,5 +30,4 @@ public static CreativeType of(Integer type) { .findFirst() .orElse(UNKNOWN); } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/PictureAdm.java b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/PictureAdm.java index 4c3e0b55b92..e22a662a251 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/PictureAdm.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/PictureAdm.java @@ -48,5 +48,4 @@ public String toString() { + "function sendSomeGetReq(urls) {for (var i = 0; i < urls.length; i++) {sendOneGetReq(urls[i]);}}" + ""; } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/RewardedVideoPartAdm.java b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/RewardedVideoPartAdm.java index d248b86600d..27692570bef 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/RewardedVideoPartAdm.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/RewardedVideoPartAdm.java @@ -31,5 +31,4 @@ public String toString() { + "" + ""; } - } diff --git a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/VideoAdm.java b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/VideoAdm.java index d8c47eecaa7..e450f701e48 100644 --- a/src/main/java/org/prebid/server/bidder/huaweiads/model/response/VideoAdm.java +++ b/src/main/java/org/prebid/server/bidder/huaweiads/model/response/VideoAdm.java @@ -63,5 +63,4 @@ public String toString() { + "" + ""; } - } diff --git a/src/main/java/org/prebid/server/bidder/loyal/LoyalBidder.java b/src/main/java/org/prebid/server/bidder/loyal/LoyalBidder.java index b5da6c1a0d2..3644cc7e009 100644 --- a/src/main/java/org/prebid/server/bidder/loyal/LoyalBidder.java +++ b/src/main/java/org/prebid/server/bidder/loyal/LoyalBidder.java @@ -158,5 +158,4 @@ private BidType getBidType(Bid bid) { + bidType.getName() + " for bid.id: '" + bid.getId() + "'"); }; } - } diff --git a/src/main/java/org/prebid/server/bidder/mabidder/MabidderBidder.java b/src/main/java/org/prebid/server/bidder/mabidder/MabidderBidder.java index 4d4f2f59a59..d031816ffef 100644 --- a/src/main/java/org/prebid/server/bidder/mabidder/MabidderBidder.java +++ b/src/main/java/org/prebid/server/bidder/mabidder/MabidderBidder.java @@ -72,5 +72,4 @@ private static Bid makeBid(MabidderBidResponse bidResponse) { .adomain(ObjectUtil.getIfNotNull(bidResponse.getMeta(), Meta::getAdDomains)) .build(); } - } diff --git a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java index a9f363d6b4b..412462d2180 100644 --- a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java +++ b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java @@ -28,8 +28,6 @@ import org.prebid.server.version.PrebidVersionProvider; import java.math.BigDecimal; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -173,7 +171,7 @@ private MultiMap makeHeaders(Device device, Site site) { final URL url = HttpUtil.parseUrl(site.getPage()); final String origin = url.getProtocol() + "://" + url.getHost(); HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.ORIGIN_HEADER, origin); - } catch (MalformedURLException | URISyntaxException e) { + } catch (IllegalArgumentException e) { // do nothing } } diff --git a/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java b/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java index 3fa086747b4..c81bedc6355 100644 --- a/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java +++ b/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java @@ -148,5 +148,4 @@ private static BidType getBidType(String impId, List imps) { throw new PreBidException("Failed to find impression for ID: '%s'".formatted(impId)); } - } diff --git a/src/main/java/org/prebid/server/bidder/optidigital/OptidigitalBidder.java b/src/main/java/org/prebid/server/bidder/optidigital/OptidigitalBidder.java index 8e6e3572fea..ec2bc265336 100644 --- a/src/main/java/org/prebid/server/bidder/optidigital/OptidigitalBidder.java +++ b/src/main/java/org/prebid/server/bidder/optidigital/OptidigitalBidder.java @@ -62,5 +62,4 @@ private static List bidsFromResponse(BidResponse bidResponse) { .map(bid -> BidderBid.of(bid, BidType.banner, bidResponse.getCur())) .toList(); } - } diff --git a/src/main/java/org/prebid/server/bidder/preciso/PrecisoBidder.java b/src/main/java/org/prebid/server/bidder/preciso/PrecisoBidder.java index 3c29aa13b6d..fffd1bcceaa 100644 --- a/src/main/java/org/prebid/server/bidder/preciso/PrecisoBidder.java +++ b/src/main/java/org/prebid/server/bidder/preciso/PrecisoBidder.java @@ -165,5 +165,4 @@ private static BidType getBidType(Bid bid) { "Missing ext.prebid.type in bid for impression : %s." .formatted(bid.getImpid()))); } - } diff --git a/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java b/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java index ebc38e37ffb..b23848e7813 100644 --- a/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java +++ b/src/main/java/org/prebid/server/bidder/richaudience/RichaudienceBidder.java @@ -30,8 +30,6 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -172,7 +170,7 @@ private static Optional extractUrl(Site site) { private static URL parseUrl(String page) { try { return HttpUtil.parseUrl(page); - } catch (MalformedURLException | URISyntaxException e) { + } catch (IllegalArgumentException e) { return null; } } diff --git a/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java b/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java index 51e05ddfd24..e36ea92767a 100644 --- a/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java +++ b/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java @@ -153,5 +153,4 @@ private static BidType getBidMediaType(Bid bid) { "Unable to fetch mediaType " + bid.getMtype() + " in multi-format: " + bid.getImpid()); }; } - } diff --git a/src/main/java/org/prebid/server/bidder/sovrnxsp/SovrnXspBidder.java b/src/main/java/org/prebid/server/bidder/sovrnxsp/SovrnXspBidder.java index a97af029b67..5637be0a2fa 100644 --- a/src/main/java/org/prebid/server/bidder/sovrnxsp/SovrnXspBidder.java +++ b/src/main/java/org/prebid/server/bidder/sovrnxsp/SovrnXspBidder.java @@ -177,5 +177,4 @@ private static BidderBid makeBidderBid(Bid bid, String currency, Integer mtype, final Integer modifiedMtype = Optional.ofNullable(bid.getMtype()).orElse(mtype); return BidderBid.of(bid.toBuilder().mtype(modifiedMtype).build(), bidType, currency); } - } diff --git a/src/main/java/org/prebid/server/bidder/startio/StartioBidder.java b/src/main/java/org/prebid/server/bidder/startio/StartioBidder.java index e7ce856a4bc..2086ba7697b 100644 --- a/src/main/java/org/prebid/server/bidder/startio/StartioBidder.java +++ b/src/main/java/org/prebid/server/bidder/startio/StartioBidder.java @@ -145,5 +145,4 @@ private static BidType getBidType(Bid bid) { default -> null; }; } - } diff --git a/src/main/java/org/prebid/server/bidder/teads/TeadsBidder.java b/src/main/java/org/prebid/server/bidder/teads/TeadsBidder.java index 1e4e9804e11..a16c0198e94 100644 --- a/src/main/java/org/prebid/server/bidder/teads/TeadsBidder.java +++ b/src/main/java/org/prebid/server/bidder/teads/TeadsBidder.java @@ -168,5 +168,4 @@ private ExtBidPrebid parseExtBidPrebidMeta(Bid bid) { throw new PreBidException(e.getMessage()); } } - } diff --git a/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java b/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java index 99d8bc8e74c..b8912da688f 100644 --- a/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java +++ b/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java @@ -131,5 +131,4 @@ private static BidType getBidType(String impId, List imps) { throw new PreBidException( "Invalid bid imp ID #%s does not match any imp IDs from the original bid request".formatted(impId)); } - } diff --git a/src/main/java/org/prebid/server/bidder/undertone/UndertoneBidder.java b/src/main/java/org/prebid/server/bidder/undertone/UndertoneBidder.java index f350abec72c..7e1dd28c879 100644 --- a/src/main/java/org/prebid/server/bidder/undertone/UndertoneBidder.java +++ b/src/main/java/org/prebid/server/bidder/undertone/UndertoneBidder.java @@ -220,5 +220,4 @@ private BidType getBidType(Bid bid, Map idImpMap) { return BidType.banner; } - } diff --git a/src/main/java/org/prebid/server/bidder/zmaticoo/ZMaticooBidder.java b/src/main/java/org/prebid/server/bidder/zmaticoo/ZMaticooBidder.java index 028d3dbc6de..d2a8c6de6a9 100644 --- a/src/main/java/org/prebid/server/bidder/zmaticoo/ZMaticooBidder.java +++ b/src/main/java/org/prebid/server/bidder/zmaticoo/ZMaticooBidder.java @@ -178,5 +178,4 @@ private static BidType getBidMediaType(Bid bid) { "unrecognized bid type in response from zmaticoo for bid " + bid.getImpid()); }; } - } diff --git a/src/main/java/org/prebid/server/handler/OptoutHandler.java b/src/main/java/org/prebid/server/handler/OptoutHandler.java index c6557bec430..aaf805ec7b2 100644 --- a/src/main/java/org/prebid/server/handler/OptoutHandler.java +++ b/src/main/java/org/prebid/server/handler/OptoutHandler.java @@ -17,8 +17,6 @@ import org.prebid.server.vertx.verticles.server.HttpEndpoint; import org.prebid.server.vertx.verticles.server.application.ApplicationResource; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.util.List; import java.util.Objects; @@ -122,7 +120,7 @@ private static String getRequestParam(RoutingContext routingContext, String para public static String getOptoutRedirectUrl(String externalUrl) { try { return HttpUtil.parseUrl(externalUrl + "/static/optout.html").toString(); - } catch (URISyntaxException | MalformedURLException e) { + } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Could not get optout redirect url", e); } } diff --git a/src/main/java/org/prebid/server/handler/info/filters/BidderInfoFilterStrategy.java b/src/main/java/org/prebid/server/handler/info/filters/BidderInfoFilterStrategy.java index 6157e10db86..2df354ff643 100644 --- a/src/main/java/org/prebid/server/handler/info/filters/BidderInfoFilterStrategy.java +++ b/src/main/java/org/prebid/server/handler/info/filters/BidderInfoFilterStrategy.java @@ -21,5 +21,4 @@ static boolean lookUpQueryParamInContext(String queryParamName, RoutingContext r return Boolean.parseBoolean(queryParamValue); } - } diff --git a/src/main/java/org/prebid/server/metric/CacheModuleStorageMetrics.java b/src/main/java/org/prebid/server/metric/CacheModuleStorageMetrics.java index 5bc52b503cb..fe77c8f5eb6 100644 --- a/src/main/java/org/prebid/server/metric/CacheModuleStorageMetrics.java +++ b/src/main/java/org/prebid/server/metric/CacheModuleStorageMetrics.java @@ -50,5 +50,4 @@ CacheCreativeSizeMetrics entrySize() { CacheCreativeTtlMetrics entryTtl() { return entryTtlMetrics; } - } diff --git a/src/main/java/org/prebid/server/metric/CacheReadMetrics.java b/src/main/java/org/prebid/server/metric/CacheReadMetrics.java index 356d96fb9d1..074658f689f 100644 --- a/src/main/java/org/prebid/server/metric/CacheReadMetrics.java +++ b/src/main/java/org/prebid/server/metric/CacheReadMetrics.java @@ -16,5 +16,4 @@ public class CacheReadMetrics extends UpdatableMetrics { private static Function nameCreator(String prefix) { return metricName -> "%s.read.%s".formatted(prefix, metricName); } - } diff --git a/src/main/java/org/prebid/server/metric/CacheVtrackMetrics.java b/src/main/java/org/prebid/server/metric/CacheVtrackMetrics.java index e3a44639297..053b5df5c83 100644 --- a/src/main/java/org/prebid/server/metric/CacheVtrackMetrics.java +++ b/src/main/java/org/prebid/server/metric/CacheVtrackMetrics.java @@ -50,5 +50,4 @@ CacheCreativeSizeMetrics creativeSize() { CacheCreativeTtlMetrics creativeTtl() { return creativeTtlMetrics; } - } diff --git a/src/main/java/org/prebid/server/privacy/gdpr/tcfstrategies/purpose/Purpose07Strategy.java b/src/main/java/org/prebid/server/privacy/gdpr/tcfstrategies/purpose/Purpose07Strategy.java index 8e388c043c9..ae90f26d53f 100644 --- a/src/main/java/org/prebid/server/privacy/gdpr/tcfstrategies/purpose/Purpose07Strategy.java +++ b/src/main/java/org/prebid/server/privacy/gdpr/tcfstrategies/purpose/Purpose07Strategy.java @@ -29,5 +29,4 @@ public void allowNaturally(PrivacyEnforcementAction privacyEnforcementAction) { public PurposeCode getPurpose() { return PurposeCode.SEVEN; } - } diff --git a/src/main/java/org/prebid/server/spring/config/GeoLocationConfiguration.java b/src/main/java/org/prebid/server/spring/config/GeoLocationConfiguration.java index bfb56b8c0c1..5b513ce4f29 100644 --- a/src/main/java/org/prebid/server/spring/config/GeoLocationConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/GeoLocationConfiguration.java @@ -194,5 +194,4 @@ GeoLocationServiceWrapper geoLocationServiceWrapper( implicitParametersResolver, metrics); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/AdtrgtmeConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/AdtrgtmeConfiguration.java index 7a578330380..77fde549ad9 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/AdtrgtmeConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/AdtrgtmeConfiguration.java @@ -38,5 +38,4 @@ BidderDeps adtrgtmeBidderDeps(BidderConfigurationProperties adtrgtmeConfiguratio .bidderCreator(config -> new AdtrgtmeBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/AkceloConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/AkceloConfiguration.java index 3b6472eac49..83282d4a6b3 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/AkceloConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/AkceloConfiguration.java @@ -39,5 +39,4 @@ BidderDeps akceloBidderDeps(BidderConfigurationProperties akceloConfigurationPro .bidderCreator(config -> new AkceloBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/AlgorixConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/AlgorixConfiguration.java index 1082e4c0b5a..6468dadb2b9 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/AlgorixConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/AlgorixConfiguration.java @@ -39,5 +39,4 @@ BidderDeps algorixBidderDeps(BidderConfigurationProperties algorixConfigurationP .bidderCreator(config -> new AlgorixBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/BidmachineConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/BidmachineConfiguration.java index d5171cff6fb..55bc7d24ed5 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/BidmachineConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/BidmachineConfiguration.java @@ -38,5 +38,4 @@ BidderDeps bidmachineBidderDeps(BidderConfigurationProperties bidmachineConfigur .bidderCreator(config -> new BidmachineBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/HuaweiAdsConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/HuaweiAdsConfiguration.java index ba69ed885b1..89c216c8ef5 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/HuaweiAdsConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/HuaweiAdsConfiguration.java @@ -103,5 +103,4 @@ private static class ExtraInfo { String asianEndpoint; } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/KargoConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/KargoConfiguration.java index d01076cae25..a6b89044b43 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/KargoConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/KargoConfiguration.java @@ -38,5 +38,4 @@ BidderDeps kargoBidderDeps(BidderConfigurationProperties kargoConfigurationPrope .bidderCreator(config -> new KargoBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/PrecisoConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/PrecisoConfiguration.java index dfa65428aac..aa6ac0ef386 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/PrecisoConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/PrecisoConfiguration.java @@ -43,5 +43,4 @@ BidderDeps precisoBidderDeps(BidderConfigurationProperties precisoConfigurationP .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/PwbidConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/PwbidConfiguration.java index d076873bdf0..ffc1ac3f8b6 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/PwbidConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/PwbidConfiguration.java @@ -38,5 +38,4 @@ BidderDeps pwbidBidderDeps(BidderConfigurationProperties pwbidConfigurationPrope .bidderCreator(config -> new PwbidBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/TealConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/TealConfiguration.java index cbbff678a7e..d2ee00de8b5 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/TealConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/TealConfiguration.java @@ -38,5 +38,4 @@ BidderDeps tealBidderDeps(BidderConfigurationProperties tealConfigurationPropert .bidderCreator(config -> new TealBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/UndertoneConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/UndertoneConfiguration.java index a51380096ea..008bfd9c1a2 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/UndertoneConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/UndertoneConfiguration.java @@ -38,5 +38,4 @@ BidderDeps undertoneBidderDeps(BidderConfigurationProperties undertoneConfigurat .bidderCreator(config -> new UndertoneBidder(config.getEndpoint(), mapper)) .assemble(); } - } diff --git a/src/main/java/org/prebid/server/util/HttpUtil.java b/src/main/java/org/prebid/server/util/HttpUtil.java index 6329bab7074..824f997472d 100644 --- a/src/main/java/org/prebid/server/util/HttpUtil.java +++ b/src/main/java/org/prebid/server/util/HttpUtil.java @@ -14,9 +14,7 @@ import org.prebid.server.model.Endpoint; import org.prebid.server.model.HttpRequestContext; -import java.net.MalformedURLException; import java.net.URI; -import java.net.URISyntaxException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; @@ -84,18 +82,18 @@ public final class HttpUtil { private HttpUtil() { } - public static URL parseUrl(String url) throws URISyntaxException, MalformedURLException { - return new URI(url).toURL(); - } - - public static String validateUrl(String url) { + public static URL parseUrl(String url) { try { - return parseUrl(url).toString(); - } catch (URISyntaxException | MalformedURLException e) { + return new URI(url).toURL(); + } catch (Exception e) { throw new IllegalArgumentException("URL supplied is not valid: " + url, e); } } + public static String validateUrl(String url) { + return parseUrl(url).toString(); + } + public static String encodeUrl(String value) { return URLEncoder.encode(value, StandardCharsets.UTF_8); } @@ -126,7 +124,7 @@ public static String getHostFromUrl(String url) { try { return parseUrl(url).getHost(); - } catch (URISyntaxException | MalformedURLException e) { + } catch (IllegalArgumentException e) { return null; } } diff --git a/src/main/java/org/prebid/server/validation/ImpValidator.java b/src/main/java/org/prebid/server/validation/ImpValidator.java index 9a31aa6e52d..c254ac00bfc 100644 --- a/src/main/java/org/prebid/server/validation/ImpValidator.java +++ b/src/main/java/org/prebid/server/validation/ImpValidator.java @@ -668,5 +668,4 @@ private static String documentationOnPage(int page) { private static boolean hasPositiveValue(Integer value) { return value != null && value > 0; } - } diff --git a/src/main/java/org/prebid/server/validation/RequestValidator.java b/src/main/java/org/prebid/server/validation/RequestValidator.java index 958c59d3a5a..b7cbb98d775 100644 --- a/src/main/java/org/prebid/server/validation/RequestValidator.java +++ b/src/main/java/org/prebid/server/validation/RequestValidator.java @@ -690,5 +690,4 @@ private void validateRegs(Regs regs) throws ValidationException { throw new ValidationException("request.regs.ext.gdpr must be either 0 or 1"); } } - } diff --git a/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java b/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java index e94cbec0694..64157182bb2 100644 --- a/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java +++ b/src/main/java/org/prebid/server/vertx/httpclient/BasicHttpClient.java @@ -13,8 +13,6 @@ import org.prebid.server.util.HttpUtil; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Objects; @@ -57,7 +55,7 @@ private Future request(HttpMethod method, String url, MultiM final URL absoluteUrl; try { absoluteUrl = HttpUtil.parseUrl(url); - } catch (URISyntaxException | MalformedURLException e) { + } catch (IllegalArgumentException e) { return Future.failedFuture(e); } diff --git a/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java b/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java index c3ad01d78c6..b234fc152af 100644 --- a/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java +++ b/src/main/java/org/prebid/server/vertx/httpclient/CircuitBreakerSecuredHttpClient.java @@ -14,8 +14,6 @@ import org.prebid.server.vertx.CircuitBreaker; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.net.URL; import java.time.Clock; import java.util.Map; @@ -149,7 +147,7 @@ private static String idFrom(String urlAsString) { private static URL parseUrl(String url) { try { return HttpUtil.parseUrl(url); - } catch (URISyntaxException | MalformedURLException e) { + } catch (IllegalArgumentException e) { throw new PreBidException("Invalid url: " + url, e); } } diff --git a/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java b/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java index c97c38cd124..bd88540709c 100644 --- a/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java @@ -292,5 +292,4 @@ private static BidderCall givenHttpCall(String body) { HttpResponse.of(200, null, body), null); } - } diff --git a/src/test/java/org/prebid/server/bidder/criteo/CriteoBidderTest.java b/src/test/java/org/prebid/server/bidder/criteo/CriteoBidderTest.java index 291dd35d415..d609a170d2a 100644 --- a/src/test/java/org/prebid/server/bidder/criteo/CriteoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/criteo/CriteoBidderTest.java @@ -305,5 +305,4 @@ private static ObjectNode givenBidExtWithNetwork(String networkNameValue) { prebid.put("networkName", networkNameValue); return ext; } - } diff --git a/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java b/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java index 2b00840ed26..f37303c6d98 100644 --- a/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java @@ -39,10 +39,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.assertj.core.api.Assertions.tuple; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; import static org.prebid.server.proto.openrtb.ext.response.BidType.video; @@ -115,12 +115,12 @@ public void testMakeHttpRequestsShouldNotSetTagIdFromZoneWhenAdUnitIdIsMissing() assertNotNull(result); assertFalse(result.getValue().isEmpty()); - final byte[] requestBody = result.getValue().get(0).getBody(); + final byte[] requestBody = result.getValue().getFirst().getBody(); final BidRequest modifiedRequest = mapper.readValue(requestBody, BidRequest.class); assertFalse(modifiedRequest.getImp().isEmpty()); - final Imp modifiedImp = modifiedRequest.getImp().get(0); + final Imp modifiedImp = modifiedRequest.getImp().getFirst(); assertNull(modifiedImp.getTagid()); assertEquals("test-site", modifiedRequest.getSite().getId(), "zone123"); @@ -547,5 +547,4 @@ private static BidderCall givenHttpCall(BidRequest bidRequest, Strin HttpResponse.of(200, null, body), null); } - } diff --git a/src/test/java/org/prebid/server/bidder/pwbid/PwbidBidderTest.java b/src/test/java/org/prebid/server/bidder/pwbid/PwbidBidderTest.java index b790ad9033f..c9010e9856d 100644 --- a/src/test/java/org/prebid/server/bidder/pwbid/PwbidBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/pwbid/PwbidBidderTest.java @@ -229,5 +229,4 @@ private static BidResponse givenBidResponse(Function givenHttpCall(BidRequest bidRequest, Strin HttpResponse.of(200, null, body), null); } - } diff --git a/src/test/java/org/prebid/server/bidder/theadx/TheadxBidderTest.java b/src/test/java/org/prebid/server/bidder/theadx/TheadxBidderTest.java index 288ba1f43f0..9afc42fb4f8 100644 --- a/src/test/java/org/prebid/server/bidder/theadx/TheadxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/theadx/TheadxBidderTest.java @@ -241,5 +241,4 @@ private static BidderCall givenHttpCall(String body) { HttpResponse.of(200, null, body), null); } - } diff --git a/src/test/java/org/prebid/server/bidder/vox/VoxBidderTest.java b/src/test/java/org/prebid/server/bidder/vox/VoxBidderTest.java index b91d5663834..05a815c97bd 100644 --- a/src/test/java/org/prebid/server/bidder/vox/VoxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/vox/VoxBidderTest.java @@ -279,5 +279,4 @@ private static class VoxImpExt { String imageUrl; Set displaySizes; } - } diff --git a/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java b/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java index 1d0e2e86d3c..d6d0c3bbc15 100644 --- a/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java +++ b/src/test/java/org/prebid/server/cache/BasicPbcStorageServiceTest.java @@ -21,8 +21,6 @@ import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.time.Clock; import java.time.Instant; import java.time.ZoneId; @@ -49,7 +47,7 @@ public class BasicPbcStorageServiceTest extends VertxTest { private BasicPbcStorageService target; @BeforeEach - public void setUp() throws MalformedURLException, JsonProcessingException, URISyntaxException { + public void setUp() throws JsonProcessingException { target = new BasicPbcStorageService( httpClient, HttpUtil.parseUrl("http://cache-service/cache"), diff --git a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java index ee561e9e3b5..d37fff76d46 100644 --- a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java +++ b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java @@ -48,8 +48,6 @@ import org.prebid.server.vertx.httpclient.model.HttpClientResponse; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.time.Clock; import java.time.Instant; import java.time.ZoneId; @@ -105,7 +103,7 @@ public class CoreCacheServiceTest extends VertxTest { private Timeout expiredTimeout; @BeforeEach - public void setUp() throws MalformedURLException, JsonProcessingException, URISyntaxException { + public void setUp() throws JsonProcessingException { clock = Clock.fixed(Instant.now(), ZoneId.systemDefault()); target = new CoreCacheService( @@ -256,7 +254,7 @@ public void cacheBidsOpenrtbShouldTolerateReadingHttpResponseFails() throws Json @Test public void cacheBidsOpenrtbShouldTryCallingInternalEndpointAndTolerateReadingHttpResponseFails() - throws JsonProcessingException, MalformedURLException, URISyntaxException { + throws JsonProcessingException { // given target = new CoreCacheService( @@ -437,7 +435,7 @@ public void cacheBidsOpenrtbShouldReturnExpectedDebugInfo() throws JsonProcessin } @Test - public void cacheBidsOpenrtbShouldUseApiKeyWhenProvided() throws MalformedURLException, URISyntaxException { + public void cacheBidsOpenrtbShouldUseApiKeyWhenProvided() { // given target = new CoreCacheService( httpClient, @@ -1229,7 +1227,7 @@ public void cachePutObjectsShouldNotLogErrorMetricsWhenCacheServiceIsNotConnecte } @Test - public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws IOException, URISyntaxException { + public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws IOException { // given target = new CoreCacheService( httpClient, @@ -1261,7 +1259,7 @@ public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws .willReturn(new TextNode("modifiedVast")); // when - target.cachePutObjects(asList(firstBidPutObject), true, singleton("bidder1"), "account", 100, "pbjs", timeout); + target.cachePutObjects(singletonList(firstBidPutObject), true, singleton("bidder1"), "account", 100, "pbjs", timeout); // then verify(httpClient).post(eq("http://cache-service-internal/cache"), any(), any(), anyLong()); @@ -1281,7 +1279,7 @@ public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws } @Test - public void cachePutObjectsShouldUseApiKeyWhenProvided() throws MalformedURLException, URISyntaxException { + public void cachePutObjectsShouldUseApiKeyWhenProvided() { // given target = new CoreCacheService( httpClient, @@ -1324,7 +1322,7 @@ public void cachePutObjectsShouldUseApiKeyWhenProvided() throws MalformedURLExce } @Test - public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOException, URISyntaxException { + public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOException { // given target = new CoreCacheService( httpClient, @@ -1361,7 +1359,7 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOExcepti .build(); // when - final Future future = target.cacheBidsOpenrtb( + target.cacheBidsOpenrtb( asList(bidInfo1, bidInfo2), givenAuctionContext(), CacheContext.builder() @@ -1395,7 +1393,7 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWhenEnabled() throws IOExcepti @Test public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() - throws IOException, URISyntaxException { + throws IOException { // given target = new CoreCacheService( @@ -1433,7 +1431,7 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() .build(); // when - final Future future = target.cacheBidsOpenrtb( + target.cacheBidsOpenrtb( asList(bidInfo1, bidInfo2), givenAuctionContext(), CacheContext.builder() @@ -1466,7 +1464,7 @@ public void cacheBidsOpenrtbShouldPrependTraceInfoWithDatacenterWhenEnabled() } @Test - public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throws IOException, URISyntaxException { + public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throws IOException { // given target = new CoreCacheService( httpClient, @@ -1497,7 +1495,7 @@ public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throw .build(); // when - final Future future = target.cacheBidsOpenrtb( + target.cacheBidsOpenrtb( singletonList(bidInfo), givenAuctionContext(), CacheContext.builder() @@ -1517,7 +1515,7 @@ public void cacheBidsOpenrtbShouldNotPrependTraceInfoToLowEntoryCacheIds() throw } @Test - public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOException, URISyntaxException { + public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOException { // given target = new CoreCacheService( httpClient, @@ -1566,8 +1564,7 @@ public void cachePutObjectsShouldPrependTraceInfoWhenEnabled() throws IOExceptio } @Test - public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() - throws IOException, URISyntaxException { + public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() throws IOException { // given target = new CoreCacheService( @@ -1617,7 +1614,7 @@ public void cachePutObjectsShouldPrependTraceInfoWithDatacenterWhenEnabled() } @Test - public void cachePutObjectsShouldNotPrependTraceInfoToPassedInKey() throws IOException, URISyntaxException { + public void cachePutObjectsShouldNotPrependTraceInfoToPassedInKey() throws IOException { // given target = new CoreCacheService( httpClient, @@ -1758,8 +1755,7 @@ public void getCachedObjectShouldAddUuidQueryParamsBeforeSendingWhenChIsAbsent() } @Test - public void getCachedObjectShouldAddUuidQueryParamsToInternalBeforeSendingWhenChIsAbsent() - throws MalformedURLException, URISyntaxException { + public void getCachedObjectShouldAddUuidQueryParamsToInternalBeforeSendingWhenChIsAbsent() { // given target = new CoreCacheService( @@ -1797,11 +1793,6 @@ public void getCachedObjectShouldAddUuidQueryParamsToInternalBeforeSendingWhenCh @Test public void getCachedObjectShouldNotLogErrorMetricsWhenCacheIsNotReached() { // given - final HttpClientResponse response = HttpClientResponse.of( - 200, - MultiMap.caseInsensitiveMultiMap().add("Header", "Value"), - "body"); - given(httpClient.get(eq("http://cache-service/cache?uuid=key&ch=ch"), any(), anyLong())) .willReturn(Future.failedFuture(new TimeoutException("Timeout"))); diff --git a/src/test/java/org/prebid/server/it/AdagioTest.java b/src/test/java/org/prebid/server/it/AdagioTest.java index 01279362d4f..5c5aefa87f8 100644 --- a/src/test/java/org/prebid/server/it/AdagioTest.java +++ b/src/test/java/org/prebid/server/it/AdagioTest.java @@ -30,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromAdagio() throws IOException, // then assertJsonEquals("openrtb2/adagio/test-auction-adagio-response.json", response, List.of("adagio")); } - } diff --git a/src/test/java/org/prebid/server/it/AdinifyTest.java b/src/test/java/org/prebid/server/it/AdinifyTest.java index 2b0234373b7..83071dc6ea0 100644 --- a/src/test/java/org/prebid/server/it/AdinifyTest.java +++ b/src/test/java/org/prebid/server/it/AdinifyTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class AdinifyTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromAdinify() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adinify-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/adinify/test-adinify-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/adinify/test-adinify-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/AdmaticDeTest.java b/src/test/java/org/prebid/server/it/AdmaticDeTest.java index 4963f138219..27d0277639a 100644 --- a/src/test/java/org/prebid/server/it/AdmaticDeTest.java +++ b/src/test/java/org/prebid/server/it/AdmaticDeTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class AdmaticDeTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromAdmaticDe() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/admaticde-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/admaticde/test-admaticde-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/admaticde/test-admaticde-bid-response.json")))); @@ -32,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromAdmaticDe() throws IOExcepti // then assertJsonEquals("openrtb2/admaticde/test-auction-admaticde-response.json", response, List.of("admaticde")); } - } diff --git a/src/test/java/org/prebid/server/it/AdmaticTest.java b/src/test/java/org/prebid/server/it/AdmaticTest.java index 4b2848942a6..08a70b0f096 100644 --- a/src/test/java/org/prebid/server/it/AdmaticTest.java +++ b/src/test/java/org/prebid/server/it/AdmaticTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class AdmaticTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromAdmatic() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/admatic-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/admatic/test-admatic-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/admatic/test-admatic-bid-response.json")))); @@ -32,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromAdmatic() throws IOException // then assertJsonEquals("openrtb2/admatic/test-auction-admatic-response.json", response, List.of("admatic")); } - } diff --git a/src/test/java/org/prebid/server/it/AdsyieldTest.java b/src/test/java/org/prebid/server/it/AdsyieldTest.java index 5f5b65eefba..adc80a3eafb 100644 --- a/src/test/java/org/prebid/server/it/AdsyieldTest.java +++ b/src/test/java/org/prebid/server/it/AdsyieldTest.java @@ -18,7 +18,7 @@ public class AdsyieldTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheAdsyieldBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adsyield-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adsyield-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/adsyield/test-adsyield-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/AdtTest.java b/src/test/java/org/prebid/server/it/AdtTest.java index 43af3f37f7f..80a5079fbea 100644 --- a/src/test/java/org/prebid/server/it/AdtTest.java +++ b/src/test/java/org/prebid/server/it/AdtTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,18 +19,15 @@ public class AdtTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromadt() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adt-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/adt/test-adt-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/adt/test-adt-bid-response.json")))); // when final Response response = responseFor( "openrtb2/adt/test-auction-adt-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/adt/test-auction-adt-response.json", response, List.of("adt")); } - } diff --git a/src/test/java/org/prebid/server/it/AdtonosTest.java b/src/test/java/org/prebid/server/it/AdtonosTest.java index 389edc02a5e..ddb1f206307 100644 --- a/src/test/java/org/prebid/server/it/AdtonosTest.java +++ b/src/test/java/org/prebid/server/it/AdtonosTest.java @@ -18,7 +18,7 @@ public class AdtonosTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheAdtonosBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adtonos-exchange/testPublisherId")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adtonos-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/adtonos/test-adtonos-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/AdtrgtmeTest.java b/src/test/java/org/prebid/server/it/AdtrgtmeTest.java index 23be3e53347..daa5816bf20 100644 --- a/src/test/java/org/prebid/server/it/AdtrgtmeTest.java +++ b/src/test/java/org/prebid/server/it/AdtrgtmeTest.java @@ -33,5 +33,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromAdtrgtme() throws IOExceptio assertJsonEquals("openrtb2/adtrgtme/test-auction-adtrgtme-response.json", response, singletonList("adtrgtme")); } - } diff --git a/src/test/java/org/prebid/server/it/AduptechTest.java b/src/test/java/org/prebid/server/it/AduptechTest.java index 7db6a6c1217..35345d4d9f0 100644 --- a/src/test/java/org/prebid/server/it/AduptechTest.java +++ b/src/test/java/org/prebid/server/it/AduptechTest.java @@ -30,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromAduptech() throws IOExceptio // then assertJsonEquals("openrtb2/aduptech/test-auction-aduptech-response.json", response, List.of("aduptech")); } - } diff --git a/src/test/java/org/prebid/server/it/AdverxoTest.java b/src/test/java/org/prebid/server/it/AdverxoTest.java index 30b2f3bc049..68bc668771f 100644 --- a/src/test/java/org/prebid/server/it/AdverxoTest.java +++ b/src/test/java/org/prebid/server/it/AdverxoTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class AdverxoTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromTheAdverxo() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adverxo-exchange")) - .withQueryParam("adUnitId", equalTo("1")) - .withQueryParam("auth", equalTo("123456")) .withRequestBody(equalToJson(jsonFrom("openrtb2/adverxo/test-adverxo-bid-request.json"), true, true)) .willReturn(aResponse().withBody(jsonFrom("openrtb2/adverxo/test-adverxo-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/ApplicationTest.java b/src/test/java/org/prebid/server/it/ApplicationTest.java index 3a3710c6e6e..b986d7062ce 100644 --- a/src/test/java/org/prebid/server/it/ApplicationTest.java +++ b/src/test/java/org/prebid/server/it/ApplicationTest.java @@ -130,9 +130,7 @@ public void openrtb2MultiBidAuctionShouldRespondWithMoreThanOneBid() throws IOEx WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/genericAlias-exchange")) .withRequestBody(equalToJson( - jsonFrom( - "openrtb2/multi_bid/test-genericAlias-bid-request-1.json" - ))) + jsonFrom("openrtb2/multi_bid/test-genericAlias-bid-request-1.json"))) .willReturn(aResponse().withBody(jsonFrom( "openrtb2/multi_bid/test-genericAlias-bid-response-1.json")))); diff --git a/src/test/java/org/prebid/server/it/ArtechnologyTest.java b/src/test/java/org/prebid/server/it/ArtechnologyTest.java index 7c8ab50b034..21f6589f9f4 100644 --- a/src/test/java/org/prebid/server/it/ArtechnologyTest.java +++ b/src/test/java/org/prebid/server/it/ArtechnologyTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class ArtechnologyTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromArtechnology() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/artechnology-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/artechnology/test-artechnology-bid-request.json"))) .willReturn(aResponse() .withBody(jsonFrom("openrtb2/artechnology/test-artechnology-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/AsoTest.java b/src/test/java/org/prebid/server/it/AsoTest.java index 2ca3dbbd4ae..a08406b9677 100644 --- a/src/test/java/org/prebid/server/it/AsoTest.java +++ b/src/test/java/org/prebid/server/it/AsoTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class AsoTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromAso() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/aso-exchange")) - .withQueryParam("zid", equalTo("1")) .withRequestBody(equalToJson( jsonFrom("openrtb2/aso/test-aso-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/BcmintTest.java b/src/test/java/org/prebid/server/it/BcmintTest.java index 7fbf7ef0a1e..dd9082ff6e4 100644 --- a/src/test/java/org/prebid/server/it/BcmintTest.java +++ b/src/test/java/org/prebid/server/it/BcmintTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class BcmintTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromBcmint() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/bcmint-exchange")) - .withQueryParam("zid", equalTo("1")) .withRequestBody(equalToJson( jsonFrom("openrtb2/bcmint/test-bcmint-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/BematterfullTest.java b/src/test/java/org/prebid/server/it/BematterfullTest.java index 0634f051bab..49c2a4deadc 100644 --- a/src/test/java/org/prebid/server/it/BematterfullTest.java +++ b/src/test/java/org/prebid/server/it/BematterfullTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class BematterfullTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromBematterfull() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/bematterfull-exchange")) - .withQueryParam("host", equalTo("testHost")) - .withQueryParam("pid", equalTo("testPid")) .withRequestBody(equalToJson( jsonFrom("openrtb2/bematterfull/test-bematterfull-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/BidAgencyTest.java b/src/test/java/org/prebid/server/it/BidAgencyTest.java index c888585ecc8..18acc48d730 100644 --- a/src/test/java/org/prebid/server/it/BidAgencyTest.java +++ b/src/test/java/org/prebid/server/it/BidAgencyTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class BidAgencyTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromBidAgency() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/bidagency-exchange")) - .withQueryParam("zid", equalTo("1")) .withRequestBody(equalToJson( jsonFrom("openrtb2/bidagency/test-bidagency-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/BidstackTest.java b/src/test/java/org/prebid/server/it/BidstackTest.java index 6554029963d..832ec946d29 100644 --- a/src/test/java/org/prebid/server/it/BidstackTest.java +++ b/src/test/java/org/prebid/server/it/BidstackTest.java @@ -30,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromBidstack() throws IOExceptio assertJsonEquals("openrtb2/bidstack/test-auction-bidstack-response.json", response, singletonList("bidstack")); } - } diff --git a/src/test/java/org/prebid/server/it/BlastoTest.java b/src/test/java/org/prebid/server/it/BlastoTest.java index e26d75e6ca1..8cc2af3f8f4 100644 --- a/src/test/java/org/prebid/server/it/BlastoTest.java +++ b/src/test/java/org/prebid/server/it/BlastoTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class BlastoTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromBlasto() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/blasto-exchange")) - .withQueryParam("source", equalTo("sourceId")) - .withQueryParam("account", equalTo("accountId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/blasto/test-blasto-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/blasto/test-blasto-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/CointrafficTest.java b/src/test/java/org/prebid/server/it/CointrafficTest.java index ea4a0bd717b..9da2dbe73fa 100644 --- a/src/test/java/org/prebid/server/it/CointrafficTest.java +++ b/src/test/java/org/prebid/server/it/CointrafficTest.java @@ -25,8 +25,7 @@ public void openrtb2AuctionShouldRespondWithBidsFromCointraffic() throws IOExcep // when final Response response = responseFor( "openrtb2/cointraffic/test-auction-cointraffic-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals( @@ -34,5 +33,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromCointraffic() throws IOExcep response, List.of("cointraffic")); } - } diff --git a/src/test/java/org/prebid/server/it/DisplayioTest.java b/src/test/java/org/prebid/server/it/DisplayioTest.java index 716faaa1268..1c60057ddff 100644 --- a/src/test/java/org/prebid/server/it/DisplayioTest.java +++ b/src/test/java/org/prebid/server/it/DisplayioTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,18 +19,15 @@ public class DisplayioTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromDisplayio() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/displayio-exchange")) - .withQueryParam("publisher", equalTo("publisherId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/displayio/test-displayio-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/displayio/test-displayio-bid-response.json")))); // when final Response response = responseFor( "openrtb2/displayio/test-auction-displayio-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/displayio/test-auction-displayio-response.json", response, List.of("displayio")); } - } diff --git a/src/test/java/org/prebid/server/it/DriftpixelTest.java b/src/test/java/org/prebid/server/it/DriftpixelTest.java index 9285c87ce92..0f113f32533 100644 --- a/src/test/java/org/prebid/server/it/DriftpixelTest.java +++ b/src/test/java/org/prebid/server/it/DriftpixelTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,19 +19,15 @@ public class DriftpixelTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromDriftpixel() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/driftpixel-exchange")) - .withQueryParam("env", equalTo("env")) - .withQueryParam("pid", equalTo("pid")) .withRequestBody(equalToJson(jsonFrom("openrtb2/driftpixel/test-driftpixel-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/driftpixel/test-driftpixel-bid-response.json")))); // when final Response response = responseFor( "openrtb2/driftpixel/test-auction-driftpixel-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/driftpixel/test-auction-driftpixel-response.json", response, List.of("driftpixel")); } - } diff --git a/src/test/java/org/prebid/server/it/Edge226Test.java b/src/test/java/org/prebid/server/it/Edge226Test.java index e685b96d9be..864dde627a1 100644 --- a/src/test/java/org/prebid/server/it/Edge226Test.java +++ b/src/test/java/org/prebid/server/it/Edge226Test.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromEdge226() throws IOException // when final Response response = responseFor( "openrtb2/edge226/test-auction-edge226-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/edge226/test-auction-edge226-response.json", response, List.of("edge226")); } - } diff --git a/src/test/java/org/prebid/server/it/EmbimediaTest.java b/src/test/java/org/prebid/server/it/EmbimediaTest.java index 0d6f76e110a..59afb6dc056 100644 --- a/src/test/java/org/prebid/server/it/EmbimediaTest.java +++ b/src/test/java/org/prebid/server/it/EmbimediaTest.java @@ -18,7 +18,7 @@ public class EmbimediaTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheEmbimediaBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/embimedia-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/embimedia-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/embimedia/test-embimedia-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/EplanningTest.java b/src/test/java/org/prebid/server/it/EplanningTest.java index d8e95e45b2f..9b42ddc8637 100644 --- a/src/test/java/org/prebid/server/it/EplanningTest.java +++ b/src/test/java/org/prebid/server/it/EplanningTest.java @@ -17,7 +17,7 @@ public class EplanningTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromEplanning() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(get(urlPathEqualTo("/eplanning-exchange/12345/1/www.example.com/ROS")) + WIRE_MOCK_RULE.stubFor(get(urlPathEqualTo("/eplanning-exchange")) .willReturn(aResponse().withBody(jsonFrom("openrtb2/eplanning/test-eplanning-bid-response.json")))); // when diff --git a/src/test/java/org/prebid/server/it/EquativTest.java b/src/test/java/org/prebid/server/it/EquativTest.java index e3464330edd..5120be07117 100644 --- a/src/test/java/org/prebid/server/it/EquativTest.java +++ b/src/test/java/org/prebid/server/it/EquativTest.java @@ -18,7 +18,7 @@ public class EquativTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromEquativ() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-exchange/api/bid")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-exchange")) .withRequestBody( equalToJson(jsonFrom("openrtb2/equativ/test-equativ-bid-request.json"))) .willReturn(aResponse() diff --git a/src/test/java/org/prebid/server/it/EscalaxTest.java b/src/test/java/org/prebid/server/it/EscalaxTest.java index 30831d991e5..f64f9d975ba 100644 --- a/src/test/java/org/prebid/server/it/EscalaxTest.java +++ b/src/test/java/org/prebid/server/it/EscalaxTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class EscalaxTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromEscalax() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/escalax-exchange")) - .withQueryParam("k", equalTo("testAccountId")) - .withQueryParam("name", equalTo("testSourceId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/escalax/test-escalax-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/escalax/test-escalax-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/FelixadsTest.java b/src/test/java/org/prebid/server/it/FelixadsTest.java index 30e90dd0ba5..1b69eea6888 100644 --- a/src/test/java/org/prebid/server/it/FelixadsTest.java +++ b/src/test/java/org/prebid/server/it/FelixadsTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class FelixadsTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromFelixads() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/felixads-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/felixads/test-felixads-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/felixads/test-felixads-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/FilmzieTest.java b/src/test/java/org/prebid/server/it/FilmzieTest.java index fefbffb6e74..82ff99a86d5 100644 --- a/src/test/java/org/prebid/server/it/FilmzieTest.java +++ b/src/test/java/org/prebid/server/it/FilmzieTest.java @@ -18,7 +18,7 @@ public class FilmzieTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheFilmzieBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/filmzie-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/filmzie-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/filmzie/test-filmzie-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/FinativeTest.java b/src/test/java/org/prebid/server/it/FinativeTest.java index dd1afd93547..974fa706554 100644 --- a/src/test/java/org/prebid/server/it/FinativeTest.java +++ b/src/test/java/org/prebid/server/it/FinativeTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class FinativeTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromFinative() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/finative-exchange")) - .withQueryParam("ssp", equalTo("pbs")) .withRequestBody(equalToJson( jsonFrom("openrtb2/finative/test-finative-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/GothamAdsTest.java b/src/test/java/org/prebid/server/it/GothamAdsTest.java index d6a0cde8428..34899f38a66 100644 --- a/src/test/java/org/prebid/server/it/GothamAdsTest.java +++ b/src/test/java/org/prebid/server/it/GothamAdsTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromGothamAds() throws IOExcepti // when final Response response = responseFor( "openrtb2/gothamads/test-auction-gothamads-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/gothamads/test-auction-gothamads-response.json", response, List.of("gothamads")); } - } diff --git a/src/test/java/org/prebid/server/it/GreedyGameTest.java b/src/test/java/org/prebid/server/it/GreedyGameTest.java index b6dc46362fd..bb6779dea76 100644 --- a/src/test/java/org/prebid/server/it/GreedyGameTest.java +++ b/src/test/java/org/prebid/server/it/GreedyGameTest.java @@ -18,7 +18,7 @@ public class GreedyGameTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheGreedyGameBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/greedygame-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/greedygame-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/greedygame/test-greedygame-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/HuaweiAdsTest.java b/src/test/java/org/prebid/server/it/HuaweiAdsTest.java index f28d319ceb3..6e19912a7a9 100644 --- a/src/test/java/org/prebid/server/it/HuaweiAdsTest.java +++ b/src/test/java/org/prebid/server/it/HuaweiAdsTest.java @@ -483,5 +483,4 @@ public void testOpenrtb2AuctionVideo() throws IOException, JSONException { // then assertJsonEquals("openrtb2/huaweiads/simple_video/" + AUCTION_RESPONSE, response, List.of("huaweiads")); } - } diff --git a/src/test/java/org/prebid/server/it/IionadsTest.java b/src/test/java/org/prebid/server/it/IionadsTest.java index 8df69d51148..69cda412c39 100644 --- a/src/test/java/org/prebid/server/it/IionadsTest.java +++ b/src/test/java/org/prebid/server/it/IionadsTest.java @@ -18,7 +18,7 @@ public class IionadsTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheiionadsBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/iionads-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/iionads-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/iionads/test-iionads-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/InsticatorTest.java b/src/test/java/org/prebid/server/it/InsticatorTest.java index 4a96954e5c5..0ea723f451f 100644 --- a/src/test/java/org/prebid/server/it/InsticatorTest.java +++ b/src/test/java/org/prebid/server/it/InsticatorTest.java @@ -32,5 +32,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromInsticator() throws IOExcept response, singletonList("insticator")); } - } diff --git a/src/test/java/org/prebid/server/it/IntegrationTest.java b/src/test/java/org/prebid/server/it/IntegrationTest.java index 7b8d42e0dc0..6b9c6dbe83f 100644 --- a/src/test/java/org/prebid/server/it/IntegrationTest.java +++ b/src/test/java/org/prebid/server/it/IntegrationTest.java @@ -12,7 +12,6 @@ import io.restassured.internal.mapping.Jackson2Mapper; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; -import lombok.Value; import org.apache.commons.lang3.StringUtils; import org.json.JSONException; import org.junit.jupiter.api.AfterEach; @@ -303,15 +302,4 @@ public boolean applyGlobally() { return false; } } - - @Value(staticConstructor = "of") - static class BidRequestExecutionParameters { - String dealId; - - String body; - - Integer status; - - Long delay; - } } diff --git a/src/test/java/org/prebid/server/it/IntenzeTest.java b/src/test/java/org/prebid/server/it/IntenzeTest.java index bd662312fae..6f8252572a8 100644 --- a/src/test/java/org/prebid/server/it/IntenzeTest.java +++ b/src/test/java/org/prebid/server/it/IntenzeTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromIntenze() throws IOException // when final Response response = responseFor( "openrtb2/intenze/test-auction-intenze-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/intenze/test-auction-intenze-response.json", response, List.of("intenze")); } - } diff --git a/src/test/java/org/prebid/server/it/IqzoneTest.java b/src/test/java/org/prebid/server/it/IqzoneTest.java index f7671ee893e..ff339b6e8e2 100644 --- a/src/test/java/org/prebid/server/it/IqzoneTest.java +++ b/src/test/java/org/prebid/server/it/IqzoneTest.java @@ -29,5 +29,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromIqzone() throws IOException, // then assertJsonEquals("openrtb2/iqzone/test-auction-iqzone-response.json", response, singletonList("iqzone")); } - } diff --git a/src/test/java/org/prebid/server/it/JambojarTest.java b/src/test/java/org/prebid/server/it/JambojarTest.java index e96972bb5b7..4c030f11f9e 100644 --- a/src/test/java/org/prebid/server/it/JambojarTest.java +++ b/src/test/java/org/prebid/server/it/JambojarTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class JambojarTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromJambojar() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/jambojar-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/jambojar/test-jambojar-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/jambojar/test-jambojar-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/JdpMediaTest.java b/src/test/java/org/prebid/server/it/JdpMediaTest.java index edecf8e22e6..2cdf4d91c6c 100644 --- a/src/test/java/org/prebid/server/it/JdpMediaTest.java +++ b/src/test/java/org/prebid/server/it/JdpMediaTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class JdpMediaTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromJdpMedia() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/jdpmedia-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/jdpmedia/test-jdpmedia-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/jdpmedia/test-jdpmedia-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/KuantyxTest.java b/src/test/java/org/prebid/server/it/KuantyxTest.java index 853feb95345..9cdb2deef52 100644 --- a/src/test/java/org/prebid/server/it/KuantyxTest.java +++ b/src/test/java/org/prebid/server/it/KuantyxTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class KuantyxTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromKuantyx() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/kuantyx-exchange")) - .withQueryParam("zid", equalTo("1")) .withRequestBody(equalToJson( jsonFrom("openrtb2/kuantyx/test-kuantyx-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/LemmaDigitalTest.java b/src/test/java/org/prebid/server/it/LemmaDigitalTest.java index 1016b475b23..63f2d685ed2 100644 --- a/src/test/java/org/prebid/server/it/LemmaDigitalTest.java +++ b/src/test/java/org/prebid/server/it/LemmaDigitalTest.java @@ -18,7 +18,7 @@ public class LemmaDigitalTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheLemmaDigitalBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/lemmadigital-exchange/123/312")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/lemmadigital-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/lemmaDigital/test-lemmaDigital-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/LimeLightDigitalTest.java b/src/test/java/org/prebid/server/it/LimeLightDigitalTest.java index 882ae4b94ef..d1bb1fbf3e7 100644 --- a/src/test/java/org/prebid/server/it/LimeLightDigitalTest.java +++ b/src/test/java/org/prebid/server/it/LimeLightDigitalTest.java @@ -18,7 +18,7 @@ public class LimeLightDigitalTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheLimeLightDigitalBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/limelightDigital-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/limelightDigital-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/limelightDigital/test-limelightDigital-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/LmKiviAdsTest.java b/src/test/java/org/prebid/server/it/LmKiviAdsTest.java index 12d97974193..61760f38f20 100644 --- a/src/test/java/org/prebid/server/it/LmKiviAdsTest.java +++ b/src/test/java/org/prebid/server/it/LmKiviAdsTest.java @@ -18,7 +18,7 @@ public class LmKiviAdsTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheLmKiviAdsBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/lm-kiviads-exchange/test2/test1")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/lm-kiviads-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/lmkiviads/test-lmkiviads-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/MarkappTest.java b/src/test/java/org/prebid/server/it/MarkappTest.java index 077009a306f..95ac4de211b 100644 --- a/src/test/java/org/prebid/server/it/MarkappTest.java +++ b/src/test/java/org/prebid/server/it/MarkappTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class MarkappTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMarkapp() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/markapp-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/markapp/test-markapp-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/markapp/test-markapp-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/MarsmediaTest.java b/src/test/java/org/prebid/server/it/MarsmediaTest.java index 54d4c555fc7..76aca18cab7 100644 --- a/src/test/java/org/prebid/server/it/MarsmediaTest.java +++ b/src/test/java/org/prebid/server/it/MarsmediaTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class MarsmediaTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMarsmedia() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/marsmedia-exchange")) - .withQueryParam("param", equalTo("testParam")) - .withQueryParam("zone", equalTo("999")) .withRequestBody(equalToJson(jsonFrom("openrtb2/marsmedia/test-marsmedia-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/marsmedia/test-marsmedia-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/MediaGoTest.java b/src/test/java/org/prebid/server/it/MediaGoTest.java index c0598c8e3d7..035d3f5e26c 100644 --- a/src/test/java/org/prebid/server/it/MediaGoTest.java +++ b/src/test/java/org/prebid/server/it/MediaGoTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,19 +19,15 @@ public class MediaGoTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMediago() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/mediago-exchange")) - .withQueryParam("token", equalTo("request_token")) - .withQueryParam("region", equalTo("jp")) .withRequestBody(equalToJson(jsonFrom("openrtb2/mediago/test-mediago-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/mediago/test-mediago-bid-response.json")))); // when final Response response = responseFor( "openrtb2/mediago/test-auction-mediago-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/mediago/test-auction-mediago-response.json", response, List.of("mediago")); } - } diff --git a/src/test/java/org/prebid/server/it/MediasquareTest.java b/src/test/java/org/prebid/server/it/MediasquareTest.java index f246637921d..957fb4889fa 100644 --- a/src/test/java/org/prebid/server/it/MediasquareTest.java +++ b/src/test/java/org/prebid/server/it/MediasquareTest.java @@ -33,5 +33,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromMediasquare() throws IOExcep response, List.of("mediasquare")); } - } diff --git a/src/test/java/org/prebid/server/it/MeloZenTest.java b/src/test/java/org/prebid/server/it/MeloZenTest.java index 185aa894a2f..626c840930d 100644 --- a/src/test/java/org/prebid/server/it/MeloZenTest.java +++ b/src/test/java/org/prebid/server/it/MeloZenTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,18 +19,15 @@ public class MeloZenTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMelozen() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/melozen-exchange")) - .withQueryParam("pubId", equalTo("publisherId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/melozen/test-melozen-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/melozen/test-melozen-bid-response.json")))); // when final Response response = responseFor( "openrtb2/melozen/test-auction-melozen-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/melozen/test-auction-melozen-response.json", response, List.of("melozen")); } - } diff --git a/src/test/java/org/prebid/server/it/MetaxTest.java b/src/test/java/org/prebid/server/it/MetaxTest.java index f51a55e55c2..acdc3e62813 100644 --- a/src/test/java/org/prebid/server/it/MetaxTest.java +++ b/src/test/java/org/prebid/server/it/MetaxTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class MetaxTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMetax() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/metax-exchange")) - .withQueryParam("publisher_id", equalTo("123")) - .withQueryParam("adunit", equalTo("456")) .withRequestBody(equalToJson(jsonFrom("openrtb2/metax/test-metax-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/metax/test-metax-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/MinuteMediaTest.java b/src/test/java/org/prebid/server/it/MinuteMediaTest.java index 2f8c591dc08..5bbb4816613 100644 --- a/src/test/java/org/prebid/server/it/MinuteMediaTest.java +++ b/src/test/java/org/prebid/server/it/MinuteMediaTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class MinuteMediaTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMinuteMedia() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/minutemedia-exchange")) - .withQueryParam("publisherId", equalTo("123")) .withRequestBody(equalToJson(jsonFrom("openrtb2/minutemedia/test-minutemedia-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/minutemedia/test-minutemedia-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/MobkoiTest.java b/src/test/java/org/prebid/server/it/MobkoiTest.java index 1246f6d82f2..fb08125c2bf 100644 --- a/src/test/java/org/prebid/server/it/MobkoiTest.java +++ b/src/test/java/org/prebid/server/it/MobkoiTest.java @@ -25,8 +25,7 @@ public void openrtb2AuctionShouldRespondWithBidsFromMobkoi() throws IOException, // when final Response response = responseFor( "openrtb2/mobkoi/test-auction-mobkoi-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/mobkoi/test-auction-mobkoi-response.json", response, singletonList("mobkoi")); diff --git a/src/test/java/org/prebid/server/it/MonetixAdsTest.java b/src/test/java/org/prebid/server/it/MonetixAdsTest.java index 8ada0c373bf..76d06e3bedd 100644 --- a/src/test/java/org/prebid/server/it/MonetixAdsTest.java +++ b/src/test/java/org/prebid/server/it/MonetixAdsTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class MonetixAdsTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMonetixAds() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/monetixads-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/monetixads/test-monetixads-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/monetixads/test-monetixads-bid-response.json")))); @@ -32,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromMonetixAds() throws IOExcept // then assertJsonEquals("openrtb2/monetixads/test-auction-monetixads-response.json", response, List.of("monetixads")); } - } diff --git a/src/test/java/org/prebid/server/it/MotorikTest.java b/src/test/java/org/prebid/server/it/MotorikTest.java index 73785cee7b8..8be27d80437 100644 --- a/src/test/java/org/prebid/server/it/MotorikTest.java +++ b/src/test/java/org/prebid/server/it/MotorikTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,8 +19,6 @@ public class MotorikTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromMotorik() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/motorik-exchange")) - .withQueryParam("k", equalTo("testAccountId")) - .withQueryParam("name", equalTo("testPlacementId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/motorik/test-motorik-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/motorik/test-motorik-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/NetAddictionTest.java b/src/test/java/org/prebid/server/it/NetAddictionTest.java index d9f1a815820..b5b106189df 100644 --- a/src/test/java/org/prebid/server/it/NetAddictionTest.java +++ b/src/test/java/org/prebid/server/it/NetAddictionTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class NetAddictionTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromNetaddiction() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/netaddiction-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson( jsonFrom("openrtb2/netaddiction/test-netaddiction-bid-request.json"))) .willReturn(aResponse().withBody( @@ -37,5 +35,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromNetaddiction() throws IOExce response, List.of("netaddiction")); } - } diff --git a/src/test/java/org/prebid/server/it/OmnidexTest.java b/src/test/java/org/prebid/server/it/OmnidexTest.java index 8280a8f7e91..87d91db8123 100644 --- a/src/test/java/org/prebid/server/it/OmnidexTest.java +++ b/src/test/java/org/prebid/server/it/OmnidexTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromOmnidex() throws IOException // when final Response response = responseFor( "openrtb2/omnidex/test-auction-omnidex-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/omnidex/test-auction-omnidex-response.json", response, List.of("omnidex")); } - } diff --git a/src/test/java/org/prebid/server/it/OwnAdxTest.java b/src/test/java/org/prebid/server/it/OwnAdxTest.java index 70c4d6e7686..f84db923933 100644 --- a/src/test/java/org/prebid/server/it/OwnAdxTest.java +++ b/src/test/java/org/prebid/server/it/OwnAdxTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -19,8 +18,7 @@ public class OwnAdxTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromOwnAdx() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/ownadx-exchange/bid/testSeatId/testSspId")) - .withQueryParam("token", equalTo("testTokenId")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/ownadx-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/ownadx/test-ownadx-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/ownadx/test-ownadx-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/PgamSspTest.java b/src/test/java/org/prebid/server/it/PgamSspTest.java index 6a574f5a6ed..845e209be29 100644 --- a/src/test/java/org/prebid/server/it/PgamSspTest.java +++ b/src/test/java/org/prebid/server/it/PgamSspTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromPgamSsp() throws IOException // when final Response response = responseFor( "openrtb2/pgamssp/test-auction-pgamssp-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/pgamssp/test-auction-pgamssp-response.json", response, List.of("pgamssp")); } - } diff --git a/src/test/java/org/prebid/server/it/PixadTest.java b/src/test/java/org/prebid/server/it/PixadTest.java index a15c2013d00..bd68e87de8d 100644 --- a/src/test/java/org/prebid/server/it/PixadTest.java +++ b/src/test/java/org/prebid/server/it/PixadTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class PixadTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFrompixad() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/pixad-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/pixad/test-pixad-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/pixad/test-pixad-bid-response.json")))); @@ -32,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFrompixad() throws IOException, // then assertJsonEquals("openrtb2/pixad/test-auction-pixad-response.json", response, List.of("pixad")); } - } diff --git a/src/test/java/org/prebid/server/it/PrecisoTest.java b/src/test/java/org/prebid/server/it/PrecisoTest.java index da461016e64..3bcba9a210f 100644 --- a/src/test/java/org/prebid/server/it/PrecisoTest.java +++ b/src/test/java/org/prebid/server/it/PrecisoTest.java @@ -31,5 +31,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromPreciso() throws IOException // then assertJsonEquals("openrtb2/preciso/test-auction-preciso-response.json", response, singletonList("preciso")); } - } diff --git a/src/test/java/org/prebid/server/it/ProgxTest.java b/src/test/java/org/prebid/server/it/ProgxTest.java index c84a146ba7d..5d3b0cf3b52 100644 --- a/src/test/java/org/prebid/server/it/ProgxTest.java +++ b/src/test/java/org/prebid/server/it/ProgxTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromProgx() throws IOException, // when final Response response = responseFor( "openrtb2/progx/test-auction-progx-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/progx/test-auction-progx-response.json", response, List.of("progx")); } - } diff --git a/src/test/java/org/prebid/server/it/RadianfusionTest.java b/src/test/java/org/prebid/server/it/RadianfusionTest.java index 52b401de7b3..d38369431e3 100644 --- a/src/test/java/org/prebid/server/it/RadianfusionTest.java +++ b/src/test/java/org/prebid/server/it/RadianfusionTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class RadianfusionTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromRadianfusion() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/radianfusion-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/radianfusion/test-radianfusion-bid-request.json"))) .willReturn(aResponse().withBody( jsonFrom("openrtb2/radianfusion/test-radianfusion-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/RelevantDigitalTest.java b/src/test/java/org/prebid/server/it/RelevantDigitalTest.java index 0d46c9e0a41..f71ac85e659 100644 --- a/src/test/java/org/prebid/server/it/RelevantDigitalTest.java +++ b/src/test/java/org/prebid/server/it/RelevantDigitalTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class RelevantDigitalTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromRelevantDigital() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/relevantdigital-exchange")) - .withQueryParam("pbsHost", equalTo("testHost")) .withRequestBody( equalToJson(jsonFrom("openrtb2/relevantdigital/test-relevantdigital-bid-request.json"))) .willReturn(aResponse() diff --git a/src/test/java/org/prebid/server/it/RoulaxTest.java b/src/test/java/org/prebid/server/it/RoulaxTest.java index ded8416d107..e01a195fee6 100644 --- a/src/test/java/org/prebid/server/it/RoulaxTest.java +++ b/src/test/java/org/prebid/server/it/RoulaxTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -19,8 +18,7 @@ public class RoulaxTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheRoulaxBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/roulax-exchange/testPublisherPath")) - .withQueryParam("pid", equalTo("testPid")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/roulax-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/roulax/test-roulax-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/ScreencoreTest.java b/src/test/java/org/prebid/server/it/ScreencoreTest.java index f059b6b3ed2..4a385ce079d 100644 --- a/src/test/java/org/prebid/server/it/ScreencoreTest.java +++ b/src/test/java/org/prebid/server/it/ScreencoreTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromScreencore() throws IOExcept // when final Response response = responseFor( "openrtb2/screencore/test-auction-screencore-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/screencore/test-auction-screencore-response.json", response, List.of("screencore")); } - } diff --git a/src/test/java/org/prebid/server/it/SeedingAllianceTest.java b/src/test/java/org/prebid/server/it/SeedingAllianceTest.java index 0dd5a75dbfb..e8e01847faa 100644 --- a/src/test/java/org/prebid/server/it/SeedingAllianceTest.java +++ b/src/test/java/org/prebid/server/it/SeedingAllianceTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class SeedingAllianceTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromSeedingAlliance() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/seedingAlliance-exchange")) - .withQueryParam("ssp", equalTo("accountId")) .withRequestBody(equalToJson( jsonFrom("openrtb2/seedingAlliance/test-seedingAlliance-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/SmartadserverTest.java b/src/test/java/org/prebid/server/it/SmartadserverTest.java index d5c06731c12..4b006082722 100644 --- a/src/test/java/org/prebid/server/it/SmartadserverTest.java +++ b/src/test/java/org/prebid/server/it/SmartadserverTest.java @@ -18,7 +18,7 @@ public class SmartadserverTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromSmartadserver() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-pg-exchange/ortb")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartadserver-pg-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smartadserver/test-smartadserver-bid-request.json"))) .willReturn(aResponse() .withBody(jsonFrom("openrtb2/smartadserver/test-smartadserver-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/SmarthubTest.java b/src/test/java/org/prebid/server/it/SmarthubTest.java index 97bef6278f8..bf0a91649ef 100644 --- a/src/test/java/org/prebid/server/it/SmarthubTest.java +++ b/src/test/java/org/prebid/server/it/SmarthubTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class SmarthubTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromSmarthub() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smarthub-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smarthub/test-smarthub-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/smarthub/test-smarthub-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/SmileWantedTest.java b/src/test/java/org/prebid/server/it/SmileWantedTest.java index f4d24e0de28..172d2063711 100644 --- a/src/test/java/org/prebid/server/it/SmileWantedTest.java +++ b/src/test/java/org/prebid/server/it/SmileWantedTest.java @@ -18,7 +18,7 @@ public class SmileWantedTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromSmileWanted() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smilewanted-exchange/java/someZoneId")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smilewanted-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smilewanted/test-smilewanted-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom( "openrtb2/smilewanted/test-smilewanted-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/SmrtconnectTest.java b/src/test/java/org/prebid/server/it/SmrtconnectTest.java index 3fa46ad8be2..8f225cb8f58 100644 --- a/src/test/java/org/prebid/server/it/SmrtconnectTest.java +++ b/src/test/java/org/prebid/server/it/SmrtconnectTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class SmrtconnectTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromTheSmrtconnect() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smrtconnect-exchange")) - .withQueryParam("supply_id", equalTo("1")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smrtconnect/test-smrtconnect-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/smrtconnect/test-smrtconnect-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/StreamlynTest.java b/src/test/java/org/prebid/server/it/StreamlynTest.java index b482c4d2192..230cae2f146 100644 --- a/src/test/java/org/prebid/server/it/StreamlynTest.java +++ b/src/test/java/org/prebid/server/it/StreamlynTest.java @@ -18,7 +18,7 @@ public class StreamlynTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheStreamlynBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/streamlyn-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/streamlyn-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/streamlyn/test-streamlyn-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/StreamvisionTest.java b/src/test/java/org/prebid/server/it/StreamvisionTest.java index ec85af20996..443dda3838c 100644 --- a/src/test/java/org/prebid/server/it/StreamvisionTest.java +++ b/src/test/java/org/prebid/server/it/StreamvisionTest.java @@ -18,7 +18,7 @@ public class StreamvisionTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheStreamvisionBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/streamvision-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/streamvision-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/streamvision/test-streamvision-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/SuntContentTest.java b/src/test/java/org/prebid/server/it/SuntContentTest.java index b36584690d8..8e2af9547ff 100644 --- a/src/test/java/org/prebid/server/it/SuntContentTest.java +++ b/src/test/java/org/prebid/server/it/SuntContentTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class SuntContentTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromSuntContent() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/suntContent-exchange")) - .withQueryParam("ssp", equalTo("pbs")) .withRequestBody(equalToJson( jsonFrom("openrtb2/suntContent/test-suntContent-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/TagorasTest.java b/src/test/java/org/prebid/server/it/TagorasTest.java index 70daa9f10fe..2e9acdde5a4 100644 --- a/src/test/java/org/prebid/server/it/TagorasTest.java +++ b/src/test/java/org/prebid/server/it/TagorasTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromTagoras() throws IOException // when final Response response = responseFor( "openrtb2/tagoras/test-auction-tagoras-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/tagoras/test-auction-tagoras-response.json", response, List.of("tagoras")); } - } diff --git a/src/test/java/org/prebid/server/it/TappxTest.java b/src/test/java/org/prebid/server/it/TappxTest.java index 17ab6f1fa17..e118a18baff 100644 --- a/src/test/java/org/prebid/server/it/TappxTest.java +++ b/src/test/java/org/prebid/server/it/TappxTest.java @@ -18,7 +18,7 @@ public class TappxTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTappx() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tappx-exchange/rtb/v2/test")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tappx-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/tappx/test-tappx-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/tappx/test-tappx-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/TeadsTest.java b/src/test/java/org/prebid/server/it/TeadsTest.java index 405bf361bac..716edd5411a 100644 --- a/src/test/java/org/prebid/server/it/TeadsTest.java +++ b/src/test/java/org/prebid/server/it/TeadsTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromTeads() throws IOException, // when final Response response = responseFor( "openrtb2/teads/test-auction-teads-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/teads/test-auction-teads-response.json", response, List.of("teads")); } - } diff --git a/src/test/java/org/prebid/server/it/TgmTest.java b/src/test/java/org/prebid/server/it/TgmTest.java index e94e25abe08..e623225ddc4 100644 --- a/src/test/java/org/prebid/server/it/TgmTest.java +++ b/src/test/java/org/prebid/server/it/TgmTest.java @@ -18,7 +18,7 @@ public class TgmTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheTgmBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tgm-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tgm-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/tgm/test-tgm-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/TheTradeDeskTest.java b/src/test/java/org/prebid/server/it/TheTradeDeskTest.java index f2ea877239f..451513afee6 100644 --- a/src/test/java/org/prebid/server/it/TheTradeDeskTest.java +++ b/src/test/java/org/prebid/server/it/TheTradeDeskTest.java @@ -18,7 +18,7 @@ public class TheTradeDeskTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheTradeDesk() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/thetradedesk-exchange/somesupplyid")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/thetradedesk-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/thetradedesk/test-thetradedesk-bid-request.json"))) .willReturn(aResponse().withBody( @@ -27,8 +27,7 @@ public void openrtb2AuctionShouldRespondWithBidsFromTheTradeDesk() throws IOExce // when final Response response = responseFor( "openrtb2/thetradedesk/test-auction-thetradedesk-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals( @@ -36,5 +35,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromTheTradeDesk() throws IOExce response, List.of("thetradedesk")); } - } diff --git a/src/test/java/org/prebid/server/it/TradPlusTest.java b/src/test/java/org/prebid/server/it/TradPlusTest.java index 894bc3e4da3..8893ebed482 100644 --- a/src/test/java/org/prebid/server/it/TradPlusTest.java +++ b/src/test/java/org/prebid/server/it/TradPlusTest.java @@ -18,7 +18,7 @@ public class TradPlusTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTradPlus() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/accountTestID/tradplus-exchange")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tradplus-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/tradplus/test-tradplus-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/tradplus/test-tradplus-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/TredioTest.java b/src/test/java/org/prebid/server/it/TredioTest.java index 5b37321abac..4e4e6411a68 100644 --- a/src/test/java/org/prebid/server/it/TredioTest.java +++ b/src/test/java/org/prebid/server/it/TredioTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,9 +19,6 @@ public class TredioTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromTredio() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/tredio-exchange")) - .withQueryParam("host", equalTo("someUniquePartnerName")) - .withQueryParam("accountId", equalTo("someSeat")) - .withQueryParam("sourceId", equalTo("someToken")) .withRequestBody(equalToJson(jsonFrom("openrtb2/tredio/test-tredio-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/tredio/test-tredio-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/UndertoneTest.java b/src/test/java/org/prebid/server/it/UndertoneTest.java index 89f781a86f7..23c6a947c70 100644 --- a/src/test/java/org/prebid/server/it/UndertoneTest.java +++ b/src/test/java/org/prebid/server/it/UndertoneTest.java @@ -31,5 +31,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromUndertone() throws IOExcepti response, singletonList("undertone")); } - } diff --git a/src/test/java/org/prebid/server/it/VidazooTest.java b/src/test/java/org/prebid/server/it/VidazooTest.java index 475d504a1f4..caa94f564a4 100644 --- a/src/test/java/org/prebid/server/it/VidazooTest.java +++ b/src/test/java/org/prebid/server/it/VidazooTest.java @@ -25,11 +25,9 @@ public void openrtb2AuctionShouldRespondWithBidsFromVidazoo() throws IOException // when final Response response = responseFor( "openrtb2/vidazoo/test-auction-vidazoo-request.json", - Endpoint.openrtb2_auction - ); + Endpoint.openrtb2_auction); // then assertJsonEquals("openrtb2/vidazoo/test-auction-vidazoo-response.json", response, List.of("vidazoo")); } - } diff --git a/src/test/java/org/prebid/server/it/VideoHeroesTest.java b/src/test/java/org/prebid/server/it/VideoHeroesTest.java index c9d6c6eac8c..496adef3314 100644 --- a/src/test/java/org/prebid/server/it/VideoHeroesTest.java +++ b/src/test/java/org/prebid/server/it/VideoHeroesTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class VideoHeroesTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromvideoheroes() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/videoheroes-exchange")) - .withQueryParam("partner", equalTo("somePlacementId")) .withRequestBody(equalToJson(jsonFrom("openrtb2/videoheroes/test-videoheroes-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/videoheroes/test-videoheroes-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/XtrmqbTest.java b/src/test/java/org/prebid/server/it/XtrmqbTest.java index 4eba28bb289..8da478d1077 100644 --- a/src/test/java/org/prebid/server/it/XtrmqbTest.java +++ b/src/test/java/org/prebid/server/it/XtrmqbTest.java @@ -18,7 +18,7 @@ public class XtrmqbTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheXtrmqbBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/xtrmqb-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/xtrmqb-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/xtrmqb/test-xtrmqb-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/it/YobeeTest.java b/src/test/java/org/prebid/server/it/YobeeTest.java index 5253e6e429a..232df984a07 100644 --- a/src/test/java/org/prebid/server/it/YobeeTest.java +++ b/src/test/java/org/prebid/server/it/YobeeTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; @@ -20,7 +19,6 @@ public class YobeeTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromYobee() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/yobee-exchange")) - .withQueryParam("host", equalTo("host")) .withRequestBody(equalToJson(jsonFrom("openrtb2/yobee/test-yobee-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/yobee/test-yobee-bid-response.json")))); @@ -32,5 +30,4 @@ public void openrtb2AuctionShouldRespondWithBidsFromYobee() throws IOException, // then assertJsonEquals("openrtb2/yobee/test-auction-yobee-response.json", response, List.of("yobee")); } - } diff --git a/src/test/java/org/prebid/server/it/hooks/SampleItExitpointHook.java b/src/test/java/org/prebid/server/it/hooks/SampleItExitpointHook.java index 82a494e7158..e08bd307e3c 100644 --- a/src/test/java/org/prebid/server/it/hooks/SampleItExitpointHook.java +++ b/src/test/java/org/prebid/server/it/hooks/SampleItExitpointHook.java @@ -76,5 +76,4 @@ private List updateBids(List seatBids) { public String code() { return "exitpoint"; } - } diff --git a/src/test/java/org/prebid/server/json/JsonMergerTest.java b/src/test/java/org/prebid/server/json/JsonMergerTest.java index 33551d129a8..14ba00fd600 100644 --- a/src/test/java/org/prebid/server/json/JsonMergerTest.java +++ b/src/test/java/org/prebid/server/json/JsonMergerTest.java @@ -94,5 +94,4 @@ public void mergeShouldReturnMergedObjectWhenOriginalObjectIsNull() { // then assertThat(result).isEqualTo(site); } - } diff --git a/src/test/java/org/prebid/server/orangeclickmedia/OrangeClickMediaTest.java b/src/test/java/org/prebid/server/orangeclickmedia/OrangeClickMediaTest.java index 12976f9da83..eabb6359327 100644 --- a/src/test/java/org/prebid/server/orangeclickmedia/OrangeClickMediaTest.java +++ b/src/test/java/org/prebid/server/orangeclickmedia/OrangeClickMediaTest.java @@ -19,7 +19,7 @@ public class OrangeClickMediaTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromTheOrangeClickMediaBidder() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/orangeclickmedia-exchange/test.host/123456")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/orangeclickmedia-exchange")) .withRequestBody(equalToJson( jsonFrom("openrtb2/orangeclickmedia/test-orangeclickmedia-bid-request.json"))) .willReturn(aResponse().withBody( diff --git a/src/test/java/org/prebid/server/vertx/httpclient/BasicHttpClientTest.java b/src/test/java/org/prebid/server/vertx/httpclient/BasicHttpClientTest.java index 61618b362ea..76c6616f984 100644 --- a/src/test/java/org/prebid/server/vertx/httpclient/BasicHttpClientTest.java +++ b/src/test/java/org/prebid/server/vertx/httpclient/BasicHttpClientTest.java @@ -21,7 +21,6 @@ import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; -import java.net.MalformedURLException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.CountDownLatch; @@ -108,11 +107,13 @@ public void requestShouldAllowFollowingRedirections() { @Test public void requestShouldFailIfInvalidUrlPassed() { // given and when - final Future future = httpClient.request(HttpMethod.GET, null, null, (String) null, 1L); + final Future future = httpClient.request(HttpMethod.GET, "invalid_url", null, (String) null, 1L); // then assertThat(future.failed()).isTrue(); - assertThat(future.cause()).isInstanceOf(MalformedURLException.class); + assertThat(future.cause()) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("URL supplied is not valid: invalid_url"); } @Test From 595786766b9793e250e8670014316a1e72cac8c5 Mon Sep 17 00:00:00 2001 From: Danylo Date: Fri, 17 Apr 2026 18:38:47 +0200 Subject: [PATCH 5/6] Migrate bidders to use `UriTemplate` --- .../targeting/v1/net/APIClientImpl.java | 14 ++++--- .../server/bidder/aceex/AceexBidder.java | 9 +++-- .../bidder/acuityads/AcuityadsBidder.java | 14 ++++--- .../bidder/adelement/AdelementBidder.java | 12 +++--- .../server/bidder/adhese/AdheseBidder.java | 7 ++-- .../bidder/adkernel/AdkernelBidder.java | 7 ++-- .../bidder/adkerneladn/AdkernelAdnBidder.java | 9 +++-- .../server/bidder/admatic/AdmaticBidder.java | 9 +++-- .../prebid/server/bidder/adot/AdotBidder.java | 10 ++--- .../server/bidder/adtonos/AdtonosBidder.java | 10 ++--- .../advangelists/AdvangelistsBidder.java | 12 +++--- .../server/bidder/adverxo/AdverxoBidder.java | 15 +++---- .../server/bidder/adview/AdviewBidder.java | 12 +++--- .../server/bidder/adxcg/AdxcgBidder.java | 1 - .../server/bidder/afront/AfrontBidder.java | 14 ++++--- .../server/bidder/aidem/AidemBidder.java | 10 ++--- .../server/bidder/algorix/AlgorixBidder.java | 20 +++++----- .../prebid/server/bidder/aso/AsoBidder.java | 9 +++-- .../server/bidder/avocet/AvocetBidder.java | 5 +-- .../server/bidder/axonix/AxonixBidder.java | 10 ++--- .../bematterfull/BematterfullBidder.java | 14 ++++--- .../server/bidder/between/BetweenBidder.java | 16 ++++---- .../bidder/bidmachine/BidmachineBidder.java | 13 +++--- .../server/bidder/bigoad/BigoadBidder.java | 10 ++--- .../server/bidder/blasto/BlastoBidder.java | 14 ++++--- .../prebid/server/bidder/blis/BlisBidder.java | 9 +++-- .../boldwinrapid/BoldwinRapidBidder.java | 14 ++++--- .../server/bidder/brave/BraveBidder.java | 11 +++-- .../prebid/server/bidder/bwx/BwxBidder.java | 15 ++++--- .../server/bidder/clydo/ClydoBidder.java | 16 ++++---- .../bidder/contxtful/ContxtfulBidder.java | 9 +++-- .../bidder/datablocks/DatablocksBidder.java | 9 +++-- .../bidder/displayio/DisplayioBidder.java | 10 +++-- .../bidder/driftpixel/DriftpixelBidder.java | 15 +++---- .../bidder/elementaltv/ElementalTVBidder.java | 12 ++---- .../server/bidder/escalax/EscalaxBidder.java | 10 +++-- .../server/bidder/flatads/FlatadsBidder.java | 14 ++++--- .../bidder/gotthamads/GothamAdsBidder.java | 9 +++-- .../prebid/server/bidder/imds/ImdsBidder.java | 23 +++++------ .../improvedigital/ImprovedigitalBidder.java | 12 +++--- .../InteractiveOffersBidder.java | 8 ++-- .../bidder/intertech/IntertechBidder.java | 26 +++++------- .../server/bidder/invibes/InvibesBidder.java | 9 +++-- .../prebid/server/bidder/iqx/IqxBidder.java | 15 +++---- .../server/bidder/kayzen/KayzenBidder.java | 17 ++++---- .../bidder/krushmedia/KrushmediaBidder.java | 9 +++-- .../lemmadigital/LemmaDigitalBidder.java | 14 ++++--- .../LimeLightDigitalBidder.java | 17 ++++---- .../bidder/lmkiviads/LmKiviAdsBidder.java | 14 ++++--- .../bidder/lunamedia/LunamediaBidder.java | 9 ++--- .../bidder/madvertise/MadvertiseBidder.java | 9 +++-- .../server/bidder/mediago/MediaGoBidder.java | 16 ++++---- .../server/bidder/melozen/MeloZenBidder.java | 11 ++--- .../server/bidder/metax/MetaxBidder.java | 15 +++---- .../bidder/minutemedia/MinuteMediaBidder.java | 16 ++++---- .../server/bidder/missena/MissenaBidder.java | 9 +++-- .../bidder/mobfoxpb/MobfoxpbBidder.java | 40 ++++++++----------- .../server/bidder/motorik/MotorikBidder.java | 11 +++-- .../prebid/server/bidder/oms/OmsBidder.java | 11 +++-- .../server/bidder/onetag/OnetagBidder.java | 12 +++--- .../bidder/operaads/OperaadsBidder.java | 15 +++---- .../server/bidder/ownadx/OwnAdxBidder.java | 18 +++++---- .../server/bidder/rediads/RediadsBidder.java | 12 +++--- .../RelevantDigitalBidder.java | 9 +++-- .../server/bidder/roulax/RoulaxBidder.java | 19 ++++----- .../bidder/screencore/ScreencoreBidder.java | 15 ++++--- .../SeedingAllianceBidder.java | 14 ++++--- .../bidder/silvermob/SilvermobBidder.java | 14 ++++--- .../bidder/smarthub/SmarthubBidder.java | 13 +++--- .../bidder/smartrtb/SmartrtbBidder.java | 10 ++--- .../bidder/smartyads/SmartyAdsBidder.java | 18 +++++---- .../bidder/smilewanted/SmileWantedBidder.java | 9 +++-- .../bidder/smrtconnect/SmrtconnectBidder.java | 10 +++-- .../server/bidder/taboola/TaboolaBidder.java | 13 +++--- .../thetradedesk/TheTradeDeskBidder.java | 16 ++++---- .../bidder/tradplus/TradPlusBidder.java | 21 +++++----- .../bidder/trafficgate/TrafficGateBidder.java | 10 ++--- .../trustedstack/TrustedstackBidder.java | 16 +++----- .../bidder/videoheroes/VideoHeroesBidder.java | 10 ++--- .../server/bidder/xeworks/XeworksBidder.java | 16 ++++---- .../bidder/yeahmobi/YeahmobiBidder.java | 11 +++-- .../zeroclickfraud/ZeroclickfraudBidder.java | 20 +++++----- .../config/bidder/AaxConfiguration.java | 6 +-- .../config/bidder/MedianetConfiguration.java | 6 +-- src/main/resources/bidder-config/aax.yaml | 2 +- src/main/resources/bidder-config/aceex.yaml | 2 +- .../resources/bidder-config/acuityads.yaml | 2 +- .../resources/bidder-config/adelement.yaml | 2 +- src/main/resources/bidder-config/adhese.yaml | 2 +- .../resources/bidder-config/adkernel.yaml | 2 +- .../resources/bidder-config/adkerneladn.yaml | 2 +- src/main/resources/bidder-config/admatic.yaml | 2 +- src/main/resources/bidder-config/adot.yaml | 2 +- src/main/resources/bidder-config/adtonos.yaml | 2 +- .../resources/bidder-config/advangelists.yaml | 2 +- src/main/resources/bidder-config/adverxo.yaml | 6 +-- src/main/resources/bidder-config/adview.yaml | 2 +- src/main/resources/bidder-config/afront.yaml | 2 +- src/main/resources/bidder-config/aidem.yaml | 2 +- src/main/resources/bidder-config/algorix.yaml | 2 +- src/main/resources/bidder-config/aso.yaml | 8 ++-- src/main/resources/bidder-config/axonix.yaml | 2 +- .../resources/bidder-config/bematterfull.yaml | 2 +- src/main/resources/bidder-config/between.yaml | 2 +- .../resources/bidder-config/bidmachine.yaml | 2 +- src/main/resources/bidder-config/bigoad.yaml | 2 +- src/main/resources/bidder-config/blasto.yaml | 2 +- src/main/resources/bidder-config/blis.yaml | 2 +- .../resources/bidder-config/boldwinrapid.yaml | 2 +- src/main/resources/bidder-config/brave.yaml | 2 +- src/main/resources/bidder-config/bwx.yaml | 2 +- src/main/resources/bidder-config/clydo.yaml | 2 +- .../resources/bidder-config/contxtful.yaml | 2 +- .../resources/bidder-config/datablocks.yaml | 2 +- .../resources/bidder-config/displayio.yaml | 2 +- .../resources/bidder-config/driftpixel.yaml | 2 +- .../resources/bidder-config/elementaltv.yaml | 2 +- src/main/resources/bidder-config/escalax.yaml | 2 +- src/main/resources/bidder-config/flatads.yaml | 2 +- .../resources/bidder-config/gothamads.yaml | 4 +- src/main/resources/bidder-config/imds.yaml | 4 +- .../bidder-config/improvedigital.yaml | 2 +- .../bidder-config/interactiveoffers.yaml | 2 +- .../resources/bidder-config/intertech.yaml | 2 +- src/main/resources/bidder-config/invibes.yaml | 2 +- src/main/resources/bidder-config/iqx.yaml | 2 +- src/main/resources/bidder-config/kayzen.yaml | 2 +- .../resources/bidder-config/krushmedia.yaml | 2 +- .../resources/bidder-config/lemmadigital.yaml | 2 +- .../bidder-config/limelightDigital.yaml | 28 ++++++------- .../resources/bidder-config/lmkiviads.yaml | 2 +- .../resources/bidder-config/lunamedia.yaml | 2 +- .../resources/bidder-config/madvertise.yaml | 2 +- src/main/resources/bidder-config/mediago.yaml | 2 +- .../resources/bidder-config/medianet.yaml | 2 +- src/main/resources/bidder-config/melozen.yaml | 2 +- src/main/resources/bidder-config/metax.yaml | 2 +- .../resources/bidder-config/minutemedia.yaml | 4 +- src/main/resources/bidder-config/missena.yaml | 2 +- .../resources/bidder-config/mobfoxpb.yaml | 2 +- src/main/resources/bidder-config/motorik.yaml | 2 +- src/main/resources/bidder-config/oms.yaml | 2 +- src/main/resources/bidder-config/onetag.yaml | 2 +- .../resources/bidder-config/operaads.yaml | 2 +- src/main/resources/bidder-config/ownadx.yaml | 2 +- src/main/resources/bidder-config/rediads.yaml | 2 +- .../bidder-config/relevantdigital.yaml | 2 +- src/main/resources/bidder-config/roulax.yaml | 2 +- .../resources/bidder-config/screencore.yaml | 2 +- .../bidder-config/seedingAlliance.yaml | 6 +-- .../resources/bidder-config/silvermob.yaml | 2 +- .../resources/bidder-config/smarthub.yaml | 20 +++++----- .../resources/bidder-config/smartrtb.yaml | 2 +- .../resources/bidder-config/smartyads.yaml | 2 +- .../resources/bidder-config/smilewanted.yaml | 2 +- .../resources/bidder-config/smrtconnect.yaml | 2 +- src/main/resources/bidder-config/taboola.yaml | 2 +- .../resources/bidder-config/thetradedesk.yaml | 2 +- .../resources/bidder-config/tradplus.yaml | 2 +- .../resources/bidder-config/trafficgate.yaml | 2 +- .../resources/bidder-config/trustedstack.yaml | 2 +- .../resources/bidder-config/videoheroes.yaml | 2 +- src/main/resources/bidder-config/xeworks.yaml | 6 +-- .../resources/bidder-config/yeahmobi.yaml | 2 +- .../bidder-config/zeroclickfraud.yaml | 2 +- 165 files changed, 681 insertions(+), 622 deletions(-) diff --git a/extra/modules/optable-targeting/src/main/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImpl.java b/extra/modules/optable-targeting/src/main/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImpl.java index d31929f111f..e39bec1dc37 100644 --- a/extra/modules/optable-targeting/src/main/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImpl.java +++ b/extra/modules/optable-targeting/src/main/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImpl.java @@ -15,6 +15,7 @@ import org.prebid.server.log.Logger; import org.prebid.server.log.LoggerFactory; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import org.prebid.server.validation.ValidationException; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; @@ -27,10 +28,10 @@ public class APIClientImpl implements APIClient { private static final Logger logger = LoggerFactory.getLogger(APIClientImpl.class); private static final ConditionalLogger conditionalLogger = new ConditionalLogger(logger); - private static final String TENANT = "{{TENANT}}"; - private static final String ORIGIN = "{{ORIGIN}}"; + private static final String TENANT = "TENANT"; + private static final String ORIGIN = "ORIGIN"; - private final String endpoint; + private final Uri endpoint; private final HttpClient httpClient; private final JacksonMapper mapper; private final double logSamplingRate; @@ -40,7 +41,7 @@ public APIClientImpl(String endpoint, JacksonMapper mapper, double logSamplingRate) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.httpClient = Objects.requireNonNull(httpClient); this.mapper = Objects.requireNonNull(mapper); this.logSamplingRate = logSamplingRate; @@ -64,8 +65,9 @@ public Future getTargeting(OptableTargetingProperties propertie private String resolveEndpoint(String tenant, String origin) { return endpoint - .replace(TENANT, tenant) - .replace(ORIGIN, origin); + .replaceMacro(TENANT, tenant) + .replaceMacro(ORIGIN, origin) + .expand(); } private static MultiMap headers(OptableTargetingProperties properties, List ips, String userAgent) { diff --git a/src/main/java/org/prebid/server/bidder/aceex/AceexBidder.java b/src/main/java/org/prebid/server/bidder/aceex/AceexBidder.java index 841d888e064..4cdd521fb2b 100644 --- a/src/main/java/org/prebid/server/bidder/aceex/AceexBidder.java +++ b/src/main/java/org/prebid/server/bidder/aceex/AceexBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.List; import java.util.Objects; @@ -32,14 +33,14 @@ public class AceexBidder implements Bidder { private static final TypeReference> ACEEX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AceexBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -64,7 +65,7 @@ public Result>> makeHttpRequests(BidRequest request } private String resolveEndpoint(String accountId) { - return endpointUrl.replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(accountId)); + return endpointUrl.replaceMacro(ACCOUNT_ID_MACRO, accountId).expand(); } private static MultiMap constructHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/acuityads/AcuityadsBidder.java b/src/main/java/org/prebid/server/bidder/acuityads/AcuityadsBidder.java index f44d3d6f934..54b3a150d38 100644 --- a/src/main/java/org/prebid/server/bidder/acuityads/AcuityadsBidder.java +++ b/src/main/java/org/prebid/server/bidder/acuityads/AcuityadsBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.request.acuity.ExtImpAcuityads; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collections; import java.util.List; @@ -36,14 +37,14 @@ public class AcuityadsBidder implements Bidder { new TypeReference<>() { }; private static final String OPENRTB_VERSION = "2.5"; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String URL_ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String URL_HOST_MACRO = "Host"; + private static final String URL_ACCOUNT_ID_MACRO = "AccountID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AcuityadsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -95,8 +96,9 @@ private ExtImpAcuityads parseImpExt(Imp imp) { private String resolveEndpoint(String host, String accountId) { return endpointUrl - .replace(URL_HOST_MACRO, StringUtils.stripToEmpty(host)) - .replace(URL_ACCOUNT_ID_MACRO, StringUtils.stripToEmpty(accountId)); + .replaceMacro(URL_HOST_MACRO, StringUtils.stripToEmpty(host)) + .replaceMacro(URL_ACCOUNT_ID_MACRO, StringUtils.stripToEmpty(accountId)) + .expand(); } private static List removeFirstImpExt(List imps) { diff --git a/src/main/java/org/prebid/server/bidder/adelement/AdelementBidder.java b/src/main/java/org/prebid/server/bidder/adelement/AdelementBidder.java index c61cb88be40..17685dcb2f0 100644 --- a/src/main/java/org/prebid/server/bidder/adelement/AdelementBidder.java +++ b/src/main/java/org/prebid/server/bidder/adelement/AdelementBidder.java @@ -21,6 +21,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -29,15 +30,16 @@ public class AdelementBidder implements Bidder { - private final String endpointUrl; - private final JacksonMapper mapper; - private static final String SUPPLY_ID_MACRO = "{{SupplyId}}"; private static final TypeReference> ADELEMENT_EXT_TYPE_REFERENCE = new TypeReference<>() { }; + private static final String SUPPLY_ID_MACRO = "SupplyId"; + + private final Uri endpointUrl; + private final JacksonMapper mapper; public AdelementBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -64,7 +66,7 @@ public final Result>> makeHttpRequests(BidRequest b } private String resolveEndpoint(String supplyId) { - return endpointUrl.replace(SUPPLY_ID_MACRO, HttpUtil.encodeUrl(supplyId)); + return endpointUrl.replaceMacro(SUPPLY_ID_MACRO, supplyId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/adhese/AdheseBidder.java b/src/main/java/org/prebid/server/bidder/adhese/AdheseBidder.java index 4c72fd97760..f45326cd25a 100644 --- a/src/main/java/org/prebid/server/bidder/adhese/AdheseBidder.java +++ b/src/main/java/org/prebid/server/bidder/adhese/AdheseBidder.java @@ -25,6 +25,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -42,11 +43,11 @@ public class AdheseBidder implements Bidder { private static final String SLOT_PARAMETER = "SL"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdheseBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -78,7 +79,7 @@ private ExtImpAdhese parseImpExt(Imp imp) { } private String getUrl(ExtImpAdhese extImpAdhese) { - return endpointUrl.replace("{{AccountId}}", extImpAdhese.getAccount()); + return endpointUrl.replaceMacro("AccountId", extImpAdhese.getAccount()).expand(); } private BidRequest modifyBidRequest(BidRequest bidRequest, ExtImpAdhese extImpAdhese) { diff --git a/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java b/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java index a75d22eeec3..bf99f2b1a49 100644 --- a/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java +++ b/src/main/java/org/prebid/server/bidder/adkernel/AdkernelBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.request.adkernel.ExtImpAdkernel; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -49,11 +50,11 @@ public class AdkernelBidder implements Bidder { private static final int MF_SUFFIX_LENGTH = MF_SUFFIX.length() + 1; - private final String endpoint; + private final Uri endpoint; private final JacksonMapper mapper; public AdkernelBidder(String endpoint, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -183,7 +184,7 @@ private HttpRequest createHttpRequest(Map.Entry { private static final TypeReference> ADKERNELADN_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String URL_PUBLISHER_ID_MACRO = "PublisherID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdkernelAdnBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -197,7 +198,7 @@ private static BidRequest createBidRequest(BidRequest preBidRequest, List i } private String buildEndpoint(ExtImpAdkernelAdn impExt) { - return endpointUrl.replace(URL_PUBLISHER_ID_MACRO, impExt.getPubId().toString()); + return endpointUrl.replaceMacro(URL_PUBLISHER_ID_MACRO, impExt.getPubId().toString()).expand(); } private static MultiMap headers() { diff --git a/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java b/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java index f6b351b88f7..6fd7a8def0a 100644 --- a/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java +++ b/src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,13 +39,13 @@ public class AdmaticBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String HOST_MACRO = "{{Host}}"; + private static final String HOST_MACRO = "Host"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdmaticBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -79,7 +80,7 @@ private AdmaticImpExt parseImpExt(Imp imp) { } private String resolveEndpoint(AdmaticImpExt impExt) { - return endpointUrl.replace(HOST_MACRO, HttpUtil.encodeUrl(impExt.getHost())); + return endpointUrl.replaceMacro(HOST_MACRO, impExt.getHost()).expand(); } private MultiMap headers(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/adot/AdotBidder.java b/src/main/java/org/prebid/server/bidder/adot/AdotBidder.java index 49bbb0456b8..b4b8c935b15 100644 --- a/src/main/java/org/prebid/server/bidder/adot/AdotBidder.java +++ b/src/main/java/org/prebid/server/bidder/adot/AdotBidder.java @@ -23,8 +23,8 @@ import org.prebid.server.proto.openrtb.ext.request.adot.ExtImpAdot; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -39,16 +39,16 @@ public class AdotBidder implements Bidder { private static final List ALLOWED_BID_TYPES = Arrays.asList(BidType.banner, BidType.video, BidType.xNative); private static final String PRICE_MACRO = "${AUCTION_PRICE}"; - private static final String PUBLISHER_MACRO = "{{PUBLISHER_PATH}}"; + private static final String PUBLISHER_MACRO = "PUBLISHER_PATH"; private static final TypeReference> ADOT_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdotBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -66,7 +66,7 @@ public Result>> makeHttpRequests(BidRequest bidRequ } private String resolveEndpointUrl(String publisherPath) { - return StringUtils.replace(endpointUrl, PUBLISHER_MACRO, publisherPath); + return endpointUrl.replaceMacro(PUBLISHER_MACRO, publisherPath).expand(); } private ExtImpAdot parseImpExt(Imp firstImp) { diff --git a/src/main/java/org/prebid/server/bidder/adtonos/AdtonosBidder.java b/src/main/java/org/prebid/server/bidder/adtonos/AdtonosBidder.java index f780a020732..81ecbe97ca6 100644 --- a/src/main/java/org/prebid/server/bidder/adtonos/AdtonosBidder.java +++ b/src/main/java/org/prebid/server/bidder/adtonos/AdtonosBidder.java @@ -20,7 +20,7 @@ import org.prebid.server.proto.openrtb.ext.request.adtonos.ExtImpAdtonos; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -33,13 +33,13 @@ public class AdtonosBidder implements Bidder { private static final TypeReference> ADTONOS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdtonosBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -63,7 +63,7 @@ private ExtImpAdtonos parseImpExt(Imp imp) { } private String makeUrl(ExtImpAdtonos extImp) { - return endpointUrl.replace(PUBLISHER_ID_MACRO, extImp.getSupplierId()); + return endpointUrl.replaceMacro(PUBLISHER_ID_MACRO, extImp.getSupplierId()).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/advangelists/AdvangelistsBidder.java b/src/main/java/org/prebid/server/bidder/advangelists/AdvangelistsBidder.java index 5b9d825be63..1efebd91633 100644 --- a/src/main/java/org/prebid/server/bidder/advangelists/AdvangelistsBidder.java +++ b/src/main/java/org/prebid/server/bidder/advangelists/AdvangelistsBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.advangelists.ExtImpAdvangelists; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -40,13 +41,13 @@ public class AdvangelistsBidder implements Bidder { private static final TypeReference> ADVANGELISTS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String URL_PUBLISHER_ID_MACRO = "PublisherID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AdvangelistsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -151,12 +152,9 @@ private List> buildAdapterRequests(BidRequest bidRequest final MultiMap headers = HttpUtil.headers() .add(HttpUtil.X_OPENRTB_VERSION_HEADER, "2.5"); - final String createdEndpoint = endpointUrl - .replace(URL_PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(extImpAdvangelists.getPubid())); - final HttpRequest createdBidRequest = HttpRequest.builder() .method(HttpMethod.POST) - .uri(createdEndpoint) + .uri(endpointUrl.replaceMacro(URL_PUBLISHER_ID_MACRO, extImpAdvangelists.getPubid()).expand()) .body(mapper.encodeToBytes(updatedBidRequest)) .headers(headers) .payload(bidRequest) diff --git a/src/main/java/org/prebid/server/bidder/adverxo/AdverxoBidder.java b/src/main/java/org/prebid/server/bidder/adverxo/AdverxoBidder.java index 1880a2e9ad4..33e87800582 100644 --- a/src/main/java/org/prebid/server/bidder/adverxo/AdverxoBidder.java +++ b/src/main/java/org/prebid/server/bidder/adverxo/AdverxoBidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.adverxo.ExtImpAdverxo; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -39,11 +39,11 @@ public class AdverxoBidder implements Bidder { new TypeReference<>() { }; private static final String DEFAULT_BID_CURRENCY = "USD"; - private static final String ADUNIT_MACROS_ENDPOINT = "{{adUnitId}}"; - private static final String AUTH_MACROS_ENDPOINT = "{{auth}}"; + private static final String ADUNIT_MACROS_ENDPOINT = "adUnitId"; + private static final String AUTH_MACROS_ENDPOINT = "auth"; private static final String PRICE_MACRO = "${AUCTION_PRICE}"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; private final CurrencyConversionService currencyConversionService; @@ -51,7 +51,7 @@ public AdverxoBidder(String endpointUrl, JacksonMapper mapper, CurrencyConversionService currencyConversionService) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = mapper; this.currencyConversionService = currencyConversionService; } @@ -87,8 +87,9 @@ private ExtImpAdverxo parseImpExt(Imp imp) { private String resolveEndpoint(ExtImpAdverxo extImp) { return endpointUrl - .replace(ADUNIT_MACROS_ENDPOINT, Objects.toString(extImp.getAdUnitId(), "0")) - .replace(AUTH_MACROS_ENDPOINT, HttpUtil.encodeUrl(StringUtils.defaultString(extImp.getAuth()))); + .replaceMacro(ADUNIT_MACROS_ENDPOINT, Objects.toString(extImp.getAdUnitId(), "0")) + .replaceMacro(AUTH_MACROS_ENDPOINT, StringUtils.defaultString(extImp.getAuth())) + .expand(); } private Imp modifyImp(BidRequest bidRequest, Imp imp) { diff --git a/src/main/java/org/prebid/server/bidder/adview/AdviewBidder.java b/src/main/java/org/prebid/server/bidder/adview/AdviewBidder.java index 8c1de16d03d..b954df13597 100644 --- a/src/main/java/org/prebid/server/bidder/adview/AdviewBidder.java +++ b/src/main/java/org/prebid/server/bidder/adview/AdviewBidder.java @@ -24,7 +24,7 @@ import org.prebid.server.proto.openrtb.ext.request.adview.ExtImpAdview; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -38,10 +38,10 @@ public class AdviewBidder implements Bidder { private static final TypeReference> ADVIEW_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; private static final String BIDDER_CURRENCY = "USD"; - private final String endpointUrl; + private final Uri endpointUrl; private final CurrencyConversionService currencyConversionService; private final JacksonMapper mapper; @@ -49,7 +49,7 @@ public AdviewBidder(String endpointUrl, CurrencyConversionService currencyConversionService, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.mapper = Objects.requireNonNull(mapper); } @@ -59,7 +59,7 @@ public Result>> makeHttpRequests(BidRequest request final List errors = new ArrayList<>(); final List> httpRequests = new ArrayList<>(); - for (Imp imp: request.getImp()) { + for (Imp imp : request.getImp()) { try { final ExtImpAdview extImp = parseExtImp(imp); final Price bidFloorPrice = resolveBidFloor(imp, request); @@ -131,7 +131,7 @@ private static Banner resolveBanner(Banner banner) { } private String resolveEndpoint(String accountId) { - return endpointUrl.replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(accountId)); + return endpointUrl.replaceMacro(ACCOUNT_ID_MACRO, accountId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/adxcg/AdxcgBidder.java b/src/main/java/org/prebid/server/bidder/adxcg/AdxcgBidder.java index 97a15c13dfd..2c06630f6f7 100644 --- a/src/main/java/org/prebid/server/bidder/adxcg/AdxcgBidder.java +++ b/src/main/java/org/prebid/server/bidder/adxcg/AdxcgBidder.java @@ -36,7 +36,6 @@ public AdxcgBidder(String endpointUrl, JacksonMapper mapper) { @Override public Result>> makeHttpRequests(BidRequest bidRequest) { - return Result.withValue(BidderUtil.defaultRequest(bidRequest, endpointUrl, mapper)); } diff --git a/src/main/java/org/prebid/server/bidder/afront/AfrontBidder.java b/src/main/java/org/prebid/server/bidder/afront/AfrontBidder.java index 3b71087d380..c9645907b63 100644 --- a/src/main/java/org/prebid/server/bidder/afront/AfrontBidder.java +++ b/src/main/java/org/prebid/server/bidder/afront/AfrontBidder.java @@ -22,6 +22,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -36,14 +37,14 @@ public class AfrontBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; + private static final String SOURCE_ID_MACRO = "SourceId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AfrontBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -74,8 +75,9 @@ private ExtImpAfront parseImpExt(Imp imp) { private String resolveEndpoint(ExtImpAfront extImp) { return endpointUrl - .replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(extImp.getAccountId())) - .replace(SOURCE_ID_MACRO, HttpUtil.encodeUrl(extImp.getSourceId())); + .replaceMacro(ACCOUNT_ID_MACRO, extImp.getAccountId()) + .replaceMacro(SOURCE_ID_MACRO, extImp.getSourceId()) + .expand(); } private static BidRequest modifyRequest(BidRequest request) { diff --git a/src/main/java/org/prebid/server/bidder/aidem/AidemBidder.java b/src/main/java/org/prebid/server/bidder/aidem/AidemBidder.java index 05d89ae67e5..3025427c6b0 100644 --- a/src/main/java/org/prebid/server/bidder/aidem/AidemBidder.java +++ b/src/main/java/org/prebid/server/bidder/aidem/AidemBidder.java @@ -20,7 +20,7 @@ import org.prebid.server.proto.openrtb.ext.request.aidem.ExtImpAidem; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -33,13 +33,13 @@ public class AidemBidder implements Bidder { private static final TypeReference> AIDEM_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AidemBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -62,7 +62,7 @@ private ExtImpAidem parseImpExt(Imp imp) { } private String makeUrl(ExtImpAidem extImpAidem) { - return endpointUrl.replace(PUBLISHER_ID_MACRO, extImpAidem.getPublisherId()); + return endpointUrl.replaceMacro(PUBLISHER_ID_MACRO, extImpAidem.getPublisherId()).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/algorix/AlgorixBidder.java b/src/main/java/org/prebid/server/bidder/algorix/AlgorixBidder.java index 301f1fec17d..ec29e3ee246 100644 --- a/src/main/java/org/prebid/server/bidder/algorix/AlgorixBidder.java +++ b/src/main/java/org/prebid/server/bidder/algorix/AlgorixBidder.java @@ -30,6 +30,7 @@ import org.prebid.server.proto.openrtb.ext.request.algorix.ExtImpAlgorix; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -46,15 +47,15 @@ public class AlgorixBidder implements Bidder { new TypeReference<>() { }; - private static final String URL_REGION_MACRO = "{{HOST}}"; - private static final String URL_SID_MACRO = "{{SID}}"; - private static final String URL_TOKEN_MACRO = "{{TOKEN}}"; + private static final String URL_REGION_MACRO = "HOST"; + private static final String URL_SID_MACRO = "SID"; + private static final String URL_TOKEN_MACRO = "TOKEN"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AlgorixBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -158,11 +159,12 @@ private static String getRegionInfo(ExtImpAlgorix extImp) { }; } - private static String resolveUrl(String endpoint, ExtImpAlgorix extImp) { + private static String resolveUrl(Uri endpoint, ExtImpAlgorix extImp) { return endpoint - .replace(URL_REGION_MACRO, getRegionInfo(extImp)) - .replace(URL_SID_MACRO, extImp.getSid()) - .replace(URL_TOKEN_MACRO, extImp.getToken()); + .replaceMacro(URL_REGION_MACRO, getRegionInfo(extImp)) + .replaceMacro(URL_SID_MACRO, extImp.getSid()) + .replaceMacro(URL_TOKEN_MACRO, extImp.getToken()) + .expand(); } private static MultiMap resolveHeaders() { diff --git a/src/main/java/org/prebid/server/bidder/aso/AsoBidder.java b/src/main/java/org/prebid/server/bidder/aso/AsoBidder.java index 62307fb7bf8..1f367570ff9 100644 --- a/src/main/java/org/prebid/server/bidder/aso/AsoBidder.java +++ b/src/main/java/org/prebid/server/bidder/aso/AsoBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -42,14 +43,14 @@ public class AsoBidder implements Bidder { new TypeReference<>() { }; - private static final String ZONE_MACRO = "{{ZoneID}}"; + private static final String ZONE_MACRO = "ZoneID"; private static final String PRICE_MACRO = "${AUCTION_PRICE}"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public AsoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -97,7 +98,7 @@ private HttpRequest makeHttpRequest(BidRequest request, ExtImpAso ex } private String makeUrl(Integer zone) { - return endpointUrl.replace(ZONE_MACRO, zone.toString()); + return endpointUrl.replaceMacro(ZONE_MACRO, zone.toString()).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/avocet/AvocetBidder.java b/src/main/java/org/prebid/server/bidder/avocet/AvocetBidder.java index 51e93d99a02..4e27a72e878 100644 --- a/src/main/java/org/prebid/server/bidder/avocet/AvocetBidder.java +++ b/src/main/java/org/prebid/server/bidder/avocet/AvocetBidder.java @@ -22,7 +22,6 @@ import org.prebid.server.util.HttpUtil; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -41,9 +40,7 @@ public AvocetBidder(String endpointUrl, JacksonMapper mapper) { @Override public Result>> makeHttpRequests(BidRequest request) { - - return Result.of(Collections.singletonList(BidderUtil.defaultRequest(request, endpointUrl, mapper)), - Collections.emptyList()); + return Result.withValue(BidderUtil.defaultRequest(request, endpointUrl, mapper)); } @Override diff --git a/src/main/java/org/prebid/server/bidder/axonix/AxonixBidder.java b/src/main/java/org/prebid/server/bidder/axonix/AxonixBidder.java index e7bbf291e38..c9282e6578e 100644 --- a/src/main/java/org/prebid/server/bidder/axonix/AxonixBidder.java +++ b/src/main/java/org/prebid/server/bidder/axonix/AxonixBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.axonix.ExtImpAxonix; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.Collection; @@ -34,14 +34,14 @@ public class AxonixBidder implements Bidder { private static final TypeReference> AXONIX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - public static final String URL_SUPPLY_ID_MACRO = "{{SupplyId}}"; + private static final String URL_SUPPLY_ID_MACRO = "SupplyId"; private static final String PRICE_MACRO = "${AUCTION_PRICE}"; + private final Uri endpointUrl; private final JacksonMapper mapper; - private final String endpointUrl; public AxonixBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -67,7 +67,7 @@ private ExtImpAxonix parseImpExt(Imp imp) { } private String resolveEndpoint(String supplyId) { - return endpointUrl.replace(URL_SUPPLY_ID_MACRO, HttpUtil.encodeUrl(supplyId)); + return endpointUrl.replaceMacro(URL_SUPPLY_ID_MACRO, supplyId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/bematterfull/BematterfullBidder.java b/src/main/java/org/prebid/server/bidder/bematterfull/BematterfullBidder.java index c764ec3141c..2b95cf685d1 100644 --- a/src/main/java/org/prebid/server/bidder/bematterfull/BematterfullBidder.java +++ b/src/main/java/org/prebid/server/bidder/bematterfull/BematterfullBidder.java @@ -26,6 +26,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -35,17 +36,17 @@ public class BematterfullBidder implements Bidder { - private static final String HOST_MACRO = "{{Host}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String HOST_MACRO = "Host"; + private static final String SOURCE_ID_MACRO = "SourceId"; private static final String EXT_PREBID = "prebid"; private static final TypeReference> EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BematterfullBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -87,8 +88,9 @@ private HttpRequest makeHttpRequest(BidRequest bidRequest, ExtImpBem private String makeUrl(ExtImpBematterfull extImp) { return endpointUrl - .replace(HOST_MACRO, StringUtils.defaultString(extImp.getEnv())) - .replace(SOURCE_ID_MACRO, StringUtils.defaultString(extImp.getPid())); + .replaceMacro(HOST_MACRO, StringUtils.defaultString(extImp.getEnv())) + .replaceMacro(SOURCE_ID_MACRO, StringUtils.defaultString(extImp.getPid())) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/between/BetweenBidder.java b/src/main/java/org/prebid/server/bidder/between/BetweenBidder.java index a795a3efbb9..94be04947b6 100644 --- a/src/main/java/org/prebid/server/bidder/between/BetweenBidder.java +++ b/src/main/java/org/prebid/server/bidder/between/BetweenBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -39,16 +40,16 @@ public class BetweenBidder implements Bidder { private static final TypeReference> BETWEEN_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; + private static final String URL_HOST_MACRO = "Host"; + private static final String PUBLISHER_ID_MACRO = "PublisherId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; private final boolean endpointContainsHostMacro; public BetweenBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); - this.endpointContainsHostMacro = endpointUrl.contains(URL_HOST_MACRO); + this.endpointUrl = Uri.of(endpointUrl); + this.endpointContainsHostMacro = endpointUrl.contains("{" + URL_HOST_MACRO + "}"); this.mapper = Objects.requireNonNull(mapper); } @@ -132,8 +133,9 @@ private static Banner resolveBanner(Banner banner) { private HttpRequest createRequest(ExtImpBetween extImpBetween, BidRequest request, List imps) { final String url = endpointUrl - .replace(URL_HOST_MACRO, StringUtils.defaultString(extImpBetween.getHost())) - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(extImpBetween.getPublisherId())); + .replaceMacro(URL_HOST_MACRO, StringUtils.defaultString(extImpBetween.getHost())) + .replaceMacro(PUBLISHER_ID_MACRO, extImpBetween.getPublisherId()) + .expand(); final BidRequest outgoingRequest = request.toBuilder().imp(imps).build(); return diff --git a/src/main/java/org/prebid/server/bidder/bidmachine/BidmachineBidder.java b/src/main/java/org/prebid/server/bidder/bidmachine/BidmachineBidder.java index 26a2ae3b814..bae021ce619 100644 --- a/src/main/java/org/prebid/server/bidder/bidmachine/BidmachineBidder.java +++ b/src/main/java/org/prebid/server/bidder/bidmachine/BidmachineBidder.java @@ -26,6 +26,7 @@ import org.prebid.server.proto.openrtb.ext.request.bidmachine.ExtImpBidmachine; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -39,11 +40,11 @@ public class BidmachineBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BidmachineBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -142,9 +143,11 @@ private static boolean isMissedRewardedBattr(List battr) { } private String buildEndpointUrl(ExtImpBidmachine extImpBidmachine) { - return endpointUrl.replace("{{HOST}}", extImpBidmachine.getHost()) - .replace("{{PATH}}", extImpBidmachine.getPath()) - .replace("{{SELLER_ID}}", extImpBidmachine.getSellerId()); + return endpointUrl + .replaceMacro("HOST", extImpBidmachine.getHost()) + .replaceMacro("PATH", extImpBidmachine.getPath()) + .replaceMacro("SELLER_ID", extImpBidmachine.getSellerId()) + .expand(); } private ExtPrebid parseImpExt(Imp imp) { diff --git a/src/main/java/org/prebid/server/bidder/bigoad/BigoadBidder.java b/src/main/java/org/prebid/server/bidder/bigoad/BigoadBidder.java index 7c24e7cf480..a27d4db1452 100644 --- a/src/main/java/org/prebid/server/bidder/bigoad/BigoadBidder.java +++ b/src/main/java/org/prebid/server/bidder/bigoad/BigoadBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -35,14 +36,14 @@ public class BigoadBidder implements Bidder { private static final TypeReference> BIGOAD_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String SSP_ID_MACRO = "{{SspId}}"; + private static final String SSP_ID_MACRO = "SspId"; private static final String OPEN_RTB_VERSION = "2.5"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BigoadBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -88,8 +89,7 @@ private static MultiMap headers() { } private String makeEndpointUrl(ExtImpBigoad extImpBigoadx) { - final String safeSspId = HttpUtil.encodeUrl(StringUtils.trimToEmpty(extImpBigoadx.getSspId())); - return endpointUrl.replace(SSP_ID_MACRO, safeSspId); + return endpointUrl.replaceMacro(SSP_ID_MACRO, StringUtils.trimToEmpty(extImpBigoadx.getSspId())).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/blasto/BlastoBidder.java b/src/main/java/org/prebid/server/bidder/blasto/BlastoBidder.java index c317935419b..431b1ac8ca8 100644 --- a/src/main/java/org/prebid/server/bidder/blasto/BlastoBidder.java +++ b/src/main/java/org/prebid/server/bidder/blasto/BlastoBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.blasto.ExtImpBlasto; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collections; import java.util.List; @@ -34,15 +35,15 @@ public class BlastoBidder implements Bidder { new TypeReference<>() { }; - private static final String URL_SOURCE_ID_MACRO = "{{SourceId}}"; - private static final String URL_ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String URL_SOURCE_ID_MACRO = "SourceId"; + private static final String URL_ACCOUNT_ID_MACRO = "AccountID"; private static final String DEFAULT_CURRENCY = "USD"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BlastoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -102,8 +103,9 @@ private static MultiMap headers(Device device) { private String buildEndpointUrl(ExtImpBlasto extImp) { return endpointUrl - .replace(URL_SOURCE_ID_MACRO, HttpUtil.encodeUrl(extImp.getSourceId())) - .replace(URL_ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(extImp.getAccountId())); + .replaceMacro(URL_SOURCE_ID_MACRO, extImp.getSourceId()) + .replaceMacro(URL_ACCOUNT_ID_MACRO, extImp.getAccountId()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/blis/BlisBidder.java b/src/main/java/org/prebid/server/bidder/blis/BlisBidder.java index 10e9ee547b4..2d2989cdd6e 100644 --- a/src/main/java/org/prebid/server/bidder/blis/BlisBidder.java +++ b/src/main/java/org/prebid/server/bidder/blis/BlisBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -37,13 +38,13 @@ public class BlisBidder implements Bidder { private static final TypeReference> BLIS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; private static final String AUCTION_PRICE_MACRO = "${AUCTION_PRICE}"; - private static final String SUPPLY_ID_MACRO = "{{SupplyId}}"; + private static final String SUPPLY_ID_MACRO = "SupplyId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BlisBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -72,7 +73,7 @@ private static MultiMap makeHeaders(String supplyId) { } private String makeUrl(String supplyId) { - return endpointUrl.replace(SUPPLY_ID_MACRO, HttpUtil.encodeUrl(supplyId)); + return endpointUrl.replaceMacro(SUPPLY_ID_MACRO, supplyId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidder.java b/src/main/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidder.java index ca6da3a8653..dd8a1f71983 100644 --- a/src/main/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidder.java +++ b/src/main/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -36,15 +37,15 @@ public class BoldwinRapidBidder implements Bidder { private static final TypeReference> BOLDWIN_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; - private static final String PLACEMENT_ID_MACRO = "{{PlacementID}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; + private static final String PLACEMENT_ID_MACRO = "PlacementID"; private static final String HOST_HEADER_VALUE = "rtb.beardfleet.com"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BoldwinRapidBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -81,8 +82,9 @@ private ExtImpBoldwinRapid parseImpExt(Imp imp) { private String resolveEndpoint(ExtImpBoldwinRapid extImp) { return endpointUrl - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(extImp.getPid()))) - .replace(PLACEMENT_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(extImp.getTid()))); + .replaceMacro(PUBLISHER_ID_MACRO, StringUtils.defaultString(extImp.getPid())) + .replaceMacro(PLACEMENT_ID_MACRO, StringUtils.defaultString(extImp.getTid())) + .expand(); } private static MultiMap makeHeaders(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/brave/BraveBidder.java b/src/main/java/org/prebid/server/bidder/brave/BraveBidder.java index 0819e42479a..74017534501 100644 --- a/src/main/java/org/prebid/server/bidder/brave/BraveBidder.java +++ b/src/main/java/org/prebid/server/bidder/brave/BraveBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.brave.ExtImpBrave; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.List; @@ -30,18 +30,17 @@ public class BraveBidder implements Bidder { - private static final String PUBLISHER_MACRO = "{{.PublisherID}}"; - + private static final String PUBLISHER_MACRO = "PublisherID"; private static final String BIDDER_CURRENCY = "USD"; private static final TypeReference> BRAVE_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public BraveBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -80,7 +79,7 @@ private static List removeFirstImpExt(List imps) { } private String resolveEndpoint(String publisherId) { - return endpointUrl.replace(PUBLISHER_MACRO, StringUtils.stripToEmpty(publisherId)); + return endpointUrl.replaceMacro(PUBLISHER_MACRO, StringUtils.stripToEmpty(publisherId)).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/bwx/BwxBidder.java b/src/main/java/org/prebid/server/bidder/bwx/BwxBidder.java index 0bd006ff249..a8a3a77b951 100644 --- a/src/main/java/org/prebid/server/bidder/bwx/BwxBidder.java +++ b/src/main/java/org/prebid/server/bidder/bwx/BwxBidder.java @@ -22,6 +22,7 @@ import org.prebid.server.proto.openrtb.ext.request.bwx.ExtImpBwx; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -34,13 +35,14 @@ public class BwxBidder implements Bidder { private static final TypeReference> BWX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String PUBLISHER_ID_MACRO = "{{SourceId}}"; - private final String endpointUrl; + private static final String URL_HOST_MACRO = "Host"; + private static final String PUBLISHER_ID_MACRO = "SourceId"; + + private final Uri endpointUrl; private final JacksonMapper mapper; public BwxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -83,8 +85,9 @@ private HttpRequest createHttpRequest(BidRequest request, ExtImpBwx private String resolveEndpoint(ExtImpBwx extImpBwx) { return endpointUrl - .replace(URL_HOST_MACRO, StringUtils.defaultString(extImpBwx.getEnv())) - .replace(PUBLISHER_ID_MACRO, StringUtils.defaultString(extImpBwx.getPid())); + .replaceMacro(URL_HOST_MACRO, StringUtils.defaultString(extImpBwx.getEnv())) + .replaceMacro(PUBLISHER_ID_MACRO, StringUtils.defaultString(extImpBwx.getPid())) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/clydo/ClydoBidder.java b/src/main/java/org/prebid/server/bidder/clydo/ClydoBidder.java index ca7b04ee32f..b45b0f17417 100644 --- a/src/main/java/org/prebid/server/bidder/clydo/ClydoBidder.java +++ b/src/main/java/org/prebid/server/bidder/clydo/ClydoBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -39,16 +40,16 @@ public class ClydoBidder implements Bidder { new TypeReference<>() { }; - private static final String REGION_MACRO = "{{Region}}"; - private static final String PARTNER_ID_MACRO = "{{PartnerId}}"; + private static final String REGION_MACRO = "Region"; + private static final String PARTNER_ID_MACRO = "PartnerId"; private static final String DEFAULT_REGION = "us"; private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public ClydoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -108,10 +109,11 @@ private static MultiMap constructHeaders(BidRequest bidRequest) { return headers; } - private static String resolveUrl(String endpoint, ExtImpClydo extImp) { + private static String resolveUrl(Uri endpoint, ExtImpClydo extImp) { return endpoint - .replace(REGION_MACRO, getRegionInfo(extImp)) - .replace(PARTNER_ID_MACRO, HttpUtil.encodeUrl(extImp.getPartnerId())); + .replaceMacro(REGION_MACRO, getRegionInfo(extImp)) + .replaceMacro(PARTNER_ID_MACRO, extImp.getPartnerId()) + .expand(); } private static String getRegionInfo(ExtImpClydo extImp) { diff --git a/src/main/java/org/prebid/server/bidder/contxtful/ContxtfulBidder.java b/src/main/java/org/prebid/server/bidder/contxtful/ContxtfulBidder.java index cc05acadcd4..648091bd993 100644 --- a/src/main/java/org/prebid/server/bidder/contxtful/ContxtfulBidder.java +++ b/src/main/java/org/prebid/server/bidder/contxtful/ContxtfulBidder.java @@ -31,6 +31,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -45,16 +46,16 @@ public class ContxtfulBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; private static final String BIDDER_NAME = "contxtful"; private static final String DEFAULT_ADAPTER_VERSION = "v1"; private static final String DEFAULT_CURRENCY = "USD"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public ContxtfulBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -129,7 +130,7 @@ private static User modifyUser(User user) { } private String makeUrl(String customerId) { - return endpointUrl.replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(customerId)); + return endpointUrl.replaceMacro(ACCOUNT_ID_MACRO, customerId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java b/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java index c88baab7e9f..7546621c98b 100644 --- a/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java +++ b/src/main/java/org/prebid/server/bidder/datablocks/DatablocksBidder.java @@ -20,7 +20,7 @@ import org.prebid.server.proto.openrtb.ext.request.datablocks.ExtImpDatablocks; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -36,11 +36,11 @@ public class DatablocksBidder implements Bidder { new TypeReference<>() { }; - private final String endpoint; + private final Uri endpoint; private final JacksonMapper mapper; public DatablocksBidder(String endpoint, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -84,7 +84,8 @@ private HttpRequest makeHttpRequest(Map.Entry { }; private static final String BIDDER_CURRENCY = "USD"; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; private static final String X_OPENRTB_VERSION = "2.5"; private final CurrencyConversionService currencyConversionService; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public DisplayioBidder(CurrencyConversionService currencyConversionService, @@ -52,7 +53,7 @@ public DisplayioBidder(CurrencyConversionService currencyConversionService, JacksonMapper mapper) { this.currencyConversionService = Objects.requireNonNull(currencyConversionService); - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -132,7 +133,8 @@ private static MultiMap makeHeaders() { private String resolveEndpoint(DisplayioImpExt impExt) { return endpointUrl - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(impExt.getPublisherId()))); + .replaceMacro(PUBLISHER_ID_MACRO, StringUtils.defaultString(impExt.getPublisherId())) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/driftpixel/DriftpixelBidder.java b/src/main/java/org/prebid/server/bidder/driftpixel/DriftpixelBidder.java index 01b651a9189..8d783a3e03d 100644 --- a/src/main/java/org/prebid/server/bidder/driftpixel/DriftpixelBidder.java +++ b/src/main/java/org/prebid/server/bidder/driftpixel/DriftpixelBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.driftpixel.DriftpixelImpExt; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -33,14 +33,14 @@ public class DriftpixelBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String HOST_MACRO = "{{Host}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String HOST_MACRO = "Host"; + private static final String SOURCE_ID_MACRO = "SourceId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public DriftpixelBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -72,8 +72,9 @@ private DriftpixelImpExt parseImpExt(Imp imp) { private String resolveEndpoint(DriftpixelImpExt impExt) { return endpointUrl - .replace(HOST_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(impExt.getEnv()))) - .replace(SOURCE_ID_MACRO, HttpUtil.encodeUrl(impExt.getPid())); + .replaceMacro(HOST_MACRO, StringUtils.defaultString(impExt.getEnv())) + .replaceMacro(SOURCE_ID_MACRO, impExt.getPid()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java b/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java index b67fbfe053a..07f92b66243 100644 --- a/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java +++ b/src/main/java/org/prebid/server/bidder/elementaltv/ElementalTVBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.elementaltv.ExtImpElementalTV; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -42,11 +43,11 @@ public class ElementalTVBidder implements Bidder { new TypeReference<>() { }; - private final String endpoint; + private final Uri endpoint; private final JacksonMapper mapper; public ElementalTVBidder(String endpoint, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -84,12 +85,7 @@ private ExtImpElementalTV parseAndValidateImpExt(Imp imp) { } private String resolveUrl(ExtImpElementalTV extImp) { - try { - return endpoint - .replace("{{AdUnit}}", HttpUtil.encodeUrl(extImp.getAdunit())); - } catch (Exception e) { - throw new PreBidException(e.getMessage()); - } + return endpoint.replaceMacro("AdUnit", extImp.getAdunit()).expand(); } private HttpRequest createSingleRequest(Imp imp, BidRequest request, String url) { diff --git a/src/main/java/org/prebid/server/bidder/escalax/EscalaxBidder.java b/src/main/java/org/prebid/server/bidder/escalax/EscalaxBidder.java index 6d520a2ecd0..f1f02697476 100644 --- a/src/main/java/org/prebid/server/bidder/escalax/EscalaxBidder.java +++ b/src/main/java/org/prebid/server/bidder/escalax/EscalaxBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,11 +39,11 @@ public class EscalaxBidder implements Bidder { private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public EscalaxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -77,8 +78,9 @@ private HttpRequest makeHttpRequest(BidRequest bidRequest, ExtImpEsc private String makeUrl(ExtImpEscalax extImp) { return endpointUrl - .replace("{{AccountID}}", extImp.getAccountId()) - .replace("{{SourceId}}", extImp.getSourceId()); + .replaceMacro("AccountID", extImp.getAccountId()) + .replaceMacro("SourceId", extImp.getSourceId()) + .expand(); } private MultiMap makeHeaders(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/flatads/FlatadsBidder.java b/src/main/java/org/prebid/server/bidder/flatads/FlatadsBidder.java index 11af869d1da..07b74f9d8dd 100644 --- a/src/main/java/org/prebid/server/bidder/flatads/FlatadsBidder.java +++ b/src/main/java/org/prebid/server/bidder/flatads/FlatadsBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -39,14 +40,14 @@ public class FlatadsBidder implements Bidder { private static final TypeReference> FLATADS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; - private static final String TOKEN_ID_MACRO = "{{TokenID}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; + private static final String TOKEN_ID_MACRO = "TokenID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public FlatadsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -81,8 +82,9 @@ private ExtImpFlatads parseImpExt(Imp imp) { private String resolveEndpoint(ExtImpFlatads extImp) { return endpointUrl - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(extImp.getPublisherId()))) - .replace(TOKEN_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(extImp.getToken()))); + .replaceMacro(PUBLISHER_ID_MACRO, StringUtils.defaultString(extImp.getPublisherId())) + .replaceMacro(TOKEN_ID_MACRO, StringUtils.defaultString(extImp.getToken())) + .expand(); } private HttpRequest makeHttpRequest(BidRequest request, String endpoint) { diff --git a/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java b/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java index b176b8c1cfd..c745beda007 100644 --- a/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/gotthamads/GothamAdsBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.List; @@ -34,14 +35,14 @@ public class GothamAdsBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String ACCOUNT_ID_MACRO = "AccountID"; private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public GothamAdsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -82,7 +83,7 @@ private static BidRequest cleanUpFirstImpExt(BidRequest request) { } private String resolveEndpoint(String accountId) { - return endpointUrl.replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(accountId)); + return endpointUrl.replaceMacro(ACCOUNT_ID_MACRO, accountId).expand(); } private static MultiMap makeHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/imds/ImdsBidder.java b/src/main/java/org/prebid/server/bidder/imds/ImdsBidder.java index 6261679a753..e85f1fe812f 100644 --- a/src/main/java/org/prebid/server/bidder/imds/ImdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/imds/ImdsBidder.java @@ -24,10 +24,8 @@ import org.prebid.server.proto.openrtb.ext.request.imds.ExtRequestImds; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -40,12 +38,12 @@ public class ImdsBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final String prebidVersion; private final JacksonMapper mapper; public ImdsBidder(String endpointUrl, String prebidVersion, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.prebidVersion = Objects.requireNonNull(prebidVersion); this.mapper = Objects.requireNonNull(mapper); } @@ -85,21 +83,18 @@ public Result>> makeHttpRequests(BidRequest bidRequ return Result.of( Collections.singletonList( BidderUtil.defaultRequest( - outgoingRequest, - generateEndpointUrl(firstExtImp), - mapper - ) - ), + outgoingRequest, + generateEndpointUrl(firstExtImp), + mapper)), errors ); } private String generateEndpointUrl(ExtImpImds firstExtImp) { - final String accountId = URLEncoder.encode(firstExtImp.getSeatId(), StandardCharsets.UTF_8); - final String sourceId = URLEncoder.encode(prebidVersion, StandardCharsets.UTF_8); return endpointUrl - .replaceAll("\\{\\{AccountID}}", accountId) - .replaceAll("\\{\\{SourceId}}", sourceId); + .replaceMacro("AccountID", firstExtImp.getSeatId()) + .replaceMacro("SourceId", prebidVersion) + .expand(); } private ExtImpImds parseAndValidateExtImp(ObjectNode impExt) { diff --git a/src/main/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidder.java b/src/main/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidder.java index e86a6182eb9..59564195b09 100644 --- a/src/main/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidder.java +++ b/src/main/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidder.java @@ -27,7 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.improvedigital.ExtImpImprovedigital; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -41,7 +41,7 @@ public class ImprovedigitalBidder implements Bidder { - private static final String URL_PATH_PREFIX_MACRO = "{{PathPrefix}}"; + private static final String URL_PATH_PREFIX_MACRO = "PathPrefix"; private static final TypeReference> IMPROVEDIGITAL_EXT_TYPE_REFERENCE = new TypeReference<>() { }; @@ -52,11 +52,11 @@ public class ImprovedigitalBidder implements Bidder { private static final Pattern DEALS_PATTERN = Pattern.compile("(classic|deal)"); - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public ImprovedigitalBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -106,10 +106,10 @@ private HttpRequest resolveRequest(BidRequest bidRequest, Imp imp, I .build(); final String pathPrefix = publisherId != null && publisherId > 0 - ? String.format("%d/", publisherId) + ? publisherId.toString() : StringUtils.EMPTY; - final String endpointUrl = this.endpointUrl.replace(URL_PATH_PREFIX_MACRO, pathPrefix); + final String endpointUrl = this.endpointUrl.replaceMacro(URL_PATH_PREFIX_MACRO, pathPrefix).expand(); return BidderUtil.defaultRequest(modifiedRequest, endpointUrl, mapper); } diff --git a/src/main/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidder.java b/src/main/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidder.java index adb7aae4a04..9e2db22da7e 100644 --- a/src/main/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidder.java +++ b/src/main/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidder.java @@ -17,7 +17,7 @@ import org.prebid.server.json.JacksonMapper; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -26,11 +26,11 @@ public class InteractiveOffersBidder implements Bidder { - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public InteractiveOffersBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -38,7 +38,7 @@ public InteractiveOffersBidder(String endpointUrl, JacksonMapper mapper) { public Result>> makeHttpRequests(BidRequest request) { final ObjectNode impExt = request.getImp().getFirst().getExt(); final String resolvedPartnerId = StringUtils.defaultString(resolvePartnerId(impExt)); - final String resolvedEndpointUrl = endpointUrl.replace("{{PartnerId}}", resolvedPartnerId); + final String resolvedEndpointUrl = endpointUrl.replaceMacro("PartnerId", resolvedPartnerId).expand(); return Result.withValue(BidderUtil.defaultRequest(request, resolvedEndpointUrl, mapper)); } diff --git a/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java b/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java index 8f6b2afd4ea..59c11e84d95 100644 --- a/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java +++ b/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.intertech.ExtImpIntertech; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -41,14 +42,14 @@ public class IntertechBidder implements Bidder { new TypeReference<>() { }; - private static final String PAGE_ID_MACRO = "{{page_id}}"; - private static final String IMP_ID_MACRO = "{{imp_id}}"; + private static final String PAGE_ID_MACRO = "page_id"; + private static final String IMP_ID_MACRO = "imp_id"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public IntertechBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -133,17 +134,12 @@ private static Banner updateBanner(Banner banner) { } private String modifyUrl(ExtImpIntertech extImpIntertech, String referer, String cur) { - final String resolvedUrl = endpointUrl - .replace(PAGE_ID_MACRO, HttpUtil.encodeUrl(extImpIntertech.getPageId().toString())) - .replace(IMP_ID_MACRO, HttpUtil.encodeUrl(extImpIntertech.getImpId().toString())); - final StringBuilder uri = new StringBuilder(resolvedUrl); - if (StringUtils.isNotBlank(referer)) { - uri.append("&target-ref=").append(HttpUtil.encodeUrl(referer)); - } - if (StringUtils.isNotBlank(cur)) { - uri.append("&ssp-cur=").append(cur); - } - return uri.toString(); + return endpointUrl + .replaceMacro(PAGE_ID_MACRO, extImpIntertech.getPageId().toString()) + .replaceMacro(IMP_ID_MACRO, extImpIntertech.getImpId().toString()) + .addQueryParam("target-ref", StringUtils.isNotBlank(referer) ? referer : null) + .addQueryParam("ssp-cur", StringUtils.isNotBlank(cur) ? cur : null) + .expand(); } private HttpRequest buildHttpRequest(BidRequest outgoingRequest, String url) { diff --git a/src/main/java/org/prebid/server/bidder/invibes/InvibesBidder.java b/src/main/java/org/prebid/server/bidder/invibes/InvibesBidder.java index cc4e4bfcaf8..fb64f40c66e 100644 --- a/src/main/java/org/prebid/server/bidder/invibes/InvibesBidder.java +++ b/src/main/java/org/prebid/server/bidder/invibes/InvibesBidder.java @@ -37,6 +37,7 @@ import org.prebid.server.proto.openrtb.ext.request.invibes.model.InvibesDebug; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -52,13 +53,13 @@ public class InvibesBidder implements Bidder { }; private static final String INVIBES_BID_VERSION = "4"; private static final String ADAPTER_VERSION = "prebid_1.0.0"; - private static final String URL_HOST_MACRO = "{{ZoneID}}"; + private static final String URL_HOST_MACRO = "ZoneID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public InvibesBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -188,7 +189,7 @@ private List resolveAdFormats(Banner currentBanner) { private HttpRequest makeRequest(InvibesInternalParams invibesParams, BidRequest request) { final String subdomain = resolveHost(invibesParams.getDomainId()); - final String url = endpointUrl.replace(URL_HOST_MACRO, subdomain); + final String url = endpointUrl.replaceMacro(URL_HOST_MACRO, subdomain).expand(); final InvibesBidRequest parameter = resolveParameter(invibesParams, request); final Device device = request.getDevice(); diff --git a/src/main/java/org/prebid/server/bidder/iqx/IqxBidder.java b/src/main/java/org/prebid/server/bidder/iqx/IqxBidder.java index 0b03d75a47c..26704bbaa75 100644 --- a/src/main/java/org/prebid/server/bidder/iqx/IqxBidder.java +++ b/src/main/java/org/prebid/server/bidder/iqx/IqxBidder.java @@ -22,7 +22,7 @@ import org.prebid.server.proto.openrtb.ext.request.iqx.ExtImpIqx; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -32,17 +32,17 @@ public class IqxBidder implements Bidder { - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; - private static final String HOST_MACRO = "{{Host}}"; + private static final String SOURCE_ID_MACRO = "SourceId"; + private static final String HOST_MACRO = "Host"; private static final TypeReference> IQX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public IqxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -85,8 +85,9 @@ private static BidRequest updateBidRequest(BidRequest bidRequest, Imp imp) { private String resolveEndpoint(ExtImpIqx extImpIqx) { return endpointUrl - .replace(SOURCE_ID_MACRO, StringUtils.defaultString(extImpIqx.getPid())) - .replace(HOST_MACRO, StringUtils.defaultString(extImpIqx.getEnv())); + .replaceMacro(SOURCE_ID_MACRO, StringUtils.defaultString(extImpIqx.getPid())) + .replaceMacro(HOST_MACRO, StringUtils.defaultString(extImpIqx.getEnv())) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/kayzen/KayzenBidder.java b/src/main/java/org/prebid/server/bidder/kayzen/KayzenBidder.java index 342c64dee21..fc30b5886e7 100644 --- a/src/main/java/org/prebid/server/bidder/kayzen/KayzenBidder.java +++ b/src/main/java/org/prebid/server/bidder/kayzen/KayzenBidder.java @@ -19,7 +19,7 @@ import org.prebid.server.proto.openrtb.ext.request.kayzen.ExtImpKayzen; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -32,15 +32,15 @@ public class KayzenBidder implements Bidder { private static final TypeReference> KAYZEN_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_ZONE_ID_MACRO = "{{ZoneID}}"; - private static final String URL_ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String URL_ZONE_ID_MACRO = "ZoneID"; + private static final String URL_ACCOUNT_ID_MACRO = "AccountID"; private static final int FIRST_IMP_INDEX = 0; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public KayzenBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -71,10 +71,11 @@ private ExtImpKayzen parseImpExt(Imp imp) { } private HttpRequest createRequest(ExtImpKayzen extImpKayzen, BidRequest request, List imps) { - final String url = endpointUrl.replace(URL_ZONE_ID_MACRO, extImpKayzen.getZone()) - .replace(URL_ACCOUNT_ID_MACRO, extImpKayzen.getExchange()); + final String url = endpointUrl + .replaceMacro(URL_ZONE_ID_MACRO, extImpKayzen.getZone()) + .replaceMacro(URL_ACCOUNT_ID_MACRO, extImpKayzen.getExchange()) + .expand(); final BidRequest outgoingRequest = request.toBuilder().imp(imps).build(); - return BidderUtil.defaultRequest(outgoingRequest, url, mapper); } diff --git a/src/main/java/org/prebid/server/bidder/krushmedia/KrushmediaBidder.java b/src/main/java/org/prebid/server/bidder/krushmedia/KrushmediaBidder.java index 835d3781a1a..a6af9db3500 100644 --- a/src/main/java/org/prebid/server/bidder/krushmedia/KrushmediaBidder.java +++ b/src/main/java/org/prebid/server/bidder/krushmedia/KrushmediaBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.krushmedia.ExtImpKrushmedia; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -35,13 +36,13 @@ public class KrushmediaBidder implements Bidder { private static final TypeReference> KRUSHMEDIA_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URI_ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String URI_ACCOUNT_ID_MACRO = "AccountID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public KrushmediaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -83,7 +84,7 @@ private ExtImpKrushmedia parseImpExt(Imp imp) { } private String resolveEndpoint(String accountId) { - return endpointUrl.replace(URI_ACCOUNT_ID_MACRO, StringUtils.stripToEmpty(accountId)); + return endpointUrl.replaceMacro(URI_ACCOUNT_ID_MACRO, StringUtils.stripToEmpty(accountId)).expand(); } private static List removeFirstImpExt(List imps) { diff --git a/src/main/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidder.java b/src/main/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidder.java index beae5890d09..988e83087ba 100644 --- a/src/main/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidder.java +++ b/src/main/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidder.java @@ -21,6 +21,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -32,14 +33,14 @@ public class LemmaDigitalBidder implements Bidder { private static final TypeReference> LEMMA_DIGITAL_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String AD_UNIT_MACRO = "{{AdUnit}}"; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String AD_UNIT_MACRO = "AdUnit"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public LemmaDigitalBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -83,8 +84,9 @@ private HttpRequest createRequest(ExtImpLemmaDigital extImpLemmaDigi private String resolveUrl(ExtImpLemmaDigital extImpLemmaDigital) { return endpointUrl - .replace(AD_UNIT_MACRO, String.valueOf(extImpLemmaDigital.getAid())) - .replace(PUBLISHER_ID_MACRO, String.valueOf(extImpLemmaDigital.getPid())); + .replaceMacro(AD_UNIT_MACRO, String.valueOf(extImpLemmaDigital.getAid())) + .replaceMacro(PUBLISHER_ID_MACRO, String.valueOf(extImpLemmaDigital.getPid())) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidder.java b/src/main/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidder.java index 4e1924689ca..0afae4b5182 100644 --- a/src/main/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidder.java +++ b/src/main/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidder.java @@ -22,7 +22,7 @@ import org.prebid.server.proto.openrtb.ext.request.limelightdigital.ExtImpLimeLightDigital; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -38,10 +38,10 @@ public class LimeLightDigitalBidder implements Bidder { }; private static final String BIDDER_CURRENCY = "USD"; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String URL_PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String URL_HOST_MACRO = "Host"; + private static final String URL_PUBLISHER_ID_MACRO = "PublisherID"; - private final String endpointUrl; + private final Uri endpointUrl; private final CurrencyConversionService currencyConversionService; private final JacksonMapper mapper; @@ -49,7 +49,7 @@ public LimeLightDigitalBidder(String endpointUrl, CurrencyConversionService currencyConversionService, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.mapper = Objects.requireNonNull(mapper); } @@ -84,9 +84,10 @@ private ExtImpLimeLightDigital parseExtImp(Imp imp) { } private String resolveEndpoint(ExtImpLimeLightDigital extImp) { - final String publisherId = String.valueOf(extImp.getPublisherId()); - return endpointUrl.replace(URL_HOST_MACRO, HttpUtil.encodeUrl(extImp.getHost())) - .replace(URL_PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(publisherId)); + return endpointUrl + .replaceMacro(URL_HOST_MACRO, extImp.getHost()) + .replaceMacro(URL_PUBLISHER_ID_MACRO, String.valueOf(extImp.getPublisherId())) + .expand(); } private Imp modifyImp(Imp imp, BidRequest request) { diff --git a/src/main/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidder.java b/src/main/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidder.java index c719a551712..1b214076dd8 100644 --- a/src/main/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidder.java @@ -22,6 +22,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -35,14 +36,14 @@ public class LmKiviAdsBidder implements Bidder { private static final TypeReference> LMKIVIADS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String HOST_MACRO = "{{Host}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String HOST_MACRO = "Host"; + private static final String SOURCE_ID_MACRO = "SourceId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public LmKiviAdsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -75,8 +76,9 @@ private ExtImpLmKiviAds parseImpExt(Imp imp) { private String resolveUrl(ExtImpLmKiviAds extImpLmKiviads) { return endpointUrl - .replace(HOST_MACRO, extImpLmKiviads.getEnv()) - .replace(SOURCE_ID_MACRO, extImpLmKiviads.getPid()); + .replaceMacro(HOST_MACRO, extImpLmKiviads.getEnv()) + .replaceMacro(SOURCE_ID_MACRO, extImpLmKiviads.getPid()) + .expand(); } private HttpRequest makeHttpRequest(BidRequest request, String endpointUrl) { diff --git a/src/main/java/org/prebid/server/bidder/lunamedia/LunamediaBidder.java b/src/main/java/org/prebid/server/bidder/lunamedia/LunamediaBidder.java index a0ef293d3d0..053d2192bd6 100644 --- a/src/main/java/org/prebid/server/bidder/lunamedia/LunamediaBidder.java +++ b/src/main/java/org/prebid/server/bidder/lunamedia/LunamediaBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.lunamedia.ExtImpLunamedia; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -42,11 +43,11 @@ public class LunamediaBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public LunamediaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -149,11 +150,9 @@ private List> buildBidderRequests(BidRequest bidRequest, final List imps = impExtAndListOfImps.getValue(); final BidRequest updatedBidRequest = makeBidRequest(bidRequest, extImpLunamedia, imps); - final String url = endpointUrl + extImpLunamedia.getPubid(); - final HttpRequest createdBidRequest = HttpRequest.builder() .method(HttpMethod.POST) - .uri(url) + .uri(endpointUrl.replaceMacro("Pid", extImpLunamedia.getPubid()).expand()) .body(mapper.encodeToBytes(updatedBidRequest)) .headers(headers()) .payload(updatedBidRequest) diff --git a/src/main/java/org/prebid/server/bidder/madvertise/MadvertiseBidder.java b/src/main/java/org/prebid/server/bidder/madvertise/MadvertiseBidder.java index 896d7baecef..c609366d821 100644 --- a/src/main/java/org/prebid/server/bidder/madvertise/MadvertiseBidder.java +++ b/src/main/java/org/prebid/server/bidder/madvertise/MadvertiseBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.madvertise.ExtImpMadvertise; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -38,14 +39,14 @@ public class MadvertiseBidder implements Bidder { private static final int ZONE_ID_MIN_LENGTH = 7; private static final String X_OPENRTB_VERSION = "2.5"; - private static final String ZONE_ID_MACRO = "{{ZoneID}}"; + private static final String ZONE_ID_MACRO = "ZoneID"; private static final Set VIDEO_BID_ATTRS = Set.of(16, 6, 7); + private final Uri endpointUrl; private final JacksonMapper mapper; - private final String endpointUrl; public MadvertiseBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -89,7 +90,7 @@ private ExtImpMadvertise parseImpExt(Imp imp) { } private HttpRequest createRequest(BidRequest request, String zoneID) { - final String url = endpointUrl.replace(ZONE_ID_MACRO, HttpUtil.encodeUrl(zoneID)); + final String url = endpointUrl.replaceMacro(ZONE_ID_MACRO, zoneID).expand(); return HttpRequest.builder() .method(HttpMethod.POST) diff --git a/src/main/java/org/prebid/server/bidder/mediago/MediaGoBidder.java b/src/main/java/org/prebid/server/bidder/mediago/MediaGoBidder.java index 69cc2cc52a5..aad120c9c27 100644 --- a/src/main/java/org/prebid/server/bidder/mediago/MediaGoBidder.java +++ b/src/main/java/org/prebid/server/bidder/mediago/MediaGoBidder.java @@ -27,6 +27,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -42,8 +43,8 @@ public class MediaGoBidder implements Bidder { }; private static final String BIDDER_NAME = "mediago"; - private static final String HOST_MACRO = "{{Host}}"; - private static final String ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String HOST_MACRO = "Host"; + private static final String ACCOUNT_ID_MACRO = "AccountID"; private static final String X_OPENRTB_VERSION = "2.5"; private static final String DEFAULT_REGION = "us"; @@ -52,11 +53,11 @@ public class MediaGoBidder implements Bidder { "EU", "eu", "US", "us"); - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public MediaGoBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -142,10 +143,11 @@ private static MultiMap makeHeaders() { } private String resolveEndpoint(MediaGoExt ext) { + final String host = REGIONS_MAP.getOrDefault(StringUtils.defaultString(ext.getRegion()), DEFAULT_REGION); return endpointUrl - .replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(ext.getToken())) - .replace(HOST_MACRO, HttpUtil.encodeUrl( - REGIONS_MAP.getOrDefault(StringUtils.defaultString(ext.getRegion()), DEFAULT_REGION))); + .replaceMacro(ACCOUNT_ID_MACRO, ext.getToken()) + .replaceMacro(HOST_MACRO, host) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/melozen/MeloZenBidder.java b/src/main/java/org/prebid/server/bidder/melozen/MeloZenBidder.java index 226a9a60149..58e1b10b68d 100644 --- a/src/main/java/org/prebid/server/bidder/melozen/MeloZenBidder.java +++ b/src/main/java/org/prebid/server/bidder/melozen/MeloZenBidder.java @@ -30,7 +30,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -45,12 +45,12 @@ public class MeloZenBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; private static final String BIDDER_CURRENCY = "USD"; private static final String EXT_PREBID = "prebid"; private final CurrencyConversionService currencyConversionService; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public MeloZenBidder(CurrencyConversionService currencyConversionService, @@ -58,7 +58,7 @@ public MeloZenBidder(CurrencyConversionService currencyConversionService, JacksonMapper mapper) { this.currencyConversionService = Objects.requireNonNull(currencyConversionService); - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpointUrl = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -120,7 +120,8 @@ private Price resolveBidFloor(BidRequest bidRequest, Imp imp) { private String resolveEndpoint(MeloZenImpExt impExt) { return endpointUrl - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(StringUtils.defaultString(impExt.getPubId()))); + .replaceMacro(PUBLISHER_ID_MACRO, StringUtils.defaultString(impExt.getPubId())) + .expand(); } private List splitImpByMediaType(Imp imp) { diff --git a/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java b/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java index 7e57d054fab..ae67fb2b20b 100644 --- a/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java +++ b/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -37,14 +37,14 @@ public class MetaxBidder implements Bidder { private static final TypeReference> METAX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{publisherId}}"; - private static final String AD_UNIT_MACRO = "{{adUnit}}"; + private static final String PUBLISHER_ID_MACRO = "publisherId"; + private static final String AD_UNIT_MACRO = "adUnit"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public MetaxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -112,8 +112,9 @@ private String resolveEndpoint(ExtImpMetax extImpMetax) { .orElse("0"); return endpointUrl - .replace(PUBLISHER_ID_MACRO, publisherIdAsString) - .replace(AD_UNIT_MACRO, adUnitAsString); + .replaceMacro(PUBLISHER_ID_MACRO, publisherIdAsString) + .replaceMacro(AD_UNIT_MACRO, adUnitAsString) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidder.java b/src/main/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidder.java index e1ade2c251a..7672b2d35f9 100644 --- a/src/main/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidder.java +++ b/src/main/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.minutemedia.ExtImpMinuteMedia; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -34,15 +34,15 @@ public class MinuteMediaBidder implements Bidder { private static final TypeReference> MINUTE_MEDIA_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - public static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; + public static final String PUBLISHER_ID_MACRO = "PublisherId"; - private final String endpointUrl; - private final String testEndpointUrl; + private final Uri endpointUrl; + private final Uri testEndpointUrl; private final JacksonMapper mapper; public MinuteMediaBidder(String endpointUrl, String testEndpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); - this.testEndpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(testEndpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); + this.testEndpointUrl = Uri.of(testEndpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -79,8 +79,8 @@ private ExtImpMinuteMedia parseImpExt(Imp imp) { } private String makeUrl(String orgId, Integer test) { - final String url = Objects.equals(test, 1) ? testEndpointUrl : endpointUrl; - return url.replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(orgId)); + final Uri url = Objects.equals(test, 1) ? testEndpointUrl : endpointUrl; + return url.replaceMacro(PUBLISHER_ID_MACRO, orgId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java index 412462d2180..4cfaa156e9b 100644 --- a/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java +++ b/src/main/java/org/prebid/server/bidder/missena/MissenaBidder.java @@ -25,6 +25,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import org.prebid.server.version.PrebidVersionProvider; import java.math.BigDecimal; @@ -40,9 +41,9 @@ public class MissenaBidder implements Bidder { }; private static final String USD_CURRENCY = "USD"; private static final String EUR_CURRENCY = "EUR"; - private static final String PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; private final CurrencyConversionService currencyConversionService; private final PrebidVersionProvider prebidVersionProvider; @@ -52,7 +53,7 @@ public MissenaBidder(String endpointUrl, CurrencyConversionService currencyConversionService, PrebidVersionProvider prebidVersionProvider) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.prebidVersionProvider = Objects.requireNonNull(prebidVersionProvider); @@ -179,7 +180,7 @@ private MultiMap makeHeaders(Device device, Site site) { } private String resolveEndpointUrl(String apiKey) { - return endpointUrl.replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(apiKey)); + return endpointUrl.replaceMacro(PUBLISHER_ID_MACRO, apiKey).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java b/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java index 9a322b2ae0d..481c5f784c7 100644 --- a/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java +++ b/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.mobfoxpb.ExtImpMobfoxpb; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -31,22 +31,23 @@ public class MobfoxpbBidder implements Bidder { + private static final TypeReference> MOBFOXPB_EXT_TYPE_REFERENCE = + new TypeReference<>() { + }; + private static final String ROUTE_RTB = "rtb"; private static final String METHOD_RTB = "req"; private static final String ROUTE_NATIVE = "o"; private static final String METHOD_NATIVE = "ortb"; - private static final String URL_KEY_MACROS = "__key__"; - private static final String URL_ROUTE_MACROS = "__route__"; - private static final String URL_METHOD_MACROS = "__method__"; - private final String endpointUrl; - private final JacksonMapper mapper; + private static final String URL_KEY_MACROS = "key"; + private static final String URL_ROUTE_MACROS = "route"; + private static final String URL_METHOD_MACROS = "method"; - private static final TypeReference> MOBFOXPB_EXT_TYPE_REFERENCE = - new TypeReference<>() { - }; + private final Uri endpointUrl; + private final JacksonMapper mapper; public MobfoxpbBidder(String endpoint, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpointUrl = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -83,19 +84,12 @@ private ExtImpMobfoxpb parseImpExt(Imp imp) { } private String buildUri(String key) { - final String route; - final String method; - String uri = endpointUrl; - if (StringUtils.isNotEmpty(key)) { - route = ROUTE_RTB; - method = METHOD_RTB; - uri = uri.replace(URL_KEY_MACROS, key); - } else { - route = ROUTE_NATIVE; - method = METHOD_NATIVE; - } - - return uri.replace(URL_ROUTE_MACROS, route).replace(URL_METHOD_MACROS, method); + final boolean keyPresent = StringUtils.isNotEmpty(key); + return endpointUrl + .replaceMacro(URL_KEY_MACROS, keyPresent ? key : null) + .replaceMacro(URL_ROUTE_MACROS, keyPresent ? ROUTE_RTB : ROUTE_NATIVE) + .replaceMacro(URL_METHOD_MACROS, keyPresent ? METHOD_RTB : METHOD_NATIVE) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java b/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java index c81bedc6355..a4492e4edc9 100644 --- a/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java +++ b/src/main/java/org/prebid/server/bidder/motorik/MotorikBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -37,11 +38,11 @@ public class MotorikBidder implements Bidder { private static final TypeReference> MOTORIK_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public MotorikBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -89,8 +90,10 @@ private HttpRequest makeHttpRequest(BidRequest bidRequest, ExtImpMot } private String makeUrl(ExtImpMotorik extImpMotorik) { - return endpointUrl.replace("{{AccountID}}", extImpMotorik.getAccountId()) - .replace("{{SourceId}}", extImpMotorik.getPlacementId()); + return endpointUrl + .replaceMacro("AccountID", extImpMotorik.getAccountId()) + .replaceMacro("SourceId", extImpMotorik.getPlacementId()) + .expand(); } private MultiMap makeRequestHeaders(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/oms/OmsBidder.java b/src/main/java/org/prebid/server/bidder/oms/OmsBidder.java index ad54caec341..4e6d9a21612 100644 --- a/src/main/java/org/prebid/server/bidder/oms/OmsBidder.java +++ b/src/main/java/org/prebid/server/bidder/oms/OmsBidder.java @@ -23,7 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -32,15 +32,15 @@ public class OmsBidder implements Bidder { - private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherId"; private static final TypeReference> EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public OmsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -49,8 +49,7 @@ public Result>> makeHttpRequests(BidRequest request try { final ExtImpOms impExt = parseImpExt(request.getImp().getFirst()); final String publisherId = resolverPublisherId(impExt.getPid(), impExt.getPublisherId()); - final String encodedPublisherId = HttpUtil.encodeUrl(publisherId); - final String url = endpointUrl.replace(PUBLISHER_ID_MACRO, encodedPublisherId); + final String url = endpointUrl.replaceMacro(PUBLISHER_ID_MACRO, publisherId).expand(); return Result.withValue(BidderUtil.defaultRequest(request, url, mapper)); } catch (PreBidException e) { return Result.withError(BidderError.badInput(e.getMessage())); diff --git a/src/main/java/org/prebid/server/bidder/onetag/OnetagBidder.java b/src/main/java/org/prebid/server/bidder/onetag/OnetagBidder.java index ec6c9718ea5..467cd7c416a 100644 --- a/src/main/java/org/prebid/server/bidder/onetag/OnetagBidder.java +++ b/src/main/java/org/prebid/server/bidder/onetag/OnetagBidder.java @@ -20,7 +20,7 @@ import org.prebid.server.proto.openrtb.ext.request.onetag.ExtImpOnetag; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -32,13 +32,13 @@ public class OnetagBidder implements Bidder { private static final TypeReference> ONETAG_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_PUBLISHER_ID_MACRO = "{{publisherId}}"; + private static final String URL_PUBLISHER_ID_MACRO = "publisherId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public OnetagBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -54,7 +54,9 @@ public Result>> makeHttpRequests(BidRequest request } } - final String url = endpointUrl.replace(URL_PUBLISHER_ID_MACRO, StringUtils.defaultString(requestPubId)); + final String url = endpointUrl + .replaceMacro(URL_PUBLISHER_ID_MACRO, StringUtils.defaultString(requestPubId)) + .expand(); return Result.withValue(BidderUtil.defaultRequest(request, url, mapper)); } diff --git a/src/main/java/org/prebid/server/bidder/operaads/OperaadsBidder.java b/src/main/java/org/prebid/server/bidder/operaads/OperaadsBidder.java index ab93ea6d4fb..76764281af1 100644 --- a/src/main/java/org/prebid/server/bidder/operaads/OperaadsBidder.java +++ b/src/main/java/org/prebid/server/bidder/operaads/OperaadsBidder.java @@ -28,8 +28,8 @@ import org.prebid.server.proto.openrtb.ext.request.operaads.ExtImpOperaads; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Arrays; @@ -44,15 +44,15 @@ public class OperaadsBidder implements Bidder { private static final TypeReference> OPERAADS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}"; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; + private static final String PUBLISHER_ID_MACRO = "PublisherId"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; private static final String BIDDER_CURRENCY = "USD"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public OperaadsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -179,8 +179,9 @@ private HttpRequest createRequest(BidRequest bidRequest, Imp imp, Ex private String resolveUrl(ExtImpOperaads extImpOperaads) { return endpointUrl - .replace(PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(extImpOperaads.getPublisherId())) - .replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(extImpOperaads.getEndpointId())); + .replaceMacro(PUBLISHER_ID_MACRO, extImpOperaads.getPublisherId()) + .replaceMacro(ACCOUNT_ID_MACRO, extImpOperaads.getEndpointId()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/ownadx/OwnAdxBidder.java b/src/main/java/org/prebid/server/bidder/ownadx/OwnAdxBidder.java index 226d956c8e1..e184b506ded 100644 --- a/src/main/java/org/prebid/server/bidder/ownadx/OwnAdxBidder.java +++ b/src/main/java/org/prebid/server/bidder/ownadx/OwnAdxBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,15 +39,15 @@ public class OwnAdxBidder implements Bidder { new TypeReference<>() { }; private static final String X_OPEN_RTB_VERSION = "2.5"; - private static final String SEAT_ID_MACROS_ENDPOINT = "{{SeatID}}"; - private static final String SSP_ID_MACROS_ENDPOINT = "{{SspID}}"; - private static final String TOKEN_ID_MACROS_ENDPOINT = "{{TokenID}}"; + private static final String SEAT_ID_MACROS_ENDPOINT = "SeatID"; + private static final String SSP_ID_MACROS_ENDPOINT = "SspID"; + private static final String TOKEN_ID_MACROS_ENDPOINT = "TokenID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public OwnAdxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -88,9 +89,10 @@ private HttpRequest createHttpRequest(BidRequest bidRequest, ExtImpO private String makeUrl(ExtImpOwnAdx extImpOwnAdx) { final Optional ownAdx = Optional.ofNullable(extImpOwnAdx); return endpointUrl - .replace(SEAT_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getSeatId).orElse(StringUtils.EMPTY)) - .replace(SSP_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getSspId).orElse(StringUtils.EMPTY)) - .replace(TOKEN_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getTokenId).orElse(StringUtils.EMPTY)); + .replaceMacro(SEAT_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getSeatId).orElse(StringUtils.EMPTY)) + .replaceMacro(SSP_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getSspId).orElse(StringUtils.EMPTY)) + .replaceMacro(TOKEN_ID_MACROS_ENDPOINT, ownAdx.map(ExtImpOwnAdx::getTokenId).orElse(StringUtils.EMPTY)) + .expand(); } private static MultiMap makeHeaders() { diff --git a/src/main/java/org/prebid/server/bidder/rediads/RediadsBidder.java b/src/main/java/org/prebid/server/bidder/rediads/RediadsBidder.java index c0dad6f8760..bc7f5275f7d 100644 --- a/src/main/java/org/prebid/server/bidder/rediads/RediadsBidder.java +++ b/src/main/java/org/prebid/server/bidder/rediads/RediadsBidder.java @@ -25,7 +25,7 @@ import org.prebid.server.proto.openrtb.ext.request.rediads.ExtImpRediads; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -38,14 +38,14 @@ public class RediadsBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String SUBDOMAIN_MACRO = "{{SUBDOMAIN}}"; + private static final String SUBDOMAIN_MACRO = "SUBDOMAIN"; - private final String endpointUrl; + private final Uri endpointUrl; private final String defaultSubdomain; private final JacksonMapper mapper; public RediadsBidder(String endpointUrl, JacksonMapper mapper, String defaultSubdomain) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); this.defaultSubdomain = Objects.requireNonNull(defaultSubdomain); } @@ -125,7 +125,9 @@ private static App modifyApp(App app, String accountId) { } private String resolveEndpointUrl(String subdomain) { - return endpointUrl.replace(SUBDOMAIN_MACRO, StringUtils.defaultIfBlank(subdomain, defaultSubdomain)); + return endpointUrl + .replaceMacro(SUBDOMAIN_MACRO, StringUtils.defaultIfBlank(subdomain, defaultSubdomain)) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidder.java b/src/main/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidder.java index 2763512929f..67a82c75777 100644 --- a/src/main/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidder.java +++ b/src/main/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidder.java @@ -36,6 +36,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -54,15 +55,15 @@ public class RelevantDigitalBidder implements Bidder { private static final String RELEVANT_COUNT_PROPERTY = "count"; private static final String RELEVANT_ADAPTER_TYPE_PROPERTY = "adapterType"; private static final String ADAPTER_TYPE = "server"; - private static final String HOST_MACRO = "{{Host}}"; + private static final String HOST_MACRO = "Host"; private static final long DEFAULT_TMAX = 1000L; private static final String EXT_PREBID = "prebid"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public RelevantDigitalBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -174,7 +175,7 @@ private String makeUrl(String host) { .replace("http://", "") .replace("https://", "") .replace(".relevant-digital.com", ""); - return endpointUrl.replace(HOST_MACRO, modifiedHost); + return endpointUrl.replaceMacro(HOST_MACRO, modifiedHost).expand(); } private static MultiMap makeHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/roulax/RoulaxBidder.java b/src/main/java/org/prebid/server/bidder/roulax/RoulaxBidder.java index d21dd3f4b68..30234036841 100644 --- a/src/main/java/org/prebid/server/bidder/roulax/RoulaxBidder.java +++ b/src/main/java/org/prebid/server/bidder/roulax/RoulaxBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.roulax.ExtImpRoulax; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -31,18 +31,18 @@ public class RoulaxBidder implements Bidder { - private final String endpointUrl; - private final JacksonMapper mapper; - - private static final String PUBLISHER_PATH_MACRO = "{{PublisherID}}"; - private static final String ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String PUBLISHER_PATH_MACRO = "PublisherID"; + private static final String ACCOUNT_ID_MACRO = "AccountID"; private static final TypeReference> ROULAX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; + private final Uri endpointUrl; + private final JacksonMapper mapper; + public RoulaxBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -66,8 +66,9 @@ private ExtImpRoulax parseImpExt(Imp imp) { private String resolveEndpoint(ExtImpRoulax extImpRoulax) { return endpointUrl - .replace(PUBLISHER_PATH_MACRO, StringUtils.defaultString(extImpRoulax.getPublisherPath()).trim()) - .replace(ACCOUNT_ID_MACRO, StringUtils.defaultString(extImpRoulax.getPid()).trim()); + .replaceMacro(PUBLISHER_PATH_MACRO, StringUtils.defaultString(extImpRoulax.getPublisherPath()).trim()) + .replaceMacro(ACCOUNT_ID_MACRO, StringUtils.defaultString(extImpRoulax.getPid()).trim()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java b/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java index e36ea92767a..1e2a9c3d19d 100644 --- a/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java +++ b/src/main/java/org/prebid/server/bidder/screencore/ScreencoreBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; import org.prebid.server.util.ObjectUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.List; @@ -34,14 +35,15 @@ public class ScreencoreBidder implements Bidder { private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; + private static final String SOURCE_ID_MACRO = "SourceId"; private static final String X_OPENRTB_VERSION = "2.5"; - private final String endpointUrl; + + private final Uri endpointUrl; private final JacksonMapper mapper; public ScreencoreBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -90,8 +92,9 @@ private static BidRequest cleanUpFirstImpExt(BidRequest request) { private String resolveEndpoint(ScreencoreImpExt impExt) { return endpointUrl - .replace(ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(impExt.getAccountId())) - .replace(SOURCE_ID_MACRO, HttpUtil.encodeUrl(impExt.getPlacementId())); + .replaceMacro(ACCOUNT_ID_MACRO, impExt.getAccountId()) + .replaceMacro(SOURCE_ID_MACRO, impExt.getPlacementId()) + .expand(); } private static MultiMap makeHeaders(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidder.java b/src/main/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidder.java index d6e8a880778..9d261845ec0 100644 --- a/src/main/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidder.java +++ b/src/main/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -36,18 +37,19 @@ public class SeedingAllianceBidder implements Bidder { private static final TypeReference> EXT_IMP_TYPE_REFERENCE = - new TypeReference<>() { }; + new TypeReference<>() { + }; private static final String EUR_CURRENCY = "EUR"; private static final String AUCTION_PRICE_MACRO = "${AUCTION_PRICE}"; - private static final String ACCOUNT_ID_MACRO = "{{AccountId}}"; + private static final String ACCOUNT_ID_MACRO = "AccountId"; private static final String DEFAULT_ACCOUNT_ID = "pbs"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public SeedingAllianceBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -55,7 +57,7 @@ public SeedingAllianceBidder(String endpointUrl, JacksonMapper mapper) { public final Result>> makeHttpRequests(BidRequest bidRequest) { String accountId = null; final List modifiedImps = new ArrayList<>(); - for (Imp imp: bidRequest.getImp()) { + for (Imp imp : bidRequest.getImp()) { try { final ExtImpSeedingAlliance impExt = parseImpExt(imp); accountId = StringUtils.isNotBlank(impExt.getAccountId()) @@ -113,7 +115,7 @@ private HttpRequest makeHttpRequest(String accountId, BidRequest mod private String makeEndpoint(String accountId) { final String marcoReplacement = StringUtils.isNotBlank(accountId) ? accountId : DEFAULT_ACCOUNT_ID; - return endpointUrl.replace(ACCOUNT_ID_MACRO, marcoReplacement); + return endpointUrl.replaceMacro(ACCOUNT_ID_MACRO, marcoReplacement).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/silvermob/SilvermobBidder.java b/src/main/java/org/prebid/server/bidder/silvermob/SilvermobBidder.java index 2ab8323d075..19cd845a108 100644 --- a/src/main/java/org/prebid/server/bidder/silvermob/SilvermobBidder.java +++ b/src/main/java/org/prebid/server/bidder/silvermob/SilvermobBidder.java @@ -24,6 +24,7 @@ import org.prebid.server.proto.openrtb.ext.request.silvermob.ExtImpSilvermob; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -37,14 +38,14 @@ public class SilvermobBidder implements Bidder { new TypeReference<>() { }; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String URL_ZONE_ID_MACRO = "{{ZoneID}}"; + private static final String URL_HOST_MACRO = "Host"; + private static final String URL_ZONE_ID_MACRO = "ZoneID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public SilvermobBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -104,8 +105,9 @@ private static Boolean isInvalidHost(String host) { private String resolveEndpoint(ExtImpSilvermob extImp) { return endpointUrl - .replace(URL_HOST_MACRO, extImp.getHost()) - .replace(URL_ZONE_ID_MACRO, HttpUtil.encodeUrl(extImp.getZoneId())); + .replaceMacro(URL_HOST_MACRO, extImp.getHost()) + .replaceMacro(URL_ZONE_ID_MACRO, extImp.getZoneId()) + .expand(); } private static MultiMap resolveHeaders(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java b/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java index 0004ae00ab3..e9b7458dc1d 100644 --- a/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java +++ b/src/main/java/org/prebid/server/bidder/smarthub/SmarthubBidder.java @@ -25,6 +25,7 @@ import org.prebid.server.proto.openrtb.ext.request.smarthub.ExtImpSmarthub; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collections; import java.util.List; @@ -36,11 +37,11 @@ public class SmarthubBidder implements Bidder { new TypeReference<>() { }; - private final String endpoint; + private final Uri endpoint; private final JacksonMapper mapper; public SmarthubBidder(String endpoint, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -68,9 +69,11 @@ private MultiMap resolveHeaders() { } private String buildEndpointUrl(ExtImpSmarthub extImpSmarthub) { - return endpoint.replace("{{Host}}", StringUtils.defaultString(extImpSmarthub.getPartnerName())) - .replace("{{AccountID}}", extImpSmarthub.getSeat()) - .replace("{{SourceId}}", extImpSmarthub.getToken()); + return endpoint + .replaceMacro("Host", StringUtils.defaultString(extImpSmarthub.getPartnerName())) + .replaceMacro("AccountID", extImpSmarthub.getSeat()) + .replaceMacro("SourceId", extImpSmarthub.getToken()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/smartrtb/SmartrtbBidder.java b/src/main/java/org/prebid/server/bidder/smartrtb/SmartrtbBidder.java index c32e55cb543..33e94fc8472 100644 --- a/src/main/java/org/prebid/server/bidder/smartrtb/SmartrtbBidder.java +++ b/src/main/java/org/prebid/server/bidder/smartrtb/SmartrtbBidder.java @@ -23,9 +23,9 @@ import org.prebid.server.json.JacksonMapper; import org.prebid.server.proto.openrtb.ext.ExtPrebid; import org.prebid.server.proto.openrtb.ext.request.smartrtb.ExtImpSmartrtb; -import org.prebid.server.proto.openrtb.ext.request.smartrtb.ExtRequestSmartrtb; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -41,11 +41,11 @@ public class SmartrtbBidder implements Bidder { private static final String CREATIVE_TYPE_BANNER = "BANNER"; private static final String CREATIVE_TYPE_VIDEO = "VIDEO"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public SmartrtbBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -77,12 +77,10 @@ public Result>> makeHttpRequests(BidRequest request if (StringUtils.isEmpty(pubId)) { errors.add(BidderError.badInput("Cannot infer publisher ID from bid ext")); return Result.of(null, errors); - } else { - ExtRequestSmartrtb.of(pubId, null, null); } final BidRequest outgoingRequest = request.toBuilder().imp(validImps).build(); - final String requestUrl = endpointUrl + pubId; + final String requestUrl = endpointUrl.replaceMacro("PubId", pubId).expand(); final MultiMap headers = HttpUtil.headers().add(HttpUtil.X_OPENRTB_VERSION_HEADER, "2.5"); return Result.of(Collections.singletonList( diff --git a/src/main/java/org/prebid/server/bidder/smartyads/SmartyAdsBidder.java b/src/main/java/org/prebid/server/bidder/smartyads/SmartyAdsBidder.java index 9b466c5f296..02e45d22284 100644 --- a/src/main/java/org/prebid/server/bidder/smartyads/SmartyAdsBidder.java +++ b/src/main/java/org/prebid/server/bidder/smartyads/SmartyAdsBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.smartyads.ExtImpSmartyAds; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -34,15 +35,15 @@ public class SmartyAdsBidder implements Bidder { private static final TypeReference> SMARTYADS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String URL_HOST_MACRO = "{{Host}}"; - private static final String URL_SOURCE_ID_MACRO = "{{SourceId}}"; - private static final String URL_ACCOUNT_ID_MACRO = "{{AccountID}}"; + private static final String URL_HOST_MACRO = "Host"; + private static final String URL_SOURCE_ID_MACRO = "SourceId"; + private static final String URL_ACCOUNT_ID_MACRO = "AccountID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public SmartyAdsBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -97,9 +98,10 @@ private static Imp updateImp(Imp imp) { private String resolveUrl(ExtImpSmartyAds extImp) { return endpointUrl - .replace(URL_HOST_MACRO, extImp.getHost()) - .replace(URL_SOURCE_ID_MACRO, HttpUtil.encodeUrl(extImp.getSourceId())) - .replace(URL_ACCOUNT_ID_MACRO, HttpUtil.encodeUrl(extImp.getAccountId())); + .replaceMacro(URL_HOST_MACRO, extImp.getHost()) + .replaceMacro(URL_SOURCE_ID_MACRO, extImp.getSourceId()) + .replaceMacro(URL_ACCOUNT_ID_MACRO, extImp.getAccountId()) + .expand(); } private static MultiMap resolveHeaders(Device device) { diff --git a/src/main/java/org/prebid/server/bidder/smilewanted/SmileWantedBidder.java b/src/main/java/org/prebid/server/bidder/smilewanted/SmileWantedBidder.java index 67bfec26571..e75601bf389 100644 --- a/src/main/java/org/prebid/server/bidder/smilewanted/SmileWantedBidder.java +++ b/src/main/java/org/prebid/server/bidder/smilewanted/SmileWantedBidder.java @@ -21,6 +21,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collections; import java.util.List; @@ -31,17 +32,17 @@ public class SmileWantedBidder implements Bidder { private static final String SW_INTEGRATION_TYPE = "prebid_server"; private static final String X_OPENRTB_VERSION = "2.5"; private static final int DEFAULT_AT = 1; - private static final String ZONE_ID_MACRO = "{{ZoneId}}"; + private static final String ZONE_ID_MACRO = "ZoneId"; private static final TypeReference> SMILEWANTED_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public SmileWantedBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -56,7 +57,7 @@ public Result>> makeHttpRequests(BidRequest request } final BidRequest outgoingRequest = request.toBuilder().at(DEFAULT_AT).build(); - final String url = endpointUrl.replace(ZONE_ID_MACRO, HttpUtil.encodeUrl(extImpSmilewanted.getZoneId())); + final String url = endpointUrl.replaceMacro(ZONE_ID_MACRO, extImpSmilewanted.getZoneId()).expand(); return Result.withValue(BidderUtil.defaultRequest( outgoingRequest, diff --git a/src/main/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidder.java b/src/main/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidder.java index 1eb42956ec6..ce20fbf7cce 100644 --- a/src/main/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidder.java +++ b/src/main/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidder.java @@ -21,6 +21,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -29,15 +30,16 @@ public class SmrtconnectBidder implements Bidder { - private static final String SUPPLY_ID_MACRO = "{{SupplyId}}"; + private static final String SUPPLY_ID_MACRO = "SupplyId"; private static final TypeReference> SMRTCONNECT_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private final String endpointUrl; + + private final Uri endpointUrl; private final JacksonMapper mapper; public SmrtconnectBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -65,7 +67,7 @@ public final Result>> makeHttpRequests(BidRequest b } private String resolveEndpoint(String supplyId) { - return endpointUrl.replace(SUPPLY_ID_MACRO, HttpUtil.encodeUrl(supplyId)); + return endpointUrl.replaceMacro(SUPPLY_ID_MACRO, supplyId).expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java b/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java index 02e66f61b59..25b662b29e4 100644 --- a/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java +++ b/src/main/java/org/prebid/server/bidder/taboola/TaboolaBidder.java @@ -29,7 +29,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.spring.config.bidder.model.MediaType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -51,12 +51,12 @@ public class TaboolaBidder implements Bidder { new TypeReference<>() { }; - private final String endpoint; + private final Uri endpoint; private final String gvlId; private final JacksonMapper mapper; public TaboolaBidder(String endpoint, Integer gvlId, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.gvlId = gvlId != null ? String.valueOf(gvlId) : ""; this.mapper = Objects.requireNonNull(mapper); } @@ -220,9 +220,10 @@ private String buildEndpointUrl(BidRequest bidRequest, MediaType mediaType) { .orElse(StringUtils.EMPTY); return endpoint - .replace("{{GvlID}}", gvlId) - .replace("{{MediaType}}", type) - .replace("{{PublisherID}}", HttpUtil.encodeUrl(publisherId)); + .replaceMacro("GvlID", gvlId) + .replaceMacro("MediaType", type) + .replaceMacro("PublisherID", publisherId) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidder.java b/src/main/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidder.java index a2853b26d72..ce7e28fa8ec 100644 --- a/src/main/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidder.java +++ b/src/main/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidder.java @@ -27,7 +27,7 @@ import org.prebid.server.proto.openrtb.ext.request.thetradedesk.ExtImpTheTradeDesk; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.math.BigDecimal; import java.util.ArrayList; @@ -43,16 +43,16 @@ public class TheTradeDeskBidder implements Bidder { new TypeReference<>() { }; - private static final String SUPPLY_ID_MACRO = "{{SupplyId}}"; + private static final String SUPPLY_ID_MACRO = "SupplyId"; private static final Pattern SUPPLY_ID_PATTERN = Pattern.compile("([a-z]+)$"); private static final String PRICE_MACRO = "${AUCTION_PRICE}"; - private final String endpointUrl; + private final Uri endpointUrl; private final String supplyId; private final JacksonMapper mapper; public TheTradeDeskBidder(String endpointUrl, JacksonMapper mapper, String supplyId) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.supplyId = validateSupplyId(supplyId); this.mapper = Objects.requireNonNull(mapper); } @@ -93,7 +93,7 @@ public Result>> makeHttpRequests(BidRequest request if (StringUtils.isBlank(sourceSupplyId) && StringUtils.isBlank(supplyId)) { return Result.withError( - BidderError.badInput("Either supplySourceId or a default endpoint must be provided")); + BidderError.badInput("Either supplySourceId or a default endpoint must be provided")); } final BidRequest outgoingRequest = modifyRequest(request, modifiedImps, publisherId); @@ -173,9 +173,9 @@ private static App modifyApp(BidRequest request, String publisherId) { } private String resolveEndpoint(String sourceSupplyId) { - return endpointUrl.replace( - SUPPLY_ID_MACRO, - HttpUtil.encodeUrl(StringUtils.defaultString(ObjectUtils.defaultIfNull(sourceSupplyId, supplyId)))); + return endpointUrl + .replaceMacro(SUPPLY_ID_MACRO, ObjectUtils.firstNonNull(sourceSupplyId, supplyId, StringUtils.EMPTY)) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java b/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java index b8912da688f..66a3fe86367 100644 --- a/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java +++ b/src/main/java/org/prebid/server/bidder/tradplus/TradPlusBidder.java @@ -23,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.Collection; import java.util.Collections; @@ -36,14 +37,14 @@ public class TradPlusBidder implements Bidder { public static final String X_OPENRTB_VERSION = "2.5"; - private static final String ZONE_ID = "{{ZoneID}}"; - private static final String ACCOUNT_ID = "{{AccountID}}"; + private static final String ZONE_ID = "ZoneID"; + private static final String ACCOUNT_ID = "AccountID"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public TradPlusBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -76,14 +77,16 @@ private void validateImpExt(ExtImpTradPlus extImpTradPlus) { } } - private HttpRequest makeHttpRequest(ExtImpTradPlus extImpTradPlus, List imps, + private HttpRequest makeHttpRequest(ExtImpTradPlus extImpTradPlus, + List imps, BidRequest bidRequest) { - final String uri; - uri = endpointUrl.replace(ZONE_ID, extImpTradPlus.getZoneId()).replace(ACCOUNT_ID, - extImpTradPlus.getAccountId()); - final BidRequest outgoingRequest = bidRequest.toBuilder().imp(removeImpsExt(imps)).build(); + final String uri = endpointUrl + .replaceMacro(ZONE_ID, extImpTradPlus.getZoneId()) + .replaceMacro(ACCOUNT_ID, extImpTradPlus.getAccountId()) + .expand(); + final BidRequest outgoingRequest = bidRequest.toBuilder().imp(removeImpsExt(imps)).build(); return BidderUtil.defaultRequest(outgoingRequest, makeHeaders(), uri, mapper); } diff --git a/src/main/java/org/prebid/server/bidder/trafficgate/TrafficGateBidder.java b/src/main/java/org/prebid/server/bidder/trafficgate/TrafficGateBidder.java index 22809f0814c..9e9dd841fab 100644 --- a/src/main/java/org/prebid/server/bidder/trafficgate/TrafficGateBidder.java +++ b/src/main/java/org/prebid/server/bidder/trafficgate/TrafficGateBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.trafficgate.ExtImpTrafficGate; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -35,13 +35,13 @@ public class TrafficGateBidder implements Bidder { private static final TypeReference> TAPX_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String SUBDOMAIN_MACRO = "{{subdomain}}"; + private static final String SUBDOMAIN_MACRO = "subdomain"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public TrafficGateBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(endpointUrl); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -65,7 +65,7 @@ private HttpRequest createSingleRequest(ExtImpTrafficGate extImpTraf } private String resolveHost(ExtImpTrafficGate extImpTrafficGate) { - return endpointUrl.replace(SUBDOMAIN_MACRO, extImpTrafficGate.getHost()); + return endpointUrl.replaceMacro(SUBDOMAIN_MACRO, extImpTrafficGate.getHost()).expand(); } private ExtImpTrafficGate parseImpExt(Imp imp) { diff --git a/src/main/java/org/prebid/server/bidder/trustedstack/TrustedstackBidder.java b/src/main/java/org/prebid/server/bidder/trustedstack/TrustedstackBidder.java index 1a10bd933bb..14d03dfc9a8 100644 --- a/src/main/java/org/prebid/server/bidder/trustedstack/TrustedstackBidder.java +++ b/src/main/java/org/prebid/server/bidder/trustedstack/TrustedstackBidder.java @@ -17,7 +17,7 @@ import org.prebid.server.json.JacksonMapper; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -27,12 +27,13 @@ public class TrustedstackBidder implements Bidder { - private static final String EXTERNAL_URL_MACRO = "{{PREBID_SERVER_ENDPOINT}}"; + private static final String EXTERNAL_URL_MACRO = "PREBID_SERVER_ENDPOINT"; + private final String endpointUrl; private final JacksonMapper mapper; public TrustedstackBidder(String endpointUrl, String externalUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(resolveEndpoint(endpointUrl, externalUrl)); + this.endpointUrl = Uri.of(endpointUrl).replaceMacro(EXTERNAL_URL_MACRO, externalUrl).expand(); this.mapper = Objects.requireNonNull(mapper); } @@ -85,9 +86,8 @@ private static BidType resolveBidType(Bid bid, List imps) { case 2 -> BidType.video; case 3 -> BidType.audio; case 4 -> BidType.xNative; - default -> - throw new PreBidException("Unable to fetch mediaType: %s" - .formatted(bid.getImpid())); + default -> throw new PreBidException("Unable to fetch mediaType: %s" + .formatted(bid.getImpid())); }; } @@ -120,8 +120,4 @@ private static BidType resolveBidTypeFromImpId(String impId, List imps) { return BidType.banner; } - - private String resolveEndpoint(String endpointUrl, String externalUrl) { - return Objects.requireNonNull(endpointUrl).replace(EXTERNAL_URL_MACRO, HttpUtil.encodeUrl(externalUrl)); - } } diff --git a/src/main/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidder.java b/src/main/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidder.java index 7ce127d79cd..ed4822007c6 100644 --- a/src/main/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidder.java +++ b/src/main/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidder.java @@ -19,7 +19,7 @@ import org.prebid.server.proto.openrtb.ext.request.videoheroes.ExtImpVideoHeroes; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -33,14 +33,14 @@ public class VideoHeroesBidder implements Bidder { new TypeReference<>() { }; - private static final String URL_PUBLISHER_ID_MACRO = "{{PublisherID}}"; + private static final String URL_PUBLISHER_ID_MACRO = "PublisherID"; private static final int FIRST_IMP_INDEX = 0; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public VideoHeroesBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -76,7 +76,7 @@ private ExtImpVideoHeroes parseImpExt(Imp imp) { } private String resolveEndpoint(String publisherId) { - return endpointUrl.replace(URL_PUBLISHER_ID_MACRO, HttpUtil.encodeUrl(publisherId)); + return endpointUrl.replaceMacro(URL_PUBLISHER_ID_MACRO, publisherId).expand(); } private HttpRequest createRequest(List imp, diff --git a/src/main/java/org/prebid/server/bidder/xeworks/XeworksBidder.java b/src/main/java/org/prebid/server/bidder/xeworks/XeworksBidder.java index 82cb504b5e3..cf4b5d65e11 100644 --- a/src/main/java/org/prebid/server/bidder/xeworks/XeworksBidder.java +++ b/src/main/java/org/prebid/server/bidder/xeworks/XeworksBidder.java @@ -22,7 +22,7 @@ import org.prebid.server.proto.openrtb.ext.request.xeworks.ExtImpXeworks; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -36,14 +36,14 @@ public class XeworksBidder implements Bidder { private static final TypeReference> XEWORKS_EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String HOST_MACRO = "{{Host}}"; - private static final String SOURCE_ID_MACRO = "{{SourceId}}"; + private static final String HOST_MACRO = "Host"; + private static final String SOURCE_ID_MACRO = "SourceId"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public XeworksBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -76,8 +76,10 @@ private ExtImpXeworks parseImpExt(Imp imp) { } private String buildEndpointUrl(ExtImpXeworks extImpXeworks) { - return endpointUrl.replace(HOST_MACRO, extImpXeworks.getEnv()) - .replace(SOURCE_ID_MACRO, extImpXeworks.getPid()); + return endpointUrl + .replaceMacro(HOST_MACRO, extImpXeworks.getEnv()) + .replaceMacro(SOURCE_ID_MACRO, extImpXeworks.getPid()) + .expand(); } @Override diff --git a/src/main/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidder.java b/src/main/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidder.java index c33de175781..2f40e569566 100644 --- a/src/main/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidder.java +++ b/src/main/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidder.java @@ -24,7 +24,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -40,15 +40,14 @@ public class YeahmobiBidder implements Bidder { private static final TypeReference> EXT_TYPE_REFERENCE = new TypeReference<>() { }; - private static final String HOST_MACRO = "{{Host}}"; - private static final String HOST_PATTERN = "gw-%s-bid.yeahtargeter.com"; + private static final String ZONE_ID_MACRO = "ZoneId"; private static final String NATIVE = "native"; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public YeahmobiBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -120,7 +119,7 @@ private String resolveNativeRequest(String nativeRequest) { private HttpRequest makeHttpRequest(BidRequest request, String zoneId) { return BidderUtil.defaultRequest( request, - endpointUrl.replace(HOST_MACRO, HOST_PATTERN.formatted(zoneId)), + endpointUrl.replaceMacro(ZONE_ID_MACRO, zoneId).expand(), mapper); } diff --git a/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java b/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java index 77fd21ee2f6..f65bf14b027 100644 --- a/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java +++ b/src/main/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidder.java @@ -21,7 +21,7 @@ import org.prebid.server.proto.openrtb.ext.request.zeroclickfraud.ExtImpZeroclickfraud; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collection; @@ -37,14 +37,14 @@ public class ZeroclickfraudBidder implements Bidder { new TypeReference<>() { }; - private static final String HOST = "{{Host}}"; - private static final String SOURCE_ID = "{{SourceId}}"; + private static final String HOST = "Host"; + private static final String SOURCE_ID = "SourceId"; - private final String endpoint; + private final Uri endpoint; private final JacksonMapper mapper; public ZeroclickfraudBidder(String endpoint, JacksonMapper mapper) { - this.endpoint = HttpUtil.validateUrl(Objects.requireNonNull(endpoint)); + this.endpoint = Uri.of(endpoint); this.mapper = Objects.requireNonNull(mapper); } @@ -87,14 +87,16 @@ private ExtImpZeroclickfraud parseAndValidateImpExt(ObjectNode extNode) { return extImpZeroclickfraud; } - private HttpRequest makeHttpRequest(ExtImpZeroclickfraud extImpZeroclickfraud, List imps, + private HttpRequest makeHttpRequest(ExtImpZeroclickfraud extImpZeroclickfraud, + List imps, BidRequest bidRequest) { + final String uri = endpoint - .replace(HOST, extImpZeroclickfraud.getHost()) - .replace(SOURCE_ID, extImpZeroclickfraud.getSourceId().toString()); + .replaceMacro(HOST, extImpZeroclickfraud.getHost()) + .replaceMacro(SOURCE_ID, extImpZeroclickfraud.getSourceId().toString()) + .expand(); final BidRequest outgoingRequest = bidRequest.toBuilder().imp(imps).build(); - return BidderUtil.defaultRequest(outgoingRequest, uri, mapper); } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/AaxConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/AaxConfiguration.java index 83cc2694122..e6dc3fdd58c 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/AaxConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/AaxConfiguration.java @@ -7,7 +7,7 @@ import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; import org.prebid.server.spring.config.bidder.util.UsersyncerCreator; import org.prebid.server.spring.env.YamlPropertySourceFactory; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -21,7 +21,7 @@ public class AaxConfiguration { private static final String BIDDER_NAME = "aax"; - private static final String EXTERNAL_URL_MACRO = "{{PREBID_SERVER_ENDPOINT}}"; + private static final String EXTERNAL_URL_MACRO = "PREBID_SERVER_ENDPOINT"; @Bean("aaxConfigurationProperties") @ConfigurationProperties("adapters.aax") @@ -42,6 +42,6 @@ BidderDeps aaxBidderDeps(BidderConfigurationProperties aaxConfigurationPropertie } private String resolveEndpoint(String configEndpoint, String externalUrl) { - return configEndpoint.replace(EXTERNAL_URL_MACRO, HttpUtil.encodeUrl(externalUrl)); + return Uri.of(configEndpoint).replaceMacro(EXTERNAL_URL_MACRO, externalUrl).expand(); } } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/MedianetConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/MedianetConfiguration.java index 359f630febf..17e0a71627d 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/MedianetConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/MedianetConfiguration.java @@ -7,7 +7,7 @@ import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; import org.prebid.server.spring.config.bidder.util.UsersyncerCreator; import org.prebid.server.spring.env.YamlPropertySourceFactory; -import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -21,7 +21,7 @@ public class MedianetConfiguration { private static final String BIDDER_NAME = "medianet"; - private static final String EXTERNAL_URL_MACRO = "{{PREBID_SERVER_ENDPOINT}}"; + private static final String EXTERNAL_URL_MACRO = "PREBID_SERVER_ENDPOINT"; @Bean("medianetConfigurationProperties") @ConfigurationProperties("adapters.medianet") @@ -42,6 +42,6 @@ BidderDeps medianetBidderDeps(BidderConfigurationProperties medianetConfiguratio } private String resolveEndpoint(String configEndpoint, String externalUrl) { - return configEndpoint.replace(EXTERNAL_URL_MACRO, HttpUtil.encodeUrl(externalUrl)); + return Uri.of(configEndpoint).replaceMacro(EXTERNAL_URL_MACRO, externalUrl).expand(); } } diff --git a/src/main/resources/bidder-config/aax.yaml b/src/main/resources/bidder-config/aax.yaml index b695864b8c2..f49e4d0bd12 100644 --- a/src/main/resources/bidder-config/aax.yaml +++ b/src/main/resources/bidder-config/aax.yaml @@ -1,6 +1,6 @@ adapters: aax: - endpoint: https://prebid.aaxads.com/rtb/pb/aax-prebid?src={{PREBID_SERVER_ENDPOINT}} + endpoint: https://prebid.aaxads.com/rtb/pb/aax-prebid?src={PREBID_SERVER_ENDPOINT} modifying-vast-xml-allowed: true meta-info: maintainer-email: product@aax.media diff --git a/src/main/resources/bidder-config/aceex.yaml b/src/main/resources/bidder-config/aceex.yaml index a1f987990ad..49fe07b9e1d 100644 --- a/src/main/resources/bidder-config/aceex.yaml +++ b/src/main/resources/bidder-config/aceex.yaml @@ -1,6 +1,6 @@ adapters: aceex: - endpoint: http://bl-us.aceex.io/?uqhash={{AccountId}} + endpoint: http://bl-us.aceex.io/?uqhash={AccountId} meta-info: maintainer-email: tech@aceex.io app-media-types: diff --git a/src/main/resources/bidder-config/acuityads.yaml b/src/main/resources/bidder-config/acuityads.yaml index 5388564c5d0..01e8722dc54 100644 --- a/src/main/resources/bidder-config/acuityads.yaml +++ b/src/main/resources/bidder-config/acuityads.yaml @@ -1,6 +1,6 @@ adapters: acuityads: - endpoint: http://{{Host}}.admanmedia.com/bid?token={{AccountID}} + endpoint: http://{Host}.admanmedia.com/bid?token={AccountID} meta-info: maintainer-email: integrations@acuityads.com app-media-types: diff --git a/src/main/resources/bidder-config/adelement.yaml b/src/main/resources/bidder-config/adelement.yaml index 1fca5d41ff1..bddc2155cf6 100644 --- a/src/main/resources/bidder-config/adelement.yaml +++ b/src/main/resources/bidder-config/adelement.yaml @@ -1,6 +1,6 @@ adapters: adelement: - endpoint: https://amp.adelement.com/openrtb2/auction?supply_id={{SupplyId}} + endpoint: https://amp.adelement.com/openrtb2/auction?supply_id={SupplyId} endpoint-compression: gzip meta-info: maintainer-email: tech@adelement.com diff --git a/src/main/resources/bidder-config/adhese.yaml b/src/main/resources/bidder-config/adhese.yaml index e3ae5db56a7..21ddee6ca4c 100644 --- a/src/main/resources/bidder-config/adhese.yaml +++ b/src/main/resources/bidder-config/adhese.yaml @@ -1,6 +1,6 @@ adapters: adhese: - endpoint: https://ads-{{AccountId}}.adhese.com/openrtb2 + endpoint: https://ads-{AccountId}.adhese.com/openrtb2 meta-info: maintainer-email: info@adhese.com app-media-types: diff --git a/src/main/resources/bidder-config/adkernel.yaml b/src/main/resources/bidder-config/adkernel.yaml index 7158bcec57b..7b642381bad 100644 --- a/src/main/resources/bidder-config/adkernel.yaml +++ b/src/main/resources/bidder-config/adkernel.yaml @@ -1,6 +1,6 @@ adapters: adkernel: - endpoint: http://pbs.adksrv.com/hb?zone=%s + endpoint: http://pbs.adksrv.com/hb?zone={Zone} endpoint-compression: gzip aliases: rxnetwork: ~ diff --git a/src/main/resources/bidder-config/adkerneladn.yaml b/src/main/resources/bidder-config/adkerneladn.yaml index d3df44cf049..857208c8d17 100644 --- a/src/main/resources/bidder-config/adkerneladn.yaml +++ b/src/main/resources/bidder-config/adkerneladn.yaml @@ -1,6 +1,6 @@ adapters: adkerneladn: - endpoint: https://pbs2.adksrv.com/rtbpub?account={{PublisherID}} + endpoint: https://pbs2.adksrv.com/rtbpub?account={PublisherID} meta-info: maintainer-email: prebid-dev@adkernel.com app-media-types: diff --git a/src/main/resources/bidder-config/admatic.yaml b/src/main/resources/bidder-config/admatic.yaml index 9c0ac6a483e..3085797000c 100644 --- a/src/main/resources/bidder-config/admatic.yaml +++ b/src/main/resources/bidder-config/admatic.yaml @@ -1,6 +1,6 @@ adapters: admatic: - endpoint: http://pbs.admatic.com.tr?host={{Host}} + endpoint: http://pbs.admatic.com.tr?host={Host} aliases: adt: enabled: false diff --git a/src/main/resources/bidder-config/adot.yaml b/src/main/resources/bidder-config/adot.yaml index fa4a5a5f489..02cc2813e2a 100644 --- a/src/main/resources/bidder-config/adot.yaml +++ b/src/main/resources/bidder-config/adot.yaml @@ -1,6 +1,6 @@ adapters: adot: - endpoint: https://dsp.adotmob.com/headerbidding{{PUBLISHER_PATH}}/bidrequest + endpoint: https://dsp.adotmob.com/headerbidding{+PUBLISHER_PATH}/bidrequest meta-info: maintainer-email: admin@we-are-adot.com app-media-types: diff --git a/src/main/resources/bidder-config/adtonos.yaml b/src/main/resources/bidder-config/adtonos.yaml index e1a19fbc6eb..413d7554913 100644 --- a/src/main/resources/bidder-config/adtonos.yaml +++ b/src/main/resources/bidder-config/adtonos.yaml @@ -1,6 +1,6 @@ adapters: adtonos: - endpoint: https://exchange.adtonos.com/bid/{{PublisherId}} + endpoint: https://exchange.adtonos.com/bid/{PublisherId} geoscope: - global meta-info: diff --git a/src/main/resources/bidder-config/advangelists.yaml b/src/main/resources/bidder-config/advangelists.yaml index 47423726cfb..685a326e840 100644 --- a/src/main/resources/bidder-config/advangelists.yaml +++ b/src/main/resources/bidder-config/advangelists.yaml @@ -1,6 +1,6 @@ adapters: advangelists: - endpoint: http://nep.advangelists.com/xp/get?pubid={{PublisherID}} + endpoint: http://nep.advangelists.com/xp/get?pubid={PublisherID} meta-info: maintainer-email: prebid@advangelists.com app-media-types: diff --git a/src/main/resources/bidder-config/adverxo.yaml b/src/main/resources/bidder-config/adverxo.yaml index b363a70bc08..3675c35d7f2 100644 --- a/src/main/resources/bidder-config/adverxo.yaml +++ b/src/main/resources/bidder-config/adverxo.yaml @@ -1,11 +1,11 @@ adapters: adverxo: - endpoint: https://pbsadverxo.com/auction?adUnitId={{adUnitId}}&auth={{auth}} + endpoint: https://pbsadverxo.com/auction?adUnitId={adUnitId}&auth={auth} endpoint-compression: gzip aliases: adport: enabled: false - endpoint: https://adport.pbsadverxo.com/auction?id={{adUnitId}}&auth={{auth}} + endpoint: https://adport.pbsadverxo.com/auction?id={adUnitId}&auth={auth} usersync: enabled: false cookie-family-name: adport @@ -19,7 +19,7 @@ adapters: support-cors: false bidsmind: enabled: false - endpoint: https://bidsmind.pbsadverxo.com/auction?id={{adUnitId}}&auth={{auth}} + endpoint: https://bidsmind.pbsadverxo.com/auction?id={adUnitId}&auth={auth} usersync: enabled: false cookie-family-name: bidsmind diff --git a/src/main/resources/bidder-config/adview.yaml b/src/main/resources/bidder-config/adview.yaml index bf5552dfb6c..4a7c011b241 100644 --- a/src/main/resources/bidder-config/adview.yaml +++ b/src/main/resources/bidder-config/adview.yaml @@ -1,6 +1,6 @@ adapters: adview: - endpoint: https://bid.adview.com/agent/thirdAdxService/{{AccountId}} + endpoint: https://bid.adview.com/agent/thirdAdxService/{AccountId} endpoint-compression: gzip modifying-vast-xml-allowed: true meta-info: diff --git a/src/main/resources/bidder-config/afront.yaml b/src/main/resources/bidder-config/afront.yaml index bd59185f20e..b05122db3b6 100644 --- a/src/main/resources/bidder-config/afront.yaml +++ b/src/main/resources/bidder-config/afront.yaml @@ -6,7 +6,7 @@ # Please deploy this config in each of your datacenters with the appropriate regional subdomain adapters: afront: - endpoint: https://snt1.afront.io/?rsd={{SourceId}}&sk={{AccountId}} + endpoint: https://snt1.afront.io/?rsd={SourceId}&sk={AccountId} endpoint-compression: gzip meta-info: maintainer-email: support@afront.io diff --git a/src/main/resources/bidder-config/aidem.yaml b/src/main/resources/bidder-config/aidem.yaml index 5465aa6f558..c8b4fac9d81 100644 --- a/src/main/resources/bidder-config/aidem.yaml +++ b/src/main/resources/bidder-config/aidem.yaml @@ -1,6 +1,6 @@ adapters: aidem: - endpoint: https://zero.aidemsrv.com/ortb/v2.6/bid/request?billing_id={{PublisherId}} + endpoint: https://zero.aidemsrv.com/ortb/v2.6/bid/request?billing_id={PublisherId} modifying-vast-xml-allowed: true meta-info: maintainer-email: prebid@aidem.com diff --git a/src/main/resources/bidder-config/algorix.yaml b/src/main/resources/bidder-config/algorix.yaml index 3fcc40e6361..af0a4521853 100644 --- a/src/main/resources/bidder-config/algorix.yaml +++ b/src/main/resources/bidder-config/algorix.yaml @@ -1,6 +1,6 @@ adapters: algorix: - endpoint: https://{{HOST}}.svr-algorix.com/rtb/sa?sid={{SID}}&token={{TOKEN}} + endpoint: https://{HOST}.svr-algorix.com/rtb/sa?sid={SID}&token={TOKEN} meta-info: maintainer-email: prebid@algorix.co app-media-types: diff --git a/src/main/resources/bidder-config/aso.yaml b/src/main/resources/bidder-config/aso.yaml index 5f3bdad4829..1008bbd1b59 100644 --- a/src/main/resources/bidder-config/aso.yaml +++ b/src/main/resources/bidder-config/aso.yaml @@ -1,10 +1,10 @@ adapters: aso: - endpoint: https://srv.aso1.net/pbs/bidder?zid={{ZoneID}} + endpoint: https://srv.aso1.net/pbs/bidder?zid={ZoneID} aliases: bcmint: enabled: false - endpoint: https://srv.datacygnal.io/pbs/bidder?zid={{ZoneID}} + endpoint: https://srv.datacygnal.io/pbs/bidder?zid={ZoneID} meta-info: maintainer-email: contact@bcm.ltd usersync: @@ -15,7 +15,7 @@ adapters: uid-macro: '{uid}' bidagency: enabled: false - endpoint: https://srv.bidgx.com/pbs/bidder?zid={{ZoneID}} + endpoint: https://srv.bidgx.com/pbs/bidder?zid={ZoneID} meta-info: maintainer-email: aso@bidgency.com usersync: @@ -26,7 +26,7 @@ adapters: uid-macro: '{uid}' kuantyx: enabled: false - endpoint: https://srv.kntxy.com/pbs/bidder?zid={{ZoneID}} + endpoint: https://srv.kntxy.com/pbs/bidder?zid={ZoneID} meta-info: maintainer-email: ssp@kuantyx.com usersync: diff --git a/src/main/resources/bidder-config/axonix.yaml b/src/main/resources/bidder-config/axonix.yaml index e8dd2352cbe..9a5fdacc31a 100644 --- a/src/main/resources/bidder-config/axonix.yaml +++ b/src/main/resources/bidder-config/axonix.yaml @@ -1,6 +1,6 @@ adapters: axonix: - endpoint: https://openrtb-us-east-1.axonix.com/supply/prebid-server/{{SupplyId}} + endpoint: https://openrtb-us-east-1.axonix.com/supply/prebid-server/{SupplyId} meta-info: maintainer-email: support.axonix@emodoinc.com app-media-types: diff --git a/src/main/resources/bidder-config/bematterfull.yaml b/src/main/resources/bidder-config/bematterfull.yaml index 7684a44e89f..abfd10ef200 100644 --- a/src/main/resources/bidder-config/bematterfull.yaml +++ b/src/main/resources/bidder-config/bematterfull.yaml @@ -1,6 +1,6 @@ adapters: bematterfull: - endpoint: http://prebid-srv.mtflll-system.live/?pid={{SourceId}}&host={{Host}} + endpoint: http://prebid-srv.mtflll-system.live/?pid={SourceId}&host={Host} meta-info: maintainer-email: adops@bematterfull.com app-media-types: diff --git a/src/main/resources/bidder-config/between.yaml b/src/main/resources/bidder-config/between.yaml index 9ebe3fd4309..c7d79ee73cf 100644 --- a/src/main/resources/bidder-config/between.yaml +++ b/src/main/resources/bidder-config/between.yaml @@ -1,6 +1,6 @@ adapters: between: - endpoint: http://{{Host}}.betweendigital.com/openrtb_bid?sspId={{PublisherId}} + endpoint: http://{Host}.betweendigital.com/openrtb_bid?sspId={PublisherId} meta-info: maintainer-email: buying@betweenx.com app-media-types: diff --git a/src/main/resources/bidder-config/bidmachine.yaml b/src/main/resources/bidder-config/bidmachine.yaml index 535a95c3512..4819746c294 100644 --- a/src/main/resources/bidder-config/bidmachine.yaml +++ b/src/main/resources/bidder-config/bidmachine.yaml @@ -1,6 +1,6 @@ adapters: bidmachine: - endpoint: https://{{Host}}.bidmachine.io/{{PATH}}/{{SELLER_ID}} + endpoint: https://{Host}.bidmachine.io/{PATH}/{SELLER_ID} meta-info: maintainer-email: hi@bidmachine.io app-media-types: diff --git a/src/main/resources/bidder-config/bigoad.yaml b/src/main/resources/bidder-config/bigoad.yaml index becccce1ff5..e54d6cfc3a9 100644 --- a/src/main/resources/bidder-config/bigoad.yaml +++ b/src/main/resources/bidder-config/bigoad.yaml @@ -1,6 +1,6 @@ adapters: bigoad: - endpoint: https://api.imotech.tech/Ad/GetAdOut?sspid={{SspId}} + endpoint: https://api.imotech.tech/Ad/GetAdOut?sspid={SspId} geoscope: - USA - RUS diff --git a/src/main/resources/bidder-config/blasto.yaml b/src/main/resources/bidder-config/blasto.yaml index d202f0acb2b..157489ce7b5 100644 --- a/src/main/resources/bidder-config/blasto.yaml +++ b/src/main/resources/bidder-config/blasto.yaml @@ -6,7 +6,7 @@ # Please deploy this config in each of your datacenters with the appropriate regional subdomain adapters: blasto: - endpoint: http://t-us.blasto.ai/bid?rtb_seat_id={{SourceId}}&secret_key={{AccountID}} + endpoint: http://t-us.blasto.ai/bid?rtb_seat_id={SourceId}&secret_key={AccountID} endpoint-compression: gzip meta-info: maintainer-email: support@blasto.ai diff --git a/src/main/resources/bidder-config/blis.yaml b/src/main/resources/bidder-config/blis.yaml index 6d9d50dad69..c38bab8638a 100644 --- a/src/main/resources/bidder-config/blis.yaml +++ b/src/main/resources/bidder-config/blis.yaml @@ -1,6 +1,6 @@ adapters: blis: - endpoint: https://prebid.lb.infinity.blismedia.com/rtb/213/{{SupplyId}} + endpoint: https://prebid.lb.infinity.blismedia.com/rtb/213/{SupplyId} modifying-vast-xml-allowed: true endpoint-compression: gzip ortb-version: "2.6" diff --git a/src/main/resources/bidder-config/boldwinrapid.yaml b/src/main/resources/bidder-config/boldwinrapid.yaml index f9b40571ea5..de04b635e20 100644 --- a/src/main/resources/bidder-config/boldwinrapid.yaml +++ b/src/main/resources/bidder-config/boldwinrapid.yaml @@ -1,6 +1,6 @@ adapters: boldwin_rapid: - endpoint: https://rtb.beardfleet.com/auction/bid?pid={{PublisherID}}&tid={{PlacementID}} + endpoint: https://rtb.beardfleet.com/auction/bid?pid={PublisherID}&tid={PlacementID} meta-info: maintainer-email: info@bold-win.com app-media-types: diff --git a/src/main/resources/bidder-config/brave.yaml b/src/main/resources/bidder-config/brave.yaml index 3c3a765c9ff..aa703cb7831 100644 --- a/src/main/resources/bidder-config/brave.yaml +++ b/src/main/resources/bidder-config/brave.yaml @@ -1,6 +1,6 @@ adapters: brave: - endpoint: http://point.braveglobal.tv/?t=3&partner={{.PublisherID}} + endpoint: http://point.braveglobal.tv/?t=3&partner={PublisherID} meta-info: maintainer-email: support@thebrave.io app-media-types: diff --git a/src/main/resources/bidder-config/bwx.yaml b/src/main/resources/bidder-config/bwx.yaml index ef5a82eece0..a972bc679fb 100644 --- a/src/main/resources/bidder-config/bwx.yaml +++ b/src/main/resources/bidder-config/bwx.yaml @@ -1,6 +1,6 @@ adapters: bwx: - endpoint: http://rtb.boldwin.live?pid={{SourceId}}&host={{Host}}&pbs=1 + endpoint: http://rtb.boldwin.live?pid={SourceId}&host={Host}&pbs=1 meta-info: maintainer-email: prebid@bold-win.com app-media-types: diff --git a/src/main/resources/bidder-config/clydo.yaml b/src/main/resources/bidder-config/clydo.yaml index aa90e3a4f07..58c0f70fb2f 100644 --- a/src/main/resources/bidder-config/clydo.yaml +++ b/src/main/resources/bidder-config/clydo.yaml @@ -1,6 +1,6 @@ adapters: clydo: - endpoint: http://region={{Region}}.clydo.io/partnerId={{PartnerId}} + endpoint: http://region={Region}.clydo.io/partnerId={PartnerId} modifying-vast-xml-allowed: true endpoint-compression: gzip geoscope: diff --git a/src/main/resources/bidder-config/contxtful.yaml b/src/main/resources/bidder-config/contxtful.yaml index 086eb92c1dc..6df8dce0bb0 100644 --- a/src/main/resources/bidder-config/contxtful.yaml +++ b/src/main/resources/bidder-config/contxtful.yaml @@ -1,6 +1,6 @@ adapters: contxtful: - endpoint: https://prebid.receptivity.io/v1/pbs/{{AccountId}}/bid + endpoint: https://prebid.receptivity.io/v1/pbs/{AccountId}/bid meta-info: maintainer-email: contact@contxtful.com app-media-types: diff --git a/src/main/resources/bidder-config/datablocks.yaml b/src/main/resources/bidder-config/datablocks.yaml index 8062997c3d8..13c253c6ac0 100644 --- a/src/main/resources/bidder-config/datablocks.yaml +++ b/src/main/resources/bidder-config/datablocks.yaml @@ -1,6 +1,6 @@ adapters: datablocks: - endpoint: http://pbserver.dblks.net/openrtb2?sid={{SourceId}} + endpoint: http://pbserver.dblks.net/openrtb2?sid={SourceId} meta-info: maintainer-email: prebid@datablocks.net app-media-types: diff --git a/src/main/resources/bidder-config/displayio.yaml b/src/main/resources/bidder-config/displayio.yaml index 7c3b5f52ef0..b06924df89a 100644 --- a/src/main/resources/bidder-config/displayio.yaml +++ b/src/main/resources/bidder-config/displayio.yaml @@ -1,6 +1,6 @@ adapters: displayio: - endpoint: https://prebid.display.io/?publisher={{PublisherID}} + endpoint: https://prebid.display.io/?publisher={PublisherID} endpoint-compression: gzip modifying-vast-xml-allowed: true geoscope: diff --git a/src/main/resources/bidder-config/driftpixel.yaml b/src/main/resources/bidder-config/driftpixel.yaml index 5bba4d9257f..532a4485b0b 100644 --- a/src/main/resources/bidder-config/driftpixel.yaml +++ b/src/main/resources/bidder-config/driftpixel.yaml @@ -1,6 +1,6 @@ adapters: driftpixel: - endpoint: http://rtb.driftpixel.live?pid={{SourceId}}&host={{Host}}&pbs=1 + endpoint: http://rtb.driftpixel.live?pid={SourceId}&host={Host}&pbs=1 meta-info: maintainer-email: developer@driftpixel.ai app-media-types: diff --git a/src/main/resources/bidder-config/elementaltv.yaml b/src/main/resources/bidder-config/elementaltv.yaml index 198b887ea4b..0d6a83cf6a9 100644 --- a/src/main/resources/bidder-config/elementaltv.yaml +++ b/src/main/resources/bidder-config/elementaltv.yaml @@ -1,6 +1,6 @@ adapters: elementaltv: - endpoint: https://pbs.elementaltv.io/ads/processHeaderBid/{{AdUnit}} + endpoint: https://pbs.elementaltv.io/ads/processHeaderBid/{AdUnit} ortb-version: "2.6" aliases: adoppler: ~ diff --git a/src/main/resources/bidder-config/escalax.yaml b/src/main/resources/bidder-config/escalax.yaml index 8c6c44dbdea..311f9350deb 100644 --- a/src/main/resources/bidder-config/escalax.yaml +++ b/src/main/resources/bidder-config/escalax.yaml @@ -1,6 +1,6 @@ adapters: escalax: - endpoint: http://bidder_us.escalax.io/?partner={{.SourceId}}&token={{.AccountID}}&type=pbs + endpoint: http://bidder_us.escalax.io/?partner={SourceId}&token={AccountID}&type=pbs modifying-vast-xml-allowed: true endpoint-compression: gzip meta-info: diff --git a/src/main/resources/bidder-config/flatads.yaml b/src/main/resources/bidder-config/flatads.yaml index 970d1c36b79..bc531b9b7d5 100644 --- a/src/main/resources/bidder-config/flatads.yaml +++ b/src/main/resources/bidder-config/flatads.yaml @@ -1,6 +1,6 @@ adapters: flatads: - endpoint: https://bid.rtbshark.com/api/rtbs/adx/rtb?x-net-id={{PublisherID}}&x-net-token={{TokenID}} + endpoint: https://bid.rtbshark.com/api/rtbs/adx/rtb?x-net-id={PublisherID}&x-net-token={TokenID} ortb-version: "2.6" endpoint-compression: gzip meta-info: diff --git a/src/main/resources/bidder-config/gothamads.yaml b/src/main/resources/bidder-config/gothamads.yaml index eccdefb17e8..9b4add5f93d 100644 --- a/src/main/resources/bidder-config/gothamads.yaml +++ b/src/main/resources/bidder-config/gothamads.yaml @@ -1,10 +1,10 @@ adapters: gothamads: - endpoint: http://us-e-node1.gothamads.com/?pass={{AccountID}} + endpoint: http://us-e-node1.gothamads.com/?pass={AccountID} aliases: intenze: enabled: false - endpoint: http://lb-east.intenze.co/?pass={{AccountID}} + endpoint: http://lb-east.intenze.co/?pass={AccountID} meta-info: maintainer-email: connect@intenze.co meta-info: diff --git a/src/main/resources/bidder-config/imds.yaml b/src/main/resources/bidder-config/imds.yaml index 4b37cc73d2f..c5d6a28055a 100644 --- a/src/main/resources/bidder-config/imds.yaml +++ b/src/main/resources/bidder-config/imds.yaml @@ -8,8 +8,8 @@ adapters: aliases: synacormedia: deprecated-names: null # Must re-declare as empty or the deprecation error in the response is incorrect - endpoint: "https://pbs.technoratimedia.com/openrtb/bids/{{AccountID}}?src={{SourceId}}&adapter=synacormedia" - endpoint: "https://pbs.technoratimedia.com/openrtb/bids/{{AccountID}}?src={{SourceId}}&adapter=imds" + endpoint: "https://pbs.technoratimedia.com/openrtb/bids/{AccountID}?src={SourceId}&adapter=synacormedia" + endpoint: "https://pbs.technoratimedia.com/openrtb/bids/{AccountID}?src={SourceId}&adapter=imds" meta-info: maintainer-email: eng-demand@imds.tv app-media-types: diff --git a/src/main/resources/bidder-config/improvedigital.yaml b/src/main/resources/bidder-config/improvedigital.yaml index 41af36899bf..1e5c4b81190 100644 --- a/src/main/resources/bidder-config/improvedigital.yaml +++ b/src/main/resources/bidder-config/improvedigital.yaml @@ -1,6 +1,6 @@ adapters: improvedigital: - endpoint: https://ad.360yield.com/{{PathPrefix}}pbs + endpoint: https://ad.360yield.com/{PathPrefix}/pbs endpoint-compression: gzip meta-info: maintainer-email: hb@azerion.com diff --git a/src/main/resources/bidder-config/interactiveoffers.yaml b/src/main/resources/bidder-config/interactiveoffers.yaml index 0fa73cede7b..4cf4c132841 100644 --- a/src/main/resources/bidder-config/interactiveoffers.yaml +++ b/src/main/resources/bidder-config/interactiveoffers.yaml @@ -1,6 +1,6 @@ adapters: interactiveoffers: - endpoint: https://prebid-server.ioadx.com/bidRequest/?partnerId={{PartnerId}} + endpoint: https://prebid-server.ioadx.com/bidRequest/?partnerId={PartnerId} meta-info: maintainer-email: dev@interactiveoffers.com app-media-types: diff --git a/src/main/resources/bidder-config/intertech.yaml b/src/main/resources/bidder-config/intertech.yaml index 0f1f4f671b3..e0c254173e9 100644 --- a/src/main/resources/bidder-config/intertech.yaml +++ b/src/main/resources/bidder-config/intertech.yaml @@ -1,6 +1,6 @@ adapters: intertech: - endpoint: https://prebid.intertechsrvcs.com/prebid/{{page_id}}?imp-id={{imp_id}}&ssp-id=10500 + endpoint: https://prebid.intertechsrvcs.com/prebid/{page_id}?imp-id={imp_id}&ssp-id=10500 endpoint-compression: gzip meta-info: maintainer-email: prebid@intertechsrvcs.com diff --git a/src/main/resources/bidder-config/invibes.yaml b/src/main/resources/bidder-config/invibes.yaml index 12aac1ffcb2..e23023af650 100644 --- a/src/main/resources/bidder-config/invibes.yaml +++ b/src/main/resources/bidder-config/invibes.yaml @@ -1,6 +1,6 @@ adapters: invibes: - endpoint: https://{{ZoneID}}.videostep.com/bid/ServerBidAdContent + endpoint: https://{ZoneID}.videostep.com/bid/ServerBidAdContent endpoint-compression: gzip meta-info: maintainer-email: system_operations@invibes.com diff --git a/src/main/resources/bidder-config/iqx.yaml b/src/main/resources/bidder-config/iqx.yaml index 8ef2bd14e3d..ce181e0dec8 100644 --- a/src/main/resources/bidder-config/iqx.yaml +++ b/src/main/resources/bidder-config/iqx.yaml @@ -1,6 +1,6 @@ adapters: iqx: - endpoint: http://rtb.iqzone.com?pid={{SourceId}}&host={{Host}}&pbs=1 + endpoint: http://rtb.iqzone.com?pid={SourceId}&host={Host}&pbs=1 meta-info: maintainer-email: adops@iqzone.com app-media-types: diff --git a/src/main/resources/bidder-config/kayzen.yaml b/src/main/resources/bidder-config/kayzen.yaml index e27bc623fb1..648829f4ca6 100644 --- a/src/main/resources/bidder-config/kayzen.yaml +++ b/src/main/resources/bidder-config/kayzen.yaml @@ -1,6 +1,6 @@ adapters: kayzen: - endpoint: https://bids-{{ZoneID}}.bidder.kayzen.io/?exchange={{AccountID}} + endpoint: https://bids-{ZoneID}.bidder.kayzen.io/?exchange={AccountID} meta-info: maintainer-email: platform-dev@kayzen.io app-media-types: diff --git a/src/main/resources/bidder-config/krushmedia.yaml b/src/main/resources/bidder-config/krushmedia.yaml index 0f2a42e7785..0354b35f66a 100644 --- a/src/main/resources/bidder-config/krushmedia.yaml +++ b/src/main/resources/bidder-config/krushmedia.yaml @@ -1,6 +1,6 @@ adapters: krushmedia: - endpoint: http://ads4.krushmedia.com/?c=rtb&m=req&key={{AccountID}} + endpoint: http://ads4.krushmedia.com/?c=rtb&m=req&key={AccountID} meta-info: maintainer-email: adapter@krushmedia.com app-media-types: diff --git a/src/main/resources/bidder-config/lemmadigital.yaml b/src/main/resources/bidder-config/lemmadigital.yaml index 3f71b2d016c..3afa8f8927b 100644 --- a/src/main/resources/bidder-config/lemmadigital.yaml +++ b/src/main/resources/bidder-config/lemmadigital.yaml @@ -1,6 +1,6 @@ adapters: lemmadigital: - endpoint: https://pbid.lemmamedia.com/lemma/servad?src=prebid&pid={{PublisherID}}&aid={{AdUnit}} + endpoint: https://pbid.lemmamedia.com/lemma/servad?src=prebid&pid={PublisherID}&aid={AdUnit} meta-info: maintainer-email: support@lemmatechnologies.com endpoint-compression: gzip diff --git a/src/main/resources/bidder-config/limelightDigital.yaml b/src/main/resources/bidder-config/limelightDigital.yaml index 961d909e0d0..7907dcf4a7c 100644 --- a/src/main/resources/bidder-config/limelightDigital.yaml +++ b/src/main/resources/bidder-config/limelightDigital.yaml @@ -1,17 +1,17 @@ adapters: limelightDigital: - endpoint: http://ads-pbs.ortb.net/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.ortb.net/openrtb/{PublisherID}?host={Host} aliases: filmzie: enabled: false iionads: enabled: false - endpoint: http://ads-pbs.iionads.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.iionads.com/openrtb/{PublisherID}?host={Host} meta-info: vendor-id: 1358 evtech: enabled: false - endpoint: http://ads-pbs.direct.e-volution.ai/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.direct.e-volution.ai/openrtb/{PublisherID}?host={Host} usersync: enabled: true cookie-family-name: evtech @@ -25,39 +25,39 @@ adapters: uid-macro: '{PLL_USER_ID}' adsyield: enabled: false - endpoint: http://ads-pbs.open-adsyield.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.open-adsyield.com/openrtb/{PublisherID}?host={Host} greedygame: enabled: false - endpoint: http://ads-pbs.rtb-greedygame.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.rtb-greedygame.com/openrtb/{PublisherID}?host={Host} appstock: enabled: false - endpoint: http://ads-pbs.pre.vr-tb.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.pre.vr-tb.com/openrtb/{PublisherID}?host={Host} xtrmqb: enabled: false - endpoint: http://ads-pbs.ortb.tech/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.ortb.tech/openrtb/{PublisherID}?host={Host} embimedia: enabled: false - endpoint: http://ads-pbs.bidder-embi.media/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.bidder-embi.media/openrtb/{PublisherID}?host={Host} tgm: enabled: false streamlyn: enabled: false - endpoint: http://rtba.bidsxchange.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://rtba.bidsxchange.com/openrtb/{PublisherID}?host={Host} streamvision: enabled: false - endpoint: http://ads-pbs.adops.streamvisionmedia.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.adops.streamvisionmedia.com/openrtb/{PublisherID}?host={Host} orangeclickmedia: enabled: false - endpoint: http://ads-pbs.scotty.orangeclickmedia.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.scotty.orangeclickmedia.com/openrtb/{PublisherID}?host={Host} velonium: enabled: false - endpoint: http://ads-pbs.adxvel.com/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.adxvel.com/openrtb/{PublisherID}?host={Host} adtg_org: enabled: false - endpoint: http://ads-pbs.rtb.adtarget.org/openrtb/{{PublisherID}}?host={{Host}} + endpoint: http://ads-pbs.rtb.adtarget.org/openrtb/{PublisherID}?host={Host} performist: enabled: false - endpoint: http://ads-pbs.performserv.com/openrtb/{{PublisherID}} + endpoint: http://ads-pbs.performserv.com/openrtb/{PublisherID} meta-info: maintainer-email: engineering@project-limelight.com app-media-types: diff --git a/src/main/resources/bidder-config/lmkiviads.yaml b/src/main/resources/bidder-config/lmkiviads.yaml index d938c656606..dabf65b1bf3 100644 --- a/src/main/resources/bidder-config/lmkiviads.yaml +++ b/src/main/resources/bidder-config/lmkiviads.yaml @@ -1,6 +1,6 @@ adapters: lm_kiviads: - endpoint: http://pbs.kiviads.live/?pid={{SourceId}}&host={{Host}} + endpoint: http://pbs.kiviads.live/?pid={SourceId}&host={Host} meta-info: maintainer-email: prebid@kiviads.com app-media-types: diff --git a/src/main/resources/bidder-config/lunamedia.yaml b/src/main/resources/bidder-config/lunamedia.yaml index 16f32ac2bcf..f206a182fcd 100644 --- a/src/main/resources/bidder-config/lunamedia.yaml +++ b/src/main/resources/bidder-config/lunamedia.yaml @@ -1,6 +1,6 @@ adapters: lunamedia: - endpoint: http://rtb.lunamedia.live/?pid= + endpoint: http://rtb.lunamedia.live/?pid={Pid} # This bidder does not operate globally. Please consider setting "disabled: true" outside of the following regions: geoscope: - USA diff --git a/src/main/resources/bidder-config/madvertise.yaml b/src/main/resources/bidder-config/madvertise.yaml index 1d351d5b20b..05b30fe1db4 100644 --- a/src/main/resources/bidder-config/madvertise.yaml +++ b/src/main/resources/bidder-config/madvertise.yaml @@ -1,6 +1,6 @@ adapters: madvertise: - endpoint: https://mobile.mng-ads.com/bidrequest{{ZoneID}} + endpoint: https://mobile.mng-ads.com/bidrequest{ZoneID} meta-info: maintainer-email: hb@azerion.com app-media-types: diff --git a/src/main/resources/bidder-config/mediago.yaml b/src/main/resources/bidder-config/mediago.yaml index 1fceb2e034f..64a6366ec8b 100644 --- a/src/main/resources/bidder-config/mediago.yaml +++ b/src/main/resources/bidder-config/mediago.yaml @@ -1,6 +1,6 @@ adapters: mediago: - endpoint: https://REGION.mediago.io/api/bid?tn={{AccountID}} + endpoint: https://REGION.mediago.io/api/bid?tn={AccountID} endpoint-compression: gzip geoscope: - USA diff --git a/src/main/resources/bidder-config/medianet.yaml b/src/main/resources/bidder-config/medianet.yaml index cf4119e4147..dd743b85716 100644 --- a/src/main/resources/bidder-config/medianet.yaml +++ b/src/main/resources/bidder-config/medianet.yaml @@ -1,6 +1,6 @@ adapters: medianet: - endpoint: https://prebid-adapter.media.net/rtb/pb/prebids2s?src={{PREBID_SERVER_ENDPOINT}} + endpoint: https://prebid-adapter.media.net/rtb/pb/prebids2s?src={PREBID_SERVER_ENDPOINT} ortb-version: "2.6" endpoint-compression: gzip meta-info: diff --git a/src/main/resources/bidder-config/melozen.yaml b/src/main/resources/bidder-config/melozen.yaml index 8626fd4eabe..63871feb041 100644 --- a/src/main/resources/bidder-config/melozen.yaml +++ b/src/main/resources/bidder-config/melozen.yaml @@ -1,6 +1,6 @@ adapters: melozen: - endpoint: https://prebid.melozen.com/rtb/v2/bid?publisher_id={{PublisherID}} + endpoint: https://prebid.melozen.com/rtb/v2/bid?publisher_id={PublisherID} endpoint-compression: gzip modifying-vast-xml-allowed: true geoscope: diff --git a/src/main/resources/bidder-config/metax.yaml b/src/main/resources/bidder-config/metax.yaml index 493e0640bfd..e694387cb18 100644 --- a/src/main/resources/bidder-config/metax.yaml +++ b/src/main/resources/bidder-config/metax.yaml @@ -1,7 +1,7 @@ # The MetaX Bidding adapter requires setup before beginning. Please contact us at adapters: metax: - endpoint: https://hb.metaxads.com/prebid?sid={{publisherId}}&adunit={{adUnit}}&source=prebid-server + endpoint: https://hb.metaxads.com/prebid?sid={publisherId}&adunit={adUnit}&source=prebid-server meta-info: maintainer-email: prebid@metaxsoft.com app-media-types: diff --git a/src/main/resources/bidder-config/minutemedia.yaml b/src/main/resources/bidder-config/minutemedia.yaml index 096f7776ded..92342f48fba 100644 --- a/src/main/resources/bidder-config/minutemedia.yaml +++ b/src/main/resources/bidder-config/minutemedia.yaml @@ -1,7 +1,7 @@ adapters: minutemedia: - endpoint: https://pbs.minutemedia-prebid.com/pbs-mm?publisher_id={{PublisherId}} - test-endpoint: https://pbs.minutemedia-prebid.com/pbs-test?publisher_id={{PublisherId}} + endpoint: https://pbs.minutemedia-prebid.com/pbs-mm?publisher_id={PublisherId} + test-endpoint: https://pbs.minutemedia-prebid.com/pbs-test?publisher_id={PublisherId} modifying-vast-xml-allowed: true meta-info: maintainer-email: hb@minutemedia.com diff --git a/src/main/resources/bidder-config/missena.yaml b/src/main/resources/bidder-config/missena.yaml index e16c8a1bdbe..2dabed0acc6 100644 --- a/src/main/resources/bidder-config/missena.yaml +++ b/src/main/resources/bidder-config/missena.yaml @@ -1,6 +1,6 @@ adapters: missena: - endpoint: https://bid.missena.io/?t={{PublisherID}} + endpoint: https://bid.missena.io/?t={PublisherID} endpoint-compression: gzip meta-info: maintainer-email: prebid@missena.com diff --git a/src/main/resources/bidder-config/mobfoxpb.yaml b/src/main/resources/bidder-config/mobfoxpb.yaml index bed22ef4094..92065312488 100644 --- a/src/main/resources/bidder-config/mobfoxpb.yaml +++ b/src/main/resources/bidder-config/mobfoxpb.yaml @@ -1,6 +1,6 @@ adapters: mobfoxpb: - endpoint: http://bes.mobfox.com/?c=__route__&m=__method__&key=__key__ + endpoint: http://bes.mobfox.com/?c={route}&m={method}&key={key} meta-info: maintainer-email: support@mobfox.com app-media-types: diff --git a/src/main/resources/bidder-config/motorik.yaml b/src/main/resources/bidder-config/motorik.yaml index 7ce7cdf9dad..269af87a599 100644 --- a/src/main/resources/bidder-config/motorik.yaml +++ b/src/main/resources/bidder-config/motorik.yaml @@ -1,6 +1,6 @@ adapters: motorik: - endpoint: http://lb-east.motorik.io/?k={{AccountID}}&name={{SourceId}} + endpoint: http://lb-east.motorik.io/?k={AccountID}&name={SourceId} meta-info: maintainer-email: support@motorik.io app-media-types: diff --git a/src/main/resources/bidder-config/oms.yaml b/src/main/resources/bidder-config/oms.yaml index 68d535168f2..70894c9787d 100644 --- a/src/main/resources/bidder-config/oms.yaml +++ b/src/main/resources/bidder-config/oms.yaml @@ -1,6 +1,6 @@ adapters: oms: - endpoint: http://rt.marphezis.com/pbs?publisherId={{PublisherId}} + endpoint: http://rt.marphezis.com/pbs?publisherId={PublisherId} meta-info: maintainer-email: prebid@onlinemediasolutions.com app-media-types: diff --git a/src/main/resources/bidder-config/onetag.yaml b/src/main/resources/bidder-config/onetag.yaml index 34f2d844158..ad5c94dd4b3 100644 --- a/src/main/resources/bidder-config/onetag.yaml +++ b/src/main/resources/bidder-config/onetag.yaml @@ -1,6 +1,6 @@ adapters: onetag: - endpoint: https://prebid-server.onetag-sys.com/prebid-server/{{publisherId}} + endpoint: https://prebid-server.onetag-sys.com/prebid-server/{publisherId} ortb-version: "2.6" endpoint-compression: gzip meta-info: diff --git a/src/main/resources/bidder-config/operaads.yaml b/src/main/resources/bidder-config/operaads.yaml index 2fe6b14a167..66b9058e417 100644 --- a/src/main/resources/bidder-config/operaads.yaml +++ b/src/main/resources/bidder-config/operaads.yaml @@ -1,6 +1,6 @@ adapters: operaads: - endpoint: https://s.adx.opera.com/ortb/v2/{{PublisherID}}?ep={{AccountID}} + endpoint: https://s.adx.opera.com/ortb/v2/{PublisherID}?ep={AccountID} meta-info: maintainer-email: adtech-prebid-group@opera.com app-media-types: diff --git a/src/main/resources/bidder-config/ownadx.yaml b/src/main/resources/bidder-config/ownadx.yaml index c836d847f98..6a9124cf6be 100644 --- a/src/main/resources/bidder-config/ownadx.yaml +++ b/src/main/resources/bidder-config/ownadx.yaml @@ -1,6 +1,6 @@ adapters: ownadx: - endpoint: "https://pbs.prebid-ownadx.com/bidder/bid/{{SeatID}}/{{SspID}}?token={{TokenID}}" + endpoint: "https://pbs.prebid-ownadx.com/bidder/bid/{SeatID}/{SspID}?token={TokenID}" endpoint-compression: gzip meta-info: maintainer-email: prebid-team@techbravo.com diff --git a/src/main/resources/bidder-config/rediads.yaml b/src/main/resources/bidder-config/rediads.yaml index c885129acba..5d93c63a71c 100644 --- a/src/main/resources/bidder-config/rediads.yaml +++ b/src/main/resources/bidder-config/rediads.yaml @@ -1,6 +1,6 @@ adapters: rediads: - endpoint: https://{{SUBDOMAIN}}.rediads.com/openrtb2/auction + endpoint: https://{SUBDOMAIN}.rediads.com/openrtb2/auction default-subdomain: bidding ortb-version: "2.6" modifying-vast-xml-allowed: true diff --git a/src/main/resources/bidder-config/relevantdigital.yaml b/src/main/resources/bidder-config/relevantdigital.yaml index 330d19b69e9..d8a7e4e6153 100644 --- a/src/main/resources/bidder-config/relevantdigital.yaml +++ b/src/main/resources/bidder-config/relevantdigital.yaml @@ -1,6 +1,6 @@ adapters: relevantdigital: - endpoint: https://{{Host}}.relevant-digital.com/openrtb2/auction + endpoint: https://{Host}.relevant-digital.com/openrtb2/auction meta-info: maintainer-email: support@relevant-digital.com app-media-types: diff --git a/src/main/resources/bidder-config/roulax.yaml b/src/main/resources/bidder-config/roulax.yaml index b9055e5df4a..7d331b76752 100644 --- a/src/main/resources/bidder-config/roulax.yaml +++ b/src/main/resources/bidder-config/roulax.yaml @@ -1,6 +1,6 @@ adapters: roulax: - endpoint: http://dsp.rcoreads.com/api/{{PublisherID}}?pid={{AccountID}} + endpoint: http://dsp.rcoreads.com/api/{PublisherID}?pid={AccountID} meta-info: maintainer-email: bussiness@roulax.io app-media-types: diff --git a/src/main/resources/bidder-config/screencore.yaml b/src/main/resources/bidder-config/screencore.yaml index c214608cc5c..87331bd4abd 100644 --- a/src/main/resources/bidder-config/screencore.yaml +++ b/src/main/resources/bidder-config/screencore.yaml @@ -1,6 +1,6 @@ adapters: screencore: - endpoint: http://h1.screencore.io/?kp={{AccountId}}&kn={{SourceId}} + endpoint: http://h1.screencore.io/?kp={AccountId}&kn={SourceId} meta-info: maintainer-email: connect@screencore.io app-media-types: diff --git a/src/main/resources/bidder-config/seedingAlliance.yaml b/src/main/resources/bidder-config/seedingAlliance.yaml index 6f3f64bb8aa..cd0d1d8126f 100644 --- a/src/main/resources/bidder-config/seedingAlliance.yaml +++ b/src/main/resources/bidder-config/seedingAlliance.yaml @@ -1,10 +1,10 @@ adapters: seedingAlliance: - endpoint: https://b.nativendo.de/cds/rtb/bid?ssp={{AccountId}} + endpoint: https://b.nativendo.de/cds/rtb/bid?ssp={AccountId} aliases: suntContent: enabled: false - endpoint: https://b.suntcontent.se/cds/rtb/bid?ssp={{AccountId}} + endpoint: https://b.suntcontent.se/cds/rtb/bid?ssp={AccountId} meta-info: maintainer-email: tech@seeding-alliance.de vendor-id: 1097 @@ -16,7 +16,7 @@ adapters: uid-macro: '$UID' finative: enabled: false - endpoint: https://b.finative.cloud/cds/rtb/bid?ssp={{AccountId}} + endpoint: https://b.finative.cloud/cds/rtb/bid?ssp={AccountId} meta-info: maintainer-email: tech@seeding-alliance.de app-media-types: diff --git a/src/main/resources/bidder-config/silvermob.yaml b/src/main/resources/bidder-config/silvermob.yaml index 2cd11837305..ef5da7a2fae 100644 --- a/src/main/resources/bidder-config/silvermob.yaml +++ b/src/main/resources/bidder-config/silvermob.yaml @@ -1,6 +1,6 @@ adapters: silvermob: - endpoint: http://{{Host}}.silvermob.com/marketplace/api/dsp/bid/{{ZoneID}} + endpoint: http://{Host}.silvermob.com/marketplace/api/dsp/bid/{ZoneID} meta-info: maintainer-email: support@silvermob.com app-media-types: diff --git a/src/main/resources/bidder-config/smarthub.yaml b/src/main/resources/bidder-config/smarthub.yaml index e3d370266b5..f0bc668f9cf 100644 --- a/src/main/resources/bidder-config/smarthub.yaml +++ b/src/main/resources/bidder-config/smarthub.yaml @@ -1,34 +1,34 @@ adapters: smarthub: - endpoint: https://prebid.attekmi.com/pbserver?partnerName={{Host}}&seat={{AccountID}}&token={{SourceId}} + endpoint: https://prebid.attekmi.com/pbserver?partnerName={Host}&seat={AccountId}&token={SourceId} aliases: markapp: enabled: false - endpoint: https://markapp-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://markapp-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} jdpmedia: enabled: false - endpoint: https://jdpmedia-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://jdpmedia-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} tredio: enabled: false - endpoint: https://tredio-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://tredio-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} felixads: enabled: false - endpoint: https://felixads-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://felixads-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} jambojar: enabled: false - endpoint: https://jambojar-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://jambojar-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} adinify: enabled: false - endpoint: https://adinify-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://adinify-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} artechnology: enabled: false - endpoint: https://artechnology-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://artechnology-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} addigi: enabled: false - endpoint: https://addigi-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://addigi-prebid.attekmi.com/pbserver/?seat={AccountId}&token={SourceId} radianfusion: enabled: false - endpoint: https://radiantfusion-prebid.attekmi.co/pbserver/?seat={{AccountID}}&token={{SourceId}} + endpoint: https://radiantfusion-prebid.attekmi.co/pbserver/?seat={AccountId}&token={SourceId} meta-info: maintainer-email: prebid@attekmi.com app-media-types: diff --git a/src/main/resources/bidder-config/smartrtb.yaml b/src/main/resources/bidder-config/smartrtb.yaml index 25fb64d832a..f12e4b16736 100644 --- a/src/main/resources/bidder-config/smartrtb.yaml +++ b/src/main/resources/bidder-config/smartrtb.yaml @@ -1,6 +1,6 @@ adapters: smartrtb: - endpoint: http://market-east.smrtb.com/json/publisher/rtb?pubid= + endpoint: http://market-east.smrtb.com/json/publisher/rtb?pubid={PubId} meta-info: maintainer-email: engineering@smrtb.com app-media-types: diff --git a/src/main/resources/bidder-config/smartyads.yaml b/src/main/resources/bidder-config/smartyads.yaml index 72411680d9e..bbaa06da857 100644 --- a/src/main/resources/bidder-config/smartyads.yaml +++ b/src/main/resources/bidder-config/smartyads.yaml @@ -1,6 +1,6 @@ adapters: smartyads: - endpoint: http://{{Host}}.smartyads.com/bid?rtb_seat_id={{SourceId}}&secret_key={{AccountID}} + endpoint: http://{Host}.smartyads.com/bid?rtb_seat_id={SourceId}&secret_key={AccountID} meta-info: maintainer-email: support@smartyads.com app-media-types: diff --git a/src/main/resources/bidder-config/smilewanted.yaml b/src/main/resources/bidder-config/smilewanted.yaml index 3cac81ccae3..2f51457b228 100644 --- a/src/main/resources/bidder-config/smilewanted.yaml +++ b/src/main/resources/bidder-config/smilewanted.yaml @@ -1,6 +1,6 @@ adapters: smilewanted: - endpoint: https://prebid-server.smilewanted.com/java/{{ZoneId}} + endpoint: https://prebid-server.smilewanted.com/java/{ZoneId} meta-info: maintainer-email: tech@smilewanted.com app-media-types: diff --git a/src/main/resources/bidder-config/smrtconnect.yaml b/src/main/resources/bidder-config/smrtconnect.yaml index c9ee3a640ef..dae1324eb96 100644 --- a/src/main/resources/bidder-config/smrtconnect.yaml +++ b/src/main/resources/bidder-config/smrtconnect.yaml @@ -1,6 +1,6 @@ adapters: smrtconnect: - endpoint: https://amp.smrtconnect.com/openrtb2/auction?supply_id={{SupplyId}} + endpoint: https://amp.smrtconnect.com/openrtb2/auction?supply_id={SupplyId} # This bidder does not operate globally. Please consider setting "disabled: true" in European datacenters. geoscope: - "!EEA" diff --git a/src/main/resources/bidder-config/taboola.yaml b/src/main/resources/bidder-config/taboola.yaml index f5cc2bfeb62..0cec9e1c31c 100644 --- a/src/main/resources/bidder-config/taboola.yaml +++ b/src/main/resources/bidder-config/taboola.yaml @@ -1,6 +1,6 @@ adapters: taboola: - endpoint: "https://{{MediaType}}.bidder.taboola.com/OpenRTB/PS/auction?exchange={{GvlID}}&publisher={{PublisherID}}" + endpoint: "https://{MediaType}.bidder.taboola.com/OpenRTB/PS/auction?exchange={GvlID}&publisher={PublisherID}" meta-info: maintainer-email: ps-team@taboola.com app-media-types: diff --git a/src/main/resources/bidder-config/thetradedesk.yaml b/src/main/resources/bidder-config/thetradedesk.yaml index e8b9976e786..74d6bf2176b 100644 --- a/src/main/resources/bidder-config/thetradedesk.yaml +++ b/src/main/resources/bidder-config/thetradedesk.yaml @@ -1,6 +1,6 @@ adapters: thetradedesk: - endpoint: https://direct.adsrvr.org/bid/bidder/{{SupplyId}} + endpoint: https://direct.adsrvr.org/bid/bidder/{SupplyId} aliases: ttd: ~ meta-info: diff --git a/src/main/resources/bidder-config/tradplus.yaml b/src/main/resources/bidder-config/tradplus.yaml index 9644f025c45..6f5ffdc12b2 100644 --- a/src/main/resources/bidder-config/tradplus.yaml +++ b/src/main/resources/bidder-config/tradplus.yaml @@ -1,6 +1,6 @@ adapters: tradplus: - endpoint: "https://{{ZoneID}}adx.tradplusad.com/{{AccountID}}/pserver" + endpoint: "https://{ZoneID}adx.tradplusad.com/{AccountID}/pserver" meta-info: maintainer-email: "tpxcontact@tradplus.com" app-media-types: diff --git a/src/main/resources/bidder-config/trafficgate.yaml b/src/main/resources/bidder-config/trafficgate.yaml index 135d61e2fbe..28594de2224 100644 --- a/src/main/resources/bidder-config/trafficgate.yaml +++ b/src/main/resources/bidder-config/trafficgate.yaml @@ -1,6 +1,6 @@ adapters: trafficgate: - endpoint: http://{{subdomain}}.bc-plugin.com/?c=o&m=rtb + endpoint: http://{subdomain}.bc-plugin.com/?c=o&m=rtb modifying-vast-xml-allowed: true meta-info: maintainer-email: "support@bidscube.com" diff --git a/src/main/resources/bidder-config/trustedstack.yaml b/src/main/resources/bidder-config/trustedstack.yaml index 3685e3e93a2..d6e0f5d94e1 100644 --- a/src/main/resources/bidder-config/trustedstack.yaml +++ b/src/main/resources/bidder-config/trustedstack.yaml @@ -1,6 +1,6 @@ adapters: trustedstack: - endpoint: https://prebid-adapter.trustedstack.com/rtb/pb/trustedstacks2s?src={{PREBID_SERVER_ENDPOINT}} + endpoint: https://prebid-adapter.trustedstack.com/rtb/pb/trustedstacks2s?src={PREBID_SERVER_ENDPOINT} ortb-version: "2.6" endpoint-compression: gzip meta-info: diff --git a/src/main/resources/bidder-config/videoheroes.yaml b/src/main/resources/bidder-config/videoheroes.yaml index ad4c664641d..607dcd8ac0a 100644 --- a/src/main/resources/bidder-config/videoheroes.yaml +++ b/src/main/resources/bidder-config/videoheroes.yaml @@ -1,6 +1,6 @@ adapters: videoheroes: - endpoint: http://point.contextualadv.com/?t=3&partner={{PublisherID}} + endpoint: http://point.contextualadv.com/?t=3&partner={PublisherID} meta-info: maintainer-email: support@videoheroes.tv app-media-types: diff --git a/src/main/resources/bidder-config/xeworks.yaml b/src/main/resources/bidder-config/xeworks.yaml index 7bc0bf4c0be..0177e988d49 100644 --- a/src/main/resources/bidder-config/xeworks.yaml +++ b/src/main/resources/bidder-config/xeworks.yaml @@ -1,15 +1,15 @@ adapters: xeworks: - endpoint: http://prebid-srv.xe.works/?pid={{SourceId}}&host={{Host}} + endpoint: http://prebid-srv.xe.works/?pid={SourceId}&host={Host} aliases: connektai: enabled: false - endpoint: http://rtb.connektai.live/?pid={{SourceId}}&host={{Host}}&s=pbs + endpoint: http://rtb.connektai.live/?pid={SourceId}&host={Host}&s=pbs meta-info: maintainer-email: adops@connekt.ai adipolo: enabled: false - endpoint: http://rtb.adipolo.live?pid={{SourceId}}&host={{Host}}&pbs=1 + endpoint: http://rtb.adipolo.live?pid={SourceId}&host={Host}&pbs=1 meta-info: maintainer-email: smart@adipolo.com vendor-id: 1456 diff --git a/src/main/resources/bidder-config/yeahmobi.yaml b/src/main/resources/bidder-config/yeahmobi.yaml index 082c74a1ecf..8351d37d20a 100644 --- a/src/main/resources/bidder-config/yeahmobi.yaml +++ b/src/main/resources/bidder-config/yeahmobi.yaml @@ -1,6 +1,6 @@ adapters: yeahmobi: - endpoint: https://{{.Host}}/prebid/bid + endpoint: https://gw-{ZoneId}-bid.yeahtargeter.com/prebid/bid meta-info: maintainer-email: developer@yeahmobi.com app-media-types: diff --git a/src/main/resources/bidder-config/zeroclickfraud.yaml b/src/main/resources/bidder-config/zeroclickfraud.yaml index 6008db2b3e3..19cdf5065a7 100644 --- a/src/main/resources/bidder-config/zeroclickfraud.yaml +++ b/src/main/resources/bidder-config/zeroclickfraud.yaml @@ -1,6 +1,6 @@ adapters: zeroclickfraud: - endpoint: http://{{Host}}/openrtb2?sid={{SourceId}} + endpoint: http://{Host}/openrtb2?sid={SourceId} meta-info: maintainer-email: support@datablocks.net app-media-types: From 1d49ecbd739e556087ce3620aab7da21c44e8422 Mon Sep 17 00:00:00 2001 From: Danylo Date: Tue, 21 Apr 2026 00:24:12 +0200 Subject: [PATCH 6/6] Fix units --- .../targeting/v1/net/APIClientImplTest.java | 2 +- sample/configs/prebid-config-db.yaml | 2 +- sample/configs/prebid-config-s3.yaml | 2 +- sample/configs/prebid-config-with-51d-dd.yaml | 2 +- sample/configs/prebid-config-with-module.yaml | 2 +- .../configs/prebid-config-with-optable.yaml | 2 +- sample/configs/prebid-config-with-wurfl.yaml | 2 +- sample/configs/prebid-config.yaml | 2 +- .../AudienceNetworkBidder.java | 12 +- .../bidder/eplanning/EplanningBidder.java | 3 +- .../server/bidder/flipp/FlippBidder.java | 4 +- .../bidder/marsmedia/MarsmediaBidder.java | 8 +- .../bidder/mobfoxpb/MobfoxpbBidder.java | 2 +- .../server/bidder/nobid/NobidBidder.java | 4 +- .../server/bidder/rubicon/RubiconBidder.java | 5 +- .../server/bidder/sparteo/SparteoBidder.java | 2 +- .../bidder/yieldlab/YieldlabBidder.java | 29 ++-- .../server/cache/utils/CacheServiceUtil.java | 13 +- .../gdpr/vendorlist/VendorListService.java | 9 +- .../config/bidder/RubiconConfiguration.java | 3 + .../java/org/prebid/server/util/HttpUtil.java | 15 +- .../org/prebid/server/util/QueryString.java | 34 +++++ src/main/java/org/prebid/server/util/Uri.java | 4 +- .../bidder-config/audiencenetwork.yaml | 2 +- .../LiveintentAnalyticsReporterTest.java | 62 +++++--- .../server/bidder/aceex/AceexBidderTest.java | 2 +- .../bidder/acuityads/AcuityadsBidderTest.java | 2 +- .../bidder/adelement/AdelementBidderTest.java | 2 +- .../bidder/adhese/AdheseBidderTest.java | 2 +- .../bidder/adkernel/AdkernelBidderTest.java | 14 +- .../adkerneladn/AdkernelAdnBidderTest.java | 2 +- .../bidder/admatic/AdmaticBidderTest.java | 4 +- .../server/bidder/adot/AdotBidderTest.java | 4 +- .../bidder/adtonos/AdtonosBidderTest.java | 2 +- .../advangelists/AdvangelistsBidderTest.java | 2 +- .../bidder/adverxo/AdverxoBidderTest.java | 16 +- .../bidder/adview/AdviewBidderTest.java | 2 +- .../bidder/afront/AfrontBidderTest.java | 2 +- .../server/bidder/aidem/AidemBidderTest.java | 2 +- .../bidder/algorix/AlgorixBidderTest.java | 2 +- .../bidder/appnexus/AppnexusBidderTest.java | 2 +- .../server/bidder/aso/AsoBidderTest.java | 2 +- .../AudienceNetworkBidderTest.java | 3 +- .../bidder/axonix/AxonixBidderTest.java | 2 +- .../bematterfull/BematterfullBidderTest.java | 2 +- .../bidder/between/BetweenBidderTest.java | 6 +- .../bidmachine/BidmachineBidderTest.java | 6 +- .../bidder/bigoad/BigoadBidderTest.java | 2 +- .../bidder/blasto/BlastoBidderTest.java | 2 +- .../server/bidder/blis/BlisBidderTest.java | 2 +- .../boldwinrapid/BoldwinRapidBidderTest.java | 2 +- .../server/bidder/brave/BraveBidderTest.java | 2 +- .../server/bidder/bwx/BwxBidderTest.java | 2 +- .../server/bidder/clydo/ClydoBidderTest.java | 2 +- .../bidder/contxtful/ContxtfulBidderTest.java | 11 +- .../datablocks/DatablocksBidderTest.java | 2 +- .../bidder/displayio/DisplayioBidderTest.java | 2 +- .../driftpixel/DriftpixelBidderTest.java | 2 +- .../elementaltv/ElementalTVBidderTest.java | 2 +- .../bidder/eplanning/EplanningBidderTest.java | 38 ++--- .../bidder/escalax/EscalaxBidderTest.java | 4 +- .../bidder/flatads/FlatadsBidderTest.java | 2 +- .../server/bidder/flipp/FlippBidderTest.java | 8 +- .../bidder/gothamads/GothamAdsBidderTest.java | 2 +- .../bidder/gumgum/GumgumBidderTest.java | 25 +--- .../server/bidder/imds/ImdsBidderTest.java | 2 +- .../ImprovedigitalBidderTest.java | 5 +- .../InteractiveOffersBidderTest.java | 18 ++- .../bidder/intertech/IntertechBidderTest.java | 18 ++- .../bidder/invibes/InvibesBidderTest.java | 2 +- .../server/bidder/iqx/IqxBidderTest.java | 2 +- .../bidder/kayzen/KayzenBidderTest.java | 2 +- .../krushmedia/KrushmediaBidderTest.java | 2 +- .../lemmadigital/LemmaDigitalBidderTest.java | 2 +- .../LimeLightDigitalBidderTest.java | 2 +- .../bidder/lmkiviads/LmKiviAdsBidderTest.java | 2 +- .../bidder/lunamedia/LunamediaBidderTest.java | 2 +- .../madvertise/MadvertiseBidderTest.java | 2 +- .../bidder/marsmedia/MarsmediaBidderTest.java | 2 +- .../bidder/mediago/MediaGoBidderTest.java | 2 +- .../bidder/melozen/MeloZenBidderTest.java | 2 +- .../server/bidder/metax/MetaxBidderTest.java | 2 +- .../minutemedia/MinuteMediaBidderTest.java | 4 +- .../bidder/missena/MissenaBidderTest.java | 2 +- .../bidder/mobfoxpb/MobfoxpbBidderTest.java | 2 +- .../bidder/motorik/MotorikBidderTest.java | 4 +- .../server/bidder/nobid/NobidBidderTest.java | 2 +- .../server/bidder/oms/OmsBidderTest.java | 2 +- .../bidder/onetag/OnetagBidderTest.java | 2 +- .../bidder/operaads/OperaadsBidderTest.java | 2 +- .../bidder/ownadx/OwnAdxBidderTest.java | 2 +- .../bidder/rediads/RediadsBidderTest.java | 2 +- .../RelevantDigitalBidderTest.java | 2 +- .../bidder/roulax/RoulaxBidderTest.java | 2 +- .../bidder/rubicon/RubiconBidderTest.java | 24 ++- .../screencore/ScreencoreBidderTest.java | 2 +- .../SeedingAllianceBidderTest.java | 2 +- .../bidder/silvermob/SilvermobBidderTest.java | 2 +- .../SmartadserverBidderTest.java | 4 +- .../bidder/smarthub/SmarthubBidderTest.java | 2 +- .../bidder/smartrtb/SmartrtbBidderTest.java | 6 +- .../bidder/smartyads/SmartyAdsBidderTest.java | 2 +- .../smilewanted/SmileWantedBidderTest.java | 4 +- .../smrtconnect/SmrtconnectBidderTest.java | 2 +- .../bidder/taboola/TaboolaBidderTest.java | 2 +- .../server/bidder/tappx/TappxBidderTest.java | 4 +- .../thetradedesk/TheTradeDeskBidderTest.java | 2 +- .../bidder/tradplus/TradPlusBidderTest.java | 2 +- .../trafficgate/TrafficGateBidderTest.java | 2 +- .../trustedstack/TrustedstackBidderTest.java | 2 +- .../videoheroes/VideoHeroesBidderTest.java | 2 +- .../bidder/xeworks/XeworksBidderTest.java | 2 +- .../bidder/yandex/YandexBidderTest.java | 6 +- .../bidder/yeahmobi/YeahmobiBidderTest.java | 4 +- .../bidder/yieldlab/YieldlabBidderTest.java | 141 +++++++----------- .../ZeroclickfraudBidderTest.java | 2 +- .../server/cache/CoreCacheServiceTest.java | 9 +- .../org/prebid/server/it/IntertechTest.java | 2 +- .../org/prebid/server/it/SmartrtbTest.java | 2 +- .../org/prebid/server/it/YieldlabTest.java | 2 +- .../vendorlist/VendorListServiceTest.java | 8 +- .../settings/HttpApplicationSettingsTest.java | 12 +- .../bidder/util/UsersyncerCreatorTest.java | 8 +- .../server/it/test-application.properties | 2 +- 124 files changed, 425 insertions(+), 360 deletions(-) create mode 100644 src/main/java/org/prebid/server/util/QueryString.java diff --git a/extra/modules/optable-targeting/src/test/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImplTest.java b/extra/modules/optable-targeting/src/test/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImplTest.java index d147d7d4294..83235714eb5 100644 --- a/extra/modules/optable-targeting/src/test/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImplTest.java +++ b/extra/modules/optable-targeting/src/test/java/org/prebid/server/hooks/modules/optable/targeting/v1/net/APIClientImplTest.java @@ -162,7 +162,7 @@ public void shouldUseAuthorizationHeaderIfApiKeyIsPresent() { public void shouldBuildApiUrlByReplacingTenantAndOriginMacros() { // given target = new APIClientImpl( - "http://endpoint.optable.com?t={{TENANT}}&o={{ORIGIN}}", + "http://endpoint.optable.com?t={TENANT}&o={ORIGIN}", httpClient, jacksonMapper, 10); diff --git a/sample/configs/prebid-config-db.yaml b/sample/configs/prebid-config-db.yaml index fd911fe6e73..b09e05dfe79 100644 --- a/sample/configs/prebid-config-db.yaml +++ b/sample/configs/prebid-config-db.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config-s3.yaml b/sample/configs/prebid-config-s3.yaml index 277ad94613c..87857c2d2e7 100644 --- a/sample/configs/prebid-config-s3.yaml +++ b/sample/configs/prebid-config-s3.yaml @@ -7,7 +7,7 @@ server: adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config-with-51d-dd.yaml b/sample/configs/prebid-config-with-51d-dd.yaml index d523bdbdf11..b75b4a155d9 100644 --- a/sample/configs/prebid-config-with-51d-dd.yaml +++ b/sample/configs/prebid-config-with-51d-dd.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config-with-module.yaml b/sample/configs/prebid-config-with-module.yaml index 06fc01fe3e2..60485f8523e 100644 --- a/sample/configs/prebid-config-with-module.yaml +++ b/sample/configs/prebid-config-with-module.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config-with-optable.yaml b/sample/configs/prebid-config-with-optable.yaml index d9e736e96ac..803658fd1fa 100644 --- a/sample/configs/prebid-config-with-optable.yaml +++ b/sample/configs/prebid-config-with-optable.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config-with-wurfl.yaml b/sample/configs/prebid-config-with-wurfl.yaml index 0ce8abebe17..254f949b97d 100644 --- a/sample/configs/prebid-config-with-wurfl.yaml +++ b/sample/configs/prebid-config-with-wurfl.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/sample/configs/prebid-config.yaml b/sample/configs/prebid-config.yaml index 0d8b5c90ff2..7b337fa0db9 100644 --- a/sample/configs/prebid-config.yaml +++ b/sample/configs/prebid-config.yaml @@ -2,7 +2,7 @@ status-response: "ok" adapters: appnexus: enabled: true - ix: + rtbhouse: enabled: true openx: enabled: true diff --git a/src/main/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidder.java b/src/main/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidder.java index 8266b55934e..dc45e60526b 100644 --- a/src/main/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidder.java +++ b/src/main/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidder.java @@ -36,6 +36,7 @@ import org.prebid.server.proto.openrtb.ext.request.audiencenetwork.ExtImpAudienceNetwork; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import javax.crypto.Mac; import java.util.ArrayList; @@ -56,7 +57,7 @@ public class AudienceNetworkBidder implements Bidder { private final String endpointUrl; private final String platformId; private final String appSecret; - private final String timeoutNotificationUrlTemplate; + private final Uri timeoutNotificationUrlTemplate; private final JacksonMapper mapper; public AudienceNetworkBidder(String endpointUrl, @@ -68,8 +69,7 @@ public AudienceNetworkBidder(String endpointUrl, this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); this.platformId = checkBlankString(Objects.requireNonNull(platformId), "platform-id"); this.appSecret = checkBlankString(Objects.requireNonNull(appSecret), "app-secret"); - this.timeoutNotificationUrlTemplate = HttpUtil.validateUrl( - Objects.requireNonNull(timeoutNotificationUrlTemplate)); + this.timeoutNotificationUrlTemplate = Uri.of(timeoutNotificationUrlTemplate); this.mapper = Objects.requireNonNull(mapper); } @@ -343,7 +343,11 @@ public HttpRequest makeTimeoutNotification(HttpRequest httpReq return HttpRequest.builder() .method(HttpMethod.GET) - .uri(timeoutNotificationUrlTemplate.formatted(platformId, publisherId, requestId)) + .uri(timeoutNotificationUrlTemplate + .replaceMacro("partner", platformId) + .replaceMacro("app", publisherId) + .replaceMacro("auction", requestId) + .expand()) .build(); } } diff --git a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java index 26fb706b11f..aac740ecdd1 100644 --- a/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java +++ b/src/main/java/org/prebid/server/bidder/eplanning/EplanningBidder.java @@ -243,9 +243,8 @@ private String resolveRequestUri(BidRequest request, List requestsString .addQueryParam("r", "pbs") .addQueryParam("ncb", "1") - .addQueryParam("e", String.join("+", requestsStrings)) - .addQueryParam("ur", app == null ? pageUrl : null) + .addQueryParam("e", String.join("+", requestsStrings)) .addQueryParam("uid", buyeruid) .addQueryParam("appn", StringUtils.isNotBlank(appName) ? appName : null) diff --git a/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java b/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java index 67090b4140a..1a83082d9e3 100644 --- a/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java +++ b/src/main/java/org/prebid/server/bidder/flipp/FlippBidder.java @@ -172,11 +172,11 @@ private static String resolveContentCode(Site site, ExtImpFlipp extImp) { } final Matcher matcher = CONTENT_CODE_PATTERN.matcher(pageUrl); - if (!matcher.matches()) { + if (!matcher.find()) { return null; } - return matcher.group(0); + return HttpUtil.decodeUrl(matcher.group(1)); } private static List resolveKeywords(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/marsmedia/MarsmediaBidder.java b/src/main/java/org/prebid/server/bidder/marsmedia/MarsmediaBidder.java index ea7e4f9b4f2..5348053bc8c 100644 --- a/src/main/java/org/prebid/server/bidder/marsmedia/MarsmediaBidder.java +++ b/src/main/java/org/prebid/server/bidder/marsmedia/MarsmediaBidder.java @@ -26,6 +26,7 @@ import org.prebid.server.proto.openrtb.ext.request.marsmedia.ExtImpMarsmedia; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.Uri; import java.util.ArrayList; import java.util.Collections; @@ -38,11 +39,11 @@ public class MarsmediaBidder implements Bidder { new TypeReference<>() { }; - private final String endpointUrl; + private final Uri endpointUrl; private final JacksonMapper mapper; public MarsmediaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.endpointUrl = Uri.of(endpointUrl); this.mapper = Objects.requireNonNull(mapper); } @@ -57,12 +58,11 @@ public Result>> makeHttpRequests(BidRequest bidRequ return Result.withError(BidderError.badInput(e.getMessage())); } - final String uri = "%s&zone=%s".formatted(endpointUrl, firstImpZone); final MultiMap headers = resolveHeaders(bidRequest.getDevice()); return Result.withValue(HttpRequest.builder() .method(HttpMethod.POST) - .uri(uri) + .uri(endpointUrl.addQueryParam("zone", firstImpZone).expand()) .headers(headers) .body(mapper.encodeToBytes(outgoingRequest)) .payload(outgoingRequest) diff --git a/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java b/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java index 481c5f784c7..d5141e80bdb 100644 --- a/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java +++ b/src/main/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidder.java @@ -86,7 +86,7 @@ private ExtImpMobfoxpb parseImpExt(Imp imp) { private String buildUri(String key) { final boolean keyPresent = StringUtils.isNotEmpty(key); return endpointUrl - .replaceMacro(URL_KEY_MACROS, keyPresent ? key : null) + .replaceMacro(URL_KEY_MACROS, keyPresent ? key : "__" + URL_KEY_MACROS + "__") .replaceMacro(URL_ROUTE_MACROS, keyPresent ? ROUTE_RTB : ROUTE_NATIVE) .replaceMacro(URL_METHOD_MACROS, keyPresent ? METHOD_RTB : METHOD_NATIVE) .expand(); diff --git a/src/main/java/org/prebid/server/bidder/nobid/NobidBidder.java b/src/main/java/org/prebid/server/bidder/nobid/NobidBidder.java index e6b836dbc7b..54ff88cdc07 100644 --- a/src/main/java/org/prebid/server/bidder/nobid/NobidBidder.java +++ b/src/main/java/org/prebid/server/bidder/nobid/NobidBidder.java @@ -37,9 +37,7 @@ public NobidBidder(String endpointUrl, JacksonMapper mapper) { @Override public Result>> makeHttpRequests(BidRequest request) { - - return Result.of(Collections.singletonList(BidderUtil.defaultRequest(request, endpointUrl, mapper)), - Collections.emptyList()); + return Result.withValue(BidderUtil.defaultRequest(request, endpointUrl, mapper)); } @Override diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index c37efbf68d7..5b01b654836 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -178,6 +178,7 @@ public class RubiconBidder implements Bidder { private final String bidderName; private final Uri endpoint; + private final String defaultTkXInt; private final String externalUrl; private final String xapiUsername; private final Set supportedVendors; @@ -193,6 +194,7 @@ public class RubiconBidder implements Bidder { public RubiconBidder(String bidderName, String endpoint, + String defaultTkXInt, String externalUrl, String xapiUsername, String xapiPassword, @@ -207,6 +209,7 @@ public RubiconBidder(String bidderName, this.bidderName = Objects.requireNonNull(bidderName); this.endpoint = Uri.of(endpoint); + this.defaultTkXInt = defaultTkXInt; this.externalUrl = HttpUtil.validateUrl(Objects.requireNonNull(externalUrl)); this.xapiUsername = Objects.requireNonNull(xapiUsername); this.supportedVendors = Set.copyOf(Objects.requireNonNull(supportedVendors)); @@ -449,7 +452,7 @@ private BidRequest createSingleRequest(BidRequest bidRequest, private String makeUri(BidRequest bidRequest) { final String tkXint = tkXintValue(bidRequest); return endpoint - .addQueryParam(TK_XINT_QUERY_PARAMETER, StringUtils.isNotBlank(tkXint) ? tkXint : null) + .addQueryParam(TK_XINT_QUERY_PARAMETER, StringUtils.isNotBlank(tkXint) ? tkXint : defaultTkXInt) .expand(); } diff --git a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java index 38f989a81a5..ab02a7e380b 100644 --- a/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java +++ b/src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java @@ -222,9 +222,9 @@ private String resolveBundle(App app) { private String resolveEndpoint(String siteDomain, String appDomain, String networkId, String bundle) { return endpoint + .addQueryParam("network_id", StringUtils.isNotBlank(networkId) ? networkId : null) .addQueryParam("site_domain", StringUtils.isNotBlank(siteDomain) ? siteDomain : null) .addQueryParam("app_domain", StringUtils.isNotBlank(appDomain) ? appDomain : null) - .addQueryParam("network_id", StringUtils.isNotBlank(networkId) ? networkId : null) .addQueryParam("bundle", StringUtils.isNotBlank(bundle) ? bundle : null) .expand(); } diff --git a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java index f264db4e151..6decf563ddf 100644 --- a/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java +++ b/src/main/java/org/prebid/server/bidder/yieldlab/YieldlabBidder.java @@ -44,6 +44,7 @@ import org.prebid.server.proto.openrtb.ext.response.ExtBidDsa; import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import org.prebid.server.util.QueryString; import org.prebid.server.util.Uri; import java.math.BigDecimal; @@ -75,7 +76,6 @@ public class YieldlabBidder implements Bidder { private static final String AD_SIZE_SEPARATOR = "x"; private static final String CREATIVE_ID = "%s%s%s"; private static final String AD_SOURCE_BANNER = ""; - private static final String AD_SOURCE_URL = "https://ad.yieldlab.net/d/%s/%s/%s?%s"; private static final String TRANSPARENCY_TEMPLATE = "%s~%s"; private static final String TRANSPARENCY_TEMPLATE_PARAMS_DELIMITER = "_"; private static final String TRANSPARENCY_TEMPLATE_DELIMITER = "~~"; @@ -87,6 +87,12 @@ public class YieldlabBidder implements Bidder { """; + private static final String AD_SLOT_MACRO = "AdSlot"; + private static final String SUPPLY_ID_MACRO = "SupplyId"; + private static final String AD_SIZE_MACRO = "AdSize"; + private static final Uri AD_SOURCE_URL = + Uri.of("https://ad.yieldlab.net/d/{%s}/{%s}/{%s}".formatted(AD_SLOT_MACRO, SUPPLY_ID_MACRO, AD_SIZE_MACRO)); + private final Uri endpoint; private final Clock clock; private final JacksonMapper mapper; @@ -175,7 +181,9 @@ private String makeUrl(ExtImpYieldlab extImpYieldlab, BidRequest request, Map targeting : extImpYieldlab.getTargeting().entrySet()) { - parameterizedUri.addQueryParam(targeting.getKey(), targeting.getValue()); + queryString.add(targeting.getKey(), targeting.getValue()); } - return parameterizedUri.expand().replace("?", ""); + return queryString.expand().replace("?", ""); } private static String getGdprParameter(Regs regs) { @@ -497,7 +505,10 @@ private String makeVast(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBi } private String makeNurl(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBid yieldlabBid) { - final Uri.ParameterizedUri parameterizedUri = Uri.of(StringUtils.EMPTY) + final Uri.ParameterizedUri parameterizedUri = AD_SOURCE_URL + .replaceMacro(AD_SLOT_MACRO, extImp.getAdslotId()) + .replaceMacro(SUPPLY_ID_MACRO, extImp.getSupplyId()) + .replaceMacro(AD_SIZE_MACRO, yieldlabBid.getAdSize()) .addQueryParam("ts", resolveNumberParameter(clock.instant().getEpochSecond())) .addQueryParam("id", extImp.getExtId()) .addQueryParam("pvid", yieldlabBid.getPvid()); @@ -515,11 +526,7 @@ private String makeNurl(BidRequest bidRequest, ExtImpYieldlab extImp, YieldlabBi .addQueryParam("gdpr_consent", consent); } - return AD_SOURCE_URL.formatted( - extImp.getAdslotId(), - extImp.getSupplyId(), - yieldlabBid.getAdSize(), - parameterizedUri.expand().replace("?", "")); + return parameterizedUri.expand(); } private ObjectNode resolveBidExt(YieldlabBid bid, List errors) { diff --git a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java index 5e4fad67862..d4e84bca9c3 100644 --- a/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java +++ b/src/main/java/org/prebid/server/cache/utils/CacheServiceUtil.java @@ -1,6 +1,7 @@ package org.prebid.server.cache.utils; import io.vertx.core.MultiMap; +import org.apache.commons.lang3.StringUtils; import org.prebid.server.util.HttpUtil; import java.net.MalformedURLException; @@ -42,6 +43,16 @@ private static URL toUrl(String cacheSchema, String path, String cacheQuery) throws URISyntaxException, MalformedURLException { - return new URI(cacheSchema, cacheHost, path, cacheQuery, null).toURL(); + return new URI( + cacheSchema, + cacheHost, + startsWithSlashOrNull(path) ? path : "/" + path, + cacheQuery, + null) + .toURL(); + } + + private static boolean startsWithSlashOrNull(String path) { + return path == null || StringUtils.startsWith(path, "/"); } } diff --git a/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java b/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java index 0826c777757..88b372b6446 100644 --- a/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java +++ b/src/main/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListService.java @@ -21,6 +21,7 @@ import org.prebid.server.metric.Metrics; import org.prebid.server.privacy.gdpr.vendorlist.proto.Vendor; import org.prebid.server.privacy.gdpr.vendorlist.proto.VendorList; +import org.prebid.server.util.Uri; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; @@ -55,11 +56,11 @@ public class VendorListService { private static final int TCF_VERSION = 2; private static final String JSON_SUFFIX = ".json"; - private static final String VERSION_PLACEHOLDER = "{VERSION}"; + private static final String VERSION_PLACEHOLDER = "VERSION"; private final double logSamplingRate; private final String cacheDir; - private final String endpoint; + private final Uri endpoint; private final int defaultTimeoutMs; private final long refreshMissingListPeriodMs; private final boolean deprecated; @@ -97,7 +98,7 @@ public VendorListService(double logSamplingRate, this.logSamplingRate = logSamplingRate; this.cacheDir = Objects.requireNonNull(cacheDir); - this.endpoint = Objects.requireNonNull(endpoint); + this.endpoint = Uri.of(endpoint); this.defaultTimeoutMs = defaultTimeoutMs; this.refreshMissingListPeriodMs = refreshMissingListPeriodMs; this.deprecated = deprecated; @@ -276,7 +277,7 @@ private boolean shouldFallback(int version) { * Proceeds obtaining new vendor list from HTTP resource. */ private void fetchNewVendorListFor(int version) { - final String url = endpoint.replace(VERSION_PLACEHOLDER, String.valueOf(version)); + final String url = endpoint.replaceMacro(VERSION_PLACEHOLDER, String.valueOf(version)).expand(); httpClient.get(url, defaultTimeoutMs) .map(response -> processResponse(response, version)) diff --git a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java index 7089abb6d78..e860ce1e6f6 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java @@ -52,6 +52,7 @@ BidderDeps rubiconBidderDeps(RubiconConfigurationProperties rubiconConfiguration new RubiconBidder( BIDDER_NAME, config.getEndpoint(), + config.getDefaultTkXInt(), externalUrl, config.getXapi().getUsername(), config.getXapi().getPassword(), @@ -80,6 +81,8 @@ private static class RubiconConfigurationProperties extends BidderConfigurationP @NotNull private String apexRendererUrl; + + private String defaultTkXInt; } @Data diff --git a/src/main/java/org/prebid/server/util/HttpUtil.java b/src/main/java/org/prebid/server/util/HttpUtil.java index 824f997472d..4ef7b08ba5b 100644 --- a/src/main/java/org/prebid/server/util/HttpUtil.java +++ b/src/main/java/org/prebid/server/util/HttpUtil.java @@ -7,6 +7,8 @@ import io.vertx.core.http.HttpHeaders; import io.vertx.core.http.HttpServerResponse; import io.vertx.ext.web.RoutingContext; +import io.vertx.uritemplate.UriTemplate; +import io.vertx.uritemplate.Variables; import org.apache.commons.lang3.StringUtils; import org.prebid.server.log.ConditionalLogger; import org.prebid.server.log.Logger; @@ -17,7 +19,6 @@ import java.net.URI; import java.net.URL; import java.net.URLDecoder; -import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collections; @@ -95,7 +96,7 @@ public static String validateUrl(String url) { } public static String encodeUrl(String value) { - return URLEncoder.encode(value, StandardCharsets.UTF_8); + return UrlEncoder.encode(value); } public static String decodeUrl(String value) { @@ -202,4 +203,14 @@ public static Map> toDebugHeaders(MultiMap headers) { private static boolean isSensitiveHeader(String header) { return SENSITIVE_HEADERS.stream().anyMatch(header::equalsIgnoreCase); } + + private static class UrlEncoder { + + private static final String CONTENT = "CONTENT"; + private static final UriTemplate ENCODER = UriTemplate.of("{" + CONTENT + "}"); + + public static String encode(String value) { + return ENCODER.expandToString(Variables.variables().set(CONTENT, value)); + } + } } diff --git a/src/main/java/org/prebid/server/util/QueryString.java b/src/main/java/org/prebid/server/util/QueryString.java new file mode 100644 index 00000000000..1ae0e6b3f62 --- /dev/null +++ b/src/main/java/org/prebid/server/util/QueryString.java @@ -0,0 +1,34 @@ +package org.prebid.server.util; + +import org.apache.commons.lang3.StringUtils; + +import java.util.Collection; + +public class QueryString { + + private static final Uri INTERNAL = new Uri(StringUtils.EMPTY); + + private final Uri.ParameterizedUri query; + + private QueryString() { + query = INTERNAL.parameterized(); + } + + public static QueryString create() { + return new QueryString(); + } + + public QueryString add(String key, String value) { + query.addQueryParam(key, value); + return this; + } + + public QueryString add(String key, Collection value) { + query.addQueryParam(key, value); + return this; + } + + public String expand() { + return query.expand(); + } +} diff --git a/src/main/java/org/prebid/server/util/Uri.java b/src/main/java/org/prebid/server/util/Uri.java index 7de1d7fed1b..d8e9312fb90 100644 --- a/src/main/java/org/prebid/server/util/Uri.java +++ b/src/main/java/org/prebid/server/util/Uri.java @@ -21,12 +21,12 @@ public class Uri { private final UriTemplate template; - private Uri(String uri) { - validateTemplate(Objects.requireNonNull(uri)); + Uri(String uri) { this.template = UriTemplate.of(uri + chooseMacro(uri)); } public static Uri of(String uri) throws IllegalArgumentException { + validateTemplate(Objects.requireNonNull(uri)); return new Uri(uri); } diff --git a/src/main/resources/bidder-config/audiencenetwork.yaml b/src/main/resources/bidder-config/audiencenetwork.yaml index a77b12cd6d3..ce65f8e5601 100644 --- a/src/main/resources/bidder-config/audiencenetwork.yaml +++ b/src/main/resources/bidder-config/audiencenetwork.yaml @@ -11,4 +11,4 @@ adapters: vendor-id: 0 platform-id: app-secret: - timeout-notification-url-template: https://www.facebook.com/audiencenetwork/nurl/?partner=%s&app=%s&auction=%s&ortb_loss_code=2 + timeout-notification-url-template: https://www.facebook.com/audiencenetwork/nurl/?partner={partner}&app={app}&auction={auction}&ortb_loss_code=2 diff --git a/src/test/java/org/prebid/server/analytics/reporter/liveintent/LiveintentAnalyticsReporterTest.java b/src/test/java/org/prebid/server/analytics/reporter/liveintent/LiveintentAnalyticsReporterTest.java index 1d044a60821..a4bacdb6c78 100644 --- a/src/test/java/org/prebid/server/analytics/reporter/liveintent/LiveintentAnalyticsReporterTest.java +++ b/src/test/java/org/prebid/server/analytics/reporter/liveintent/LiveintentAnalyticsReporterTest.java @@ -1,5 +1,7 @@ package org.prebid.server.analytics.reporter.liveintent; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Imp; import com.iab.openrtb.response.Bid; @@ -7,11 +9,11 @@ import com.iab.openrtb.response.SeatBid; import io.vertx.core.Future; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.junit.jupiter.api.Test; import org.mockito.junit.jupiter.MockitoExtension; import org.prebid.server.VertxTest; import org.prebid.server.analytics.model.AuctionEvent; @@ -27,16 +29,14 @@ import org.prebid.server.hooks.execution.model.Stage; import org.prebid.server.hooks.execution.model.StageExecutionOutcome; import org.prebid.server.hooks.execution.v1.analytics.ActivityImpl; -import org.prebid.server.hooks.execution.v1.analytics.TagsImpl; import org.prebid.server.hooks.execution.v1.analytics.AppliedToImpl; import org.prebid.server.hooks.execution.v1.analytics.ResultImpl; +import org.prebid.server.hooks.execution.v1.analytics.TagsImpl; import org.prebid.server.json.ObjectMapperProvider; import org.prebid.server.model.Endpoint; import org.prebid.server.util.ListUtil; import org.prebid.server.vertx.httpclient.HttpClient; import org.prebid.server.vertx.httpclient.model.HttpClientResponse; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.node.ObjectNode; import java.math.BigDecimal; import java.util.EnumMap; @@ -68,9 +68,11 @@ public class LiveintentAnalyticsReporterTest extends VertxTest { @BeforeEach public void setUp() { - - properties = LiveIntentAnalyticsProperties.builder().analyticsEndpoint("https://localhost:8080") - .partnerId("pbsj").timeoutMs(1000L).build(); + properties = LiveIntentAnalyticsProperties.builder() + .analyticsEndpoint("https://localhost:8080/{+path}") + .partnerId("pbsj") + .timeoutMs(1000L) + .build(); target = new LiveIntentAnalyticsReporter(properties, httpClient, jacksonMapper); } @@ -87,7 +89,7 @@ public void shouldProcessNotificationEvent() { // then // Verify that the HTTP client was called with the expected parameters verify(httpClient).get( - eq(properties.getAnalyticsEndpoint() + "/analytic-events/pbsj-winning-bid" + "?b=foo&bidId=123"), + eq("https://localhost:8080//analytic-events/pbsj-winning-bid?b=foo&bidId=123"), eq(properties.getTimeoutMs())); } @@ -101,8 +103,10 @@ public void shouldSendAllBidsToLiveIntent() { target.processEvent(buildEvent(true)); // then - verify(httpClient).post(eq(properties.getAnalyticsEndpoint() + "/analytic-events/pbsj-bids"), - jsonCaptor.capture(), eq(properties.getTimeoutMs())); + verify(httpClient).post( + eq("https://localhost:8080//analytic-events/pbsj-bids"), + jsonCaptor.capture(), + eq(properties.getTimeoutMs())); final String capturedJson = jsonCaptor.getValue(); final List pbsjBids = jacksonMapper.decodeValue(capturedJson, PBJS_COLLECTION_TYPE); @@ -121,8 +125,10 @@ public void shouldSendAllBidsToLiveIntentNotEnriched() { target.processEvent(buildEvent(false)); // then - verify(httpClient).post(eq(properties.getAnalyticsEndpoint() + "/analytic-events/pbsj-bids"), - jsonCaptor.capture(), eq(properties.getTimeoutMs())); + verify(httpClient).post( + eq("https://localhost:8080//analytic-events/pbsj-bids"), + jsonCaptor.capture(), + eq(properties.getTimeoutMs())); final String capturedJson = jsonCaptor.getValue(); final List pbsjBids = jacksonMapper.decodeValue(capturedJson, PBJS_COLLECTION_TYPE); @@ -141,8 +147,10 @@ public void shouldSendAllBidsToLiveIntentNoTreatmentRate() { target.processEvent(buildEvent(false, false)); // then - verify(httpClient).post(eq(properties.getAnalyticsEndpoint() + "/analytic-events/pbsj-bids"), - jsonCaptor.capture(), eq(properties.getTimeoutMs())); + verify(httpClient).post( + eq("https://localhost:8080//analytic-events/pbsj-bids"), + jsonCaptor.capture(), + eq(properties.getTimeoutMs())); final String capturedJson = jsonCaptor.getValue(); final List pbsjBids = jacksonMapper.decodeValue(capturedJson, PBJS_COLLECTION_TYPE); @@ -183,15 +191,25 @@ private AuctionEvent buildEvent(Boolean isEnriched, Boolean withTags) { final EnumMap> stageOutcomes = new EnumMap<>(Stage.class); stageOutcomes.put(Stage.processed_auction_request, List.of(stageExecutionOutcome)); - return AuctionEvent.builder().auctionContext(AuctionContext.builder() - .bidRequest(BidRequest.builder().id("request-id") - .imp(List.of(Imp.builder().id("imp-id").tagid("ad-unit-id").build())).build()) - .bidResponse(BidResponse.builder().bidid("bid-id").cur("USD") - .seatbid(List.of(SeatBid.builder() - .bid(List.of(Bid.builder().id("bid-id").impid("imp-id").price(BigDecimal.ONE).build())) - .build())) + return AuctionEvent.builder() + .auctionContext(AuctionContext.builder() + .bidRequest(BidRequest.builder() + .id("request-id") + .imp(List.of(Imp.builder().id("imp-id").tagid("ad-unit-id").build())) + .build()) + .bidResponse(BidResponse.builder() + .bidid("bid-id") + .cur("USD") + .seatbid(List.of(SeatBid.builder() + .bid(List.of(Bid.builder() + .id("bid-id") + .impid("imp-id") + .price(BigDecimal.ONE) + .build())) + .build())) + .build()) + .hookExecutionContext(HookExecutionContext.of(Endpoint.openrtb2_auction, stageOutcomes)) .build()) - .hookExecutionContext(HookExecutionContext.of(Endpoint.openrtb2_auction, stageOutcomes)).build()) .build(); } } diff --git a/src/test/java/org/prebid/server/bidder/aceex/AceexBidderTest.java b/src/test/java/org/prebid/server/bidder/aceex/AceexBidderTest.java index d2e91488a4a..1920117b32e 100644 --- a/src/test/java/org/prebid/server/bidder/aceex/AceexBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/aceex/AceexBidderTest.java @@ -39,7 +39,7 @@ public class AceexBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?param={{AccountId}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?param={AccountId}"; private final AceexBidder target = new AceexBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/acuityads/AcuityadsBidderTest.java b/src/test/java/org/prebid/server/bidder/acuityads/AcuityadsBidderTest.java index 63e158d0b03..cbb9fc5c5fd 100644 --- a/src/test/java/org/prebid/server/bidder/acuityads/AcuityadsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/acuityads/AcuityadsBidderTest.java @@ -34,7 +34,7 @@ public class AcuityadsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/prebid/bid?host={{Host}}&key={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test.com/prebid/bid?host={Host}&key={AccountID}"; private final AcuityadsBidder target = new AcuityadsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/adelement/AdelementBidderTest.java b/src/test/java/org/prebid/server/bidder/adelement/AdelementBidderTest.java index 527c9f01e63..61ee34a7221 100644 --- a/src/test/java/org/prebid/server/bidder/adelement/AdelementBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adelement/AdelementBidderTest.java @@ -25,7 +25,7 @@ public class AdelementBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?param={{SupplyId}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?param={SupplyId}"; private AdelementBidder adelementBidder; diff --git a/src/test/java/org/prebid/server/bidder/adhese/AdheseBidderTest.java b/src/test/java/org/prebid/server/bidder/adhese/AdheseBidderTest.java index 065216f2723..2c82b29dc3e 100644 --- a/src/test/java/org/prebid/server/bidder/adhese/AdheseBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adhese/AdheseBidderTest.java @@ -36,7 +36,7 @@ public class AdheseBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://ads-{{AccountId}}.adhese.com/openrtb2"; + private static final String ENDPOINT_URL = "https://ads-{AccountId}.adhese.com/openrtb2"; private final AdheseBidder target = new AdheseBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/adkernel/AdkernelBidderTest.java b/src/test/java/org/prebid/server/bidder/adkernel/AdkernelBidderTest.java index 8759cc04679..f81857bff58 100644 --- a/src/test/java/org/prebid/server/bidder/adkernel/AdkernelBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adkernel/AdkernelBidderTest.java @@ -46,7 +46,7 @@ public class AdkernelBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com?zone=%s"; + private static final String ENDPOINT_URL = "https://test.com?zone={ZoneId}"; private final AdkernelBidder target = new AdkernelBidder(ENDPOINT_URL, jacksonMapper); @@ -285,7 +285,7 @@ public void makeBidsShouldReturnErrorWhenSeatBidsCountIsNotOne() throws JsonProc } @Test - public void makeBidsShouldResolveBidTypeToBannerWhenMTypeIsOne() throws JsonProcessingException { + public void makeBidsShouldResolveBidTypeToBannerWhenMTypeIsOne() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( @@ -305,7 +305,7 @@ public void makeBidsShouldResolveBidTypeToBannerWhenMTypeIsOne() throws JsonProc } @Test - public void makeBidsShouldResolveBidTypeToVideoWhenMTypeIsTwo() throws JsonProcessingException { + public void makeBidsShouldResolveBidTypeToVideoWhenMTypeIsTwo() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( @@ -325,7 +325,7 @@ public void makeBidsShouldResolveBidTypeToVideoWhenMTypeIsTwo() throws JsonProce } @Test - public void makeBidsShouldResolveBidTypeToAudioWhenMTypeIsThree() throws JsonProcessingException { + public void makeBidsShouldResolveBidTypeToAudioWhenMTypeIsThree() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( @@ -345,7 +345,7 @@ public void makeBidsShouldResolveBidTypeToAudioWhenMTypeIsThree() throws JsonPro } @Test - public void makeBidsShouldResolveBidTypeToNativeWhenMTypeIsFour() throws JsonProcessingException { + public void makeBidsShouldResolveBidTypeToNativeWhenMTypeIsFour() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( @@ -365,7 +365,7 @@ public void makeBidsShouldResolveBidTypeToNativeWhenMTypeIsFour() throws JsonPro } @Test - public void makeBidsShouldReturnErrorIfMtypeIsMissing() throws JsonProcessingException { + public void makeBidsShouldReturnErrorIfMtypeIsMissing() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( @@ -384,7 +384,7 @@ public void makeBidsShouldReturnErrorIfMtypeIsMissing() throws JsonProcessingExc } @Test - public void makeBidsShouldReturnErrorIfMtypeIsNotValid() throws JsonProcessingException { + public void makeBidsShouldReturnErrorIfMtypeIsNotValid() { // given final BidderCall httpCall = givenHttpCall( givenBidRequest( diff --git a/src/test/java/org/prebid/server/bidder/adkerneladn/AdkernelAdnBidderTest.java b/src/test/java/org/prebid/server/bidder/adkerneladn/AdkernelAdnBidderTest.java index 738254c07a4..b5961567522 100644 --- a/src/test/java/org/prebid/server/bidder/adkerneladn/AdkernelAdnBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adkerneladn/AdkernelAdnBidderTest.java @@ -43,7 +43,7 @@ public class AdkernelAdnBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/test?account={{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test.com/test?account={PublisherID}"; private final AdkernelAdnBidder target = new AdkernelAdnBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java b/src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java index 87922f6e7ca..cab9ee32d4b 100644 --- a/src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java @@ -43,7 +43,7 @@ public class AdmaticBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{Host}}/prebid/bid"; + private static final String ENDPOINT_URL = "https://host.comt/prebid/bid?host={Host}"; private final AdmaticBidder target = new AdmaticBidder(ENDPOINT_URL, jacksonMapper); @@ -163,7 +163,7 @@ public void makeHttpRequestsShouldUseCorrectUri() { assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) .extracting(HttpRequest::getUri) - .containsExactly("https://host/prebid/bid"); + .containsExactly("https://host.comt/prebid/bid?host=host"); } @Test diff --git a/src/test/java/org/prebid/server/bidder/adot/AdotBidderTest.java b/src/test/java/org/prebid/server/bidder/adot/AdotBidderTest.java index 34e94239dd8..7b63d635418 100644 --- a/src/test/java/org/prebid/server/bidder/adot/AdotBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adot/AdotBidderTest.java @@ -37,7 +37,7 @@ public class AdotBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint{{PUBLISHER_PATH}}.com"; + private static final String ENDPOINT_URL = "https://test.endpoint.com{+PUBLISHER_PATH}"; private final AdotBidder target = new AdotBidder(ENDPOINT_URL, jacksonMapper); @@ -78,7 +78,7 @@ public void makeHttpRequestsShouldReturnCorrectUrlWhenResolvedExtImpAndPublisher assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) .extracting(HttpRequest::getUri) - .containsExactly("https://test.endpoint/publisherPath.com"); + .containsExactly("https://test.endpoint.com/publisherPath"); } @Test diff --git a/src/test/java/org/prebid/server/bidder/adtonos/AdtonosBidderTest.java b/src/test/java/org/prebid/server/bidder/adtonos/AdtonosBidderTest.java index 2d66b2f28ac..1909fda3837 100644 --- a/src/test/java/org/prebid/server/bidder/adtonos/AdtonosBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adtonos/AdtonosBidderTest.java @@ -34,7 +34,7 @@ public class AdtonosBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com?param={{PublisherId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com?param={PublisherId}"; private final AdtonosBidder target = new AdtonosBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/advangelists/AdvangelistsBidderTest.java b/src/test/java/org/prebid/server/bidder/advangelists/AdvangelistsBidderTest.java index 9556f5854a2..2a6e08cf2ee 100644 --- a/src/test/java/org/prebid/server/bidder/advangelists/AdvangelistsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/advangelists/AdvangelistsBidderTest.java @@ -42,7 +42,7 @@ public class AdvangelistsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://test/get?pubid={{PublisherID}}"; + private static final String ENDPOINT_URL = "http://test/get?pubid={PublisherID}"; private final AdvangelistsBidder target = new AdvangelistsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/adverxo/AdverxoBidderTest.java b/src/test/java/org/prebid/server/bidder/adverxo/AdverxoBidderTest.java index 986b8e9134b..efca915d481 100644 --- a/src/test/java/org/prebid/server/bidder/adverxo/AdverxoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adverxo/AdverxoBidderTest.java @@ -37,7 +37,7 @@ @ExtendWith(MockitoExtension.class) public class AdverxoBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/{{adUnitId}}/{{auth}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{adUnitId}/{auth}"; private static final String AD_UNIT_ID = "123"; private static final String AUTH = "testAuth"; @@ -70,7 +70,7 @@ public void makeHttpRequestsShouldReturnErrorIfImpExtInvalid() { // then assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().get(0).getMessage()).startsWith("Error parsing ext.imp.bidder"); + assertThat(result.getErrors().getFirst().getMessage()).startsWith("Error parsing ext.imp.bidder"); assertThat(result.getValue()).isEmpty(); } @@ -115,8 +115,8 @@ public void makeHttpRequestsShouldConvertCurrencyIfNeeded() { eq("USD") ); - final BidRequest outgoingRequest = result.getValue().get(0).getPayload(); - final Imp modifiedImp = outgoingRequest.getImp().get(0); + final BidRequest outgoingRequest = result.getValue().getFirst().getPayload(); + final Imp modifiedImp = outgoingRequest.getImp().getFirst(); assertThat(modifiedImp.getBidfloor()).isEqualTo(convertedPrice); assertThat(modifiedImp.getBidfloorcur()).isEqualTo("USD"); } @@ -150,7 +150,7 @@ public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { // then assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().get(0).getMessage()).startsWith("Failed to decode"); + assertThat(result.getErrors().getFirst().getMessage()).startsWith("Failed to decode"); } @Test @@ -237,7 +237,7 @@ public void makeBidsShouldReturnErrorWhenMTypeIsUnsupported() throws JsonProcess // then assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().get(0).getMessage()).contains("Unsupported mType 99"); + assertThat(result.getErrors().getFirst().getMessage()).contains("Unsupported mType 99"); assertThat(result.getValue()).isEmpty(); } @@ -263,7 +263,7 @@ public void makeBidsShouldReplacePriceMacroInAdmAndNurl() throws JsonProcessingE final Result> result = target.makeBids(httpCall, null); // then - final BidderBid bidderBid = result.getValue().get(0); + final BidderBid bidderBid = result.getValue().getFirst(); assertThat(bidderBid.getBid().getAdm()).isEqualTo("Price is 5.55"); } @@ -289,7 +289,7 @@ public void makeBidsShouldHandleNativeAdmParsing() throws JsonProcessingExceptio final Result> result = target.makeBids(httpCall, null); // then - assertThat(result.getValue().get(0).getBid().getAdm()).isEqualTo(adm); + assertThat(result.getValue().getFirst().getBid().getAdm()).isEqualTo(adm); } private static BidRequest givenBidRequest(UnaryOperator impCustomizer) { diff --git a/src/test/java/org/prebid/server/bidder/adview/AdviewBidderTest.java b/src/test/java/org/prebid/server/bidder/adview/AdviewBidderTest.java index 74a20d79715..e8b07c00b7e 100644 --- a/src/test/java/org/prebid/server/bidder/adview/AdviewBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/adview/AdviewBidderTest.java @@ -47,7 +47,7 @@ @ExtendWith(MockitoExtension.class) public class AdviewBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?param={{AccountId}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?param={AccountId}"; @Mock private CurrencyConversionService currencyConversionService; diff --git a/src/test/java/org/prebid/server/bidder/afront/AfrontBidderTest.java b/src/test/java/org/prebid/server/bidder/afront/AfrontBidderTest.java index 9ea4f96c36b..e4769655520 100644 --- a/src/test/java/org/prebid/server/bidder/afront/AfrontBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/afront/AfrontBidderTest.java @@ -41,7 +41,7 @@ public class AfrontBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/?aid={{AccountId}}&sid={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.com/?aid={AccountId}&sid={SourceId}"; private final AfrontBidder target = new AfrontBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/aidem/AidemBidderTest.java b/src/test/java/org/prebid/server/bidder/aidem/AidemBidderTest.java index 9a6095852ca..77336ed2b41 100644 --- a/src/test/java/org/prebid/server/bidder/aidem/AidemBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/aidem/AidemBidderTest.java @@ -32,7 +32,7 @@ public class AidemBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com?param={{PublisherId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com?param={PublisherId}"; private final AidemBidder target = new AidemBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/algorix/AlgorixBidderTest.java b/src/test/java/org/prebid/server/bidder/algorix/AlgorixBidderTest.java index ab68ca9a517..0a9d7247ebc 100644 --- a/src/test/java/org/prebid/server/bidder/algorix/AlgorixBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/algorix/AlgorixBidderTest.java @@ -42,7 +42,7 @@ */ public class AlgorixBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{HOST}}.svr-algorix.com/rtb/sa?sid={{SID}}&token={{TOKEN}}"; + private static final String ENDPOINT_URL = "https://{HOST}.svr-algorix.com/rtb/sa?sid={SID}&token={TOKEN}"; private final AlgorixBidder target = new AlgorixBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/appnexus/AppnexusBidderTest.java b/src/test/java/org/prebid/server/bidder/appnexus/AppnexusBidderTest.java index 445aa552a1b..b1d01c2fa68 100644 --- a/src/test/java/org/prebid/server/bidder/appnexus/AppnexusBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/appnexus/AppnexusBidderTest.java @@ -459,7 +459,7 @@ public void makeHttpRequestsShouldReturnExpectedUrlWithMemberId() { // then assertThat(result.getValue()) .extracting(HttpRequest::getUri) - .containsExactly("https://endpoint.com/?member_id=me+mber"); + .containsExactly("https://endpoint.com/?member_id=me%20mber"); assertThat(result.getErrors()).isEmpty(); } diff --git a/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java b/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java index bd88540709c..c61340200ce 100644 --- a/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/aso/AsoBidderTest.java @@ -40,7 +40,7 @@ public class AsoBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com?zid={{ZoneID}}"; + private static final String ENDPOINT_URL = "https://test-url.com?zid={ZoneID}"; private final AsoBidder target = new AsoBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidderTest.java b/src/test/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidderTest.java index 2a6081c7857..99b6abc5a83 100644 --- a/src/test/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/audiencenetwork/AudienceNetworkBidderTest.java @@ -46,7 +46,8 @@ public class AudienceNetworkBidderTest extends VertxTest { private static final String PLATFORM_ID = "101"; private static final String APP_SECRET = "6237"; private static final String DEFAULT_BID_CURRENCY = "USD"; - public static final String TIMEOUT_NOTIFICATION_URL_TEMPLATE = "https://url/?p=%s&a=%s&auction=%s&ortb_loss_code=2"; + public static final String TIMEOUT_NOTIFICATION_URL_TEMPLATE = + "https://url/?p={partner}&a={app}&auction={auction}&ortb_loss_code=2"; private final AudienceNetworkBidder target = new AudienceNetworkBidder( ENDPOINT_URL, diff --git a/src/test/java/org/prebid/server/bidder/axonix/AxonixBidderTest.java b/src/test/java/org/prebid/server/bidder/axonix/AxonixBidderTest.java index 910999e16a7..0493521d900 100644 --- a/src/test/java/org/prebid/server/bidder/axonix/AxonixBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/axonix/AxonixBidderTest.java @@ -36,7 +36,7 @@ public class AxonixBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com/{{SupplyId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com/{SupplyId}"; private final AxonixBidder target = new AxonixBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/bematterfull/BematterfullBidderTest.java b/src/test/java/org/prebid/server/bidder/bematterfull/BematterfullBidderTest.java index e98f1f87676..c3562cec230 100644 --- a/src/test/java/org/prebid/server/bidder/bematterfull/BematterfullBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/bematterfull/BematterfullBidderTest.java @@ -39,7 +39,7 @@ public class BematterfullBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com?host={{Host}}&pid={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test-url.com?host={Host}&pid={SourceId}"; private final BematterfullBidder target = new BematterfullBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/between/BetweenBidderTest.java b/src/test/java/org/prebid/server/bidder/between/BetweenBidderTest.java index 1af1a0847d9..62e35cecc81 100644 --- a/src/test/java/org/prebid/server/bidder/between/BetweenBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/between/BetweenBidderTest.java @@ -39,7 +39,7 @@ public class BetweenBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/test?param={{PublisherId}}"; + private static final String ENDPOINT_URL = "https://test.com/test?param={PublisherId}"; private final BetweenBidder target = new BetweenBidder(ENDPOINT_URL, jacksonMapper); @@ -131,7 +131,7 @@ public void makeHttpRequestsShouldReturnErrorIfImpExtContainEmptyOrNullPublisher @Test public void makeHttpRequestsShouldReturnErrorIfImpExtContainEmptyOrNullHostParamAndEndpointContainsHostMacro() { // given - final BetweenBidder target = new BetweenBidder("https://{{Host}}/test?param={{PublisherId}}", jacksonMapper); + final BetweenBidder target = new BetweenBidder("https://{Host}/test?param={PublisherId}", jacksonMapper); final Imp firstImp = givenImp(impBuilder -> impBuilder .id("123") .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpBetween.of("", "pubId"))))); @@ -190,7 +190,7 @@ public void makeHttpRequestsShouldCreateCorrectURL() { @Test public void makeHttpRequestsShouldReplaceHostMacroInUrlWhenPresentInConfigAndExtImpBetween() { // given - final BetweenBidder target = new BetweenBidder("https://{{Host}}/test?param={{PublisherId}}", jacksonMapper); + final BetweenBidder target = new BetweenBidder("https://{Host}/test?param={PublisherId}", jacksonMapper); final BidRequest bidRequest = givenBidRequest( impBuilder -> impBuilder .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpBetween.of("host.com", "pubId"))))); diff --git a/src/test/java/org/prebid/server/bidder/bidmachine/BidmachineBidderTest.java b/src/test/java/org/prebid/server/bidder/bidmachine/BidmachineBidderTest.java index 27f5505c5b7..67f1718d474 100644 --- a/src/test/java/org/prebid/server/bidder/bidmachine/BidmachineBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/bidmachine/BidmachineBidderTest.java @@ -37,7 +37,7 @@ public class BidmachineBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{HOST}}/{{PATH}}/{{SELLER_ID}}"; + private static final String ENDPOINT_URL = "https://{HOST}/{PATH}/{SELLER_ID}"; private final BidmachineBidder target = new BidmachineBidder(ENDPOINT_URL, jacksonMapper); @@ -143,7 +143,7 @@ public void makeHttpRequestsShouldModifyImplIfPrebidIsRequestAndBannerBattrDoesN assertThat(result.getValue()).hasSize(1) .extracting(HttpRequest::getPayload) .extracting(BidRequest::getImp) - .extracting(imps -> imps.getFirst()) + .extracting(List::getFirst) .flatExtracting(currImp -> currImp.getBanner().getBattr()) .containsExactly(1, 16); } @@ -169,7 +169,7 @@ public void makeHttpRequestsShouldModifyImplIfPrebidIsRequestAndVideoBattrDoesNo assertThat(result.getValue()).hasSize(1) .extracting(HttpRequest::getPayload) .extracting(BidRequest::getImp) - .extracting(imps -> imps.getFirst()) + .extracting(List::getFirst) .flatExtracting(currImp -> currImp.getVideo().getBattr()) .containsExactly(1, 16); } diff --git a/src/test/java/org/prebid/server/bidder/bigoad/BigoadBidderTest.java b/src/test/java/org/prebid/server/bidder/bigoad/BigoadBidderTest.java index 7daca265211..cc425aadd26 100644 --- a/src/test/java/org/prebid/server/bidder/bigoad/BigoadBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/bigoad/BigoadBidderTest.java @@ -35,7 +35,7 @@ public class BigoadBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://domain.com/path?{{SspId}}"; + private static final String ENDPOINT_URL = "https://domain.com/path?{SspId}"; private final BigoadBidder target = new BigoadBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/blasto/BlastoBidderTest.java b/src/test/java/org/prebid/server/bidder/blasto/BlastoBidderTest.java index aa19d5b55e6..502dce2f521 100644 --- a/src/test/java/org/prebid/server/bidder/blasto/BlastoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/blasto/BlastoBidderTest.java @@ -36,7 +36,7 @@ public class BlastoBidderTest extends VertxTest { - private static final String ENDPOINT = "https://test.com/uri?source={{SourceId}}&account={{AccountID}}"; + private static final String ENDPOINT = "https://test.com/uri?source={SourceId}&account={AccountID}"; private static final String DEFAULT_HOST = "host"; private static final String DEFAULT_ACCOUNT_ID = "accountId"; private static final String DEFAULT_SOURCE_ID = "sourceId"; diff --git a/src/test/java/org/prebid/server/bidder/blis/BlisBidderTest.java b/src/test/java/org/prebid/server/bidder/blis/BlisBidderTest.java index 83e5fa1224e..8b045d55e01 100644 --- a/src/test/java/org/prebid/server/bidder/blis/BlisBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/blis/BlisBidderTest.java @@ -38,7 +38,7 @@ @ExtendWith(MockitoExtension.class) public class BlisBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://endpoint.com/?spid={{SupplyId}}"; + private static final String ENDPOINT_URL = "https://endpoint.com/?spid={SupplyId}"; private final BlisBidder target = new BlisBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidderTest.java b/src/test/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidderTest.java index 511c7cb6697..0a23454897c 100644 --- a/src/test/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/boldwinrapid/BoldwinRapidBidderTest.java @@ -39,7 +39,7 @@ public class BoldwinRapidBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/?pub={{PublisherID}}&place={{PlacementID}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/?pub={PublisherID}&place={PlacementID}"; private final BoldwinRapidBidder target = new BoldwinRapidBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/brave/BraveBidderTest.java b/src/test/java/org/prebid/server/bidder/brave/BraveBidderTest.java index fea707178ec..61317686ed5 100644 --- a/src/test/java/org/prebid/server/bidder/brave/BraveBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/brave/BraveBidderTest.java @@ -34,7 +34,7 @@ public class BraveBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com?partner={{.PublisherID}}"; + private static final String ENDPOINT_URL = "https://test.com?partner={PublisherID}"; private final BraveBidder target = new BraveBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/bwx/BwxBidderTest.java b/src/test/java/org/prebid/server/bidder/bwx/BwxBidderTest.java index 395237b087c..26da652f3bd 100644 --- a/src/test/java/org/prebid/server/bidder/bwx/BwxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/bwx/BwxBidderTest.java @@ -31,7 +31,7 @@ public class BwxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/any?hs={{Host}}&src={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/any?hs={Host}&src={SourceId}"; private final BwxBidder target = new BwxBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/clydo/ClydoBidderTest.java b/src/test/java/org/prebid/server/bidder/clydo/ClydoBidderTest.java index d4fc86456f5..3e28c64924b 100644 --- a/src/test/java/org/prebid/server/bidder/clydo/ClydoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/clydo/ClydoBidderTest.java @@ -39,7 +39,7 @@ public class ClydoBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://region={{Region}}.clydo.io/partnerId={{PartnerId}}"; + private static final String ENDPOINT_URL = "http://region={Region}.clydo.io/partnerId={PartnerId}"; private final ClydoBidder target = new ClydoBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/contxtful/ContxtfulBidderTest.java b/src/test/java/org/prebid/server/bidder/contxtful/ContxtfulBidderTest.java index 1606a8b4a9f..193f695cee1 100644 --- a/src/test/java/org/prebid/server/bidder/contxtful/ContxtfulBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/contxtful/ContxtfulBidderTest.java @@ -47,7 +47,7 @@ public class ContxtfulBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/?customer={{AccountId}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/?customer={AccountId}"; private static final String BIDDER_NAME = "contxtful"; private final ContxtfulBidder target = new ContxtfulBidder(ENDPOINT_URL, jacksonMapper); @@ -150,15 +150,6 @@ public void makeHttpRequestsShouldSendCorrectSetOfImpIds() { final Result>> result = target.makeHttpRequests(bidRequest); // then - final ContxtfulCompositeRequest expectedPayload = ContxtfulCompositeRequest.builder() - .ortb2Request(bidRequest) - .bidRequests(List.of( - ContxtfulBidRequest.of(BIDDER_NAME, ContxtfulBidRequestParams.of("placement1"), "imp1"), - ContxtfulBidRequest.of(BIDDER_NAME, ContxtfulBidRequestParams.of("placement2"), "imp2"))) - .bidderRequest(ContxtfulBidderRequest.of(BIDDER_NAME)) - .config(ContxtfulConfig.of(ContxtfulConfigDetails.of("v1", "customer1"))) - .build(); - assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1).first() .extracting(HttpRequest::getImpIds) diff --git a/src/test/java/org/prebid/server/bidder/datablocks/DatablocksBidderTest.java b/src/test/java/org/prebid/server/bidder/datablocks/DatablocksBidderTest.java index 94b44f3da92..7be6a560b89 100644 --- a/src/test/java/org/prebid/server/bidder/datablocks/DatablocksBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/datablocks/DatablocksBidderTest.java @@ -32,7 +32,7 @@ public class DatablocksBidderTest extends VertxTest { - private static final String ENDPOINT_TEMPLATE = "https://host.host/{{SourceId}}"; + private static final String ENDPOINT_TEMPLATE = "https://host.host/{SourceId}"; private final DatablocksBidder target = new DatablocksBidder(ENDPOINT_TEMPLATE, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/displayio/DisplayioBidderTest.java b/src/test/java/org/prebid/server/bidder/displayio/DisplayioBidderTest.java index fe403f14fb9..31110cbebd0 100644 --- a/src/test/java/org/prebid/server/bidder/displayio/DisplayioBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/displayio/DisplayioBidderTest.java @@ -51,7 +51,7 @@ @ExtendWith(MockitoExtension.class) class DisplayioBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/{{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test-url.com/{PublisherID}"; @Mock private CurrencyConversionService currencyConversionService; diff --git a/src/test/java/org/prebid/server/bidder/driftpixel/DriftpixelBidderTest.java b/src/test/java/org/prebid/server/bidder/driftpixel/DriftpixelBidderTest.java index fd9688a3741..22783a7565a 100644 --- a/src/test/java/org/prebid/server/bidder/driftpixel/DriftpixelBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/driftpixel/DriftpixelBidderTest.java @@ -36,7 +36,7 @@ public class DriftpixelBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.host.com/prebid/bid?env={{Host}}&pid={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.host.com/prebid/bid?env={Host}&pid={SourceId}"; private final DriftpixelBidder target = new DriftpixelBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/elementaltv/ElementalTVBidderTest.java b/src/test/java/org/prebid/server/bidder/elementaltv/ElementalTVBidderTest.java index b06bf5f4fd5..60a6523ad2a 100644 --- a/src/test/java/org/prebid/server/bidder/elementaltv/ElementalTVBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/elementaltv/ElementalTVBidderTest.java @@ -37,7 +37,7 @@ public class ElementalTVBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://pbs.test.com/some/path/{{AdUnit}}"; + private static final String ENDPOINT_URL = "https://pbs.test.com/some/path/{AdUnit}"; private final ElementalTVBidder target = new ElementalTVBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/eplanning/EplanningBidderTest.java b/src/test/java/org/prebid/server/bidder/eplanning/EplanningBidderTest.java index 6db871bc6bd..fef86262c63 100644 --- a/src/test/java/org/prebid/server/bidder/eplanning/EplanningBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/eplanning/EplanningBidderTest.java @@ -48,7 +48,7 @@ public class EplanningBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://eplanning.com"; + private static final String ENDPOINT_URL = "https://eplanning.com/{ClientId}/{DfpClientId}/{RequestTarget}/{Sec}"; private final EplanningBidder target = new EplanningBidder(ENDPOINT_URL, jacksonMapper); @@ -108,26 +108,6 @@ public void makeHttpRequestsShouldReturnErrorIfImpExtClientIdIsBlank() { assertThat(result.getValue()).isEmpty(); } - @Test - public void makeHttpRequestsShouldReturnErrorIfEndpointUrlComposingFails() { - // given - final BidRequest bidRequest = givenBidRequest( - requestBuilder -> requestBuilder - .site(Site.builder().domain("invalid domain").build()), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).hasSize(1) - .allSatisfy(error -> { - assertThat(error.getMessage()) - .startsWith("Invalid url: https://eplanning.com/clientId/1/invalid domain/ROS"); - assertThat(error.getType()).isEqualTo(BidderError.Type.bad_input); - }); - } - @Test public void makeHttpRequestsShouldSendSingleGetRequestWithNullBody() { // given @@ -415,7 +395,7 @@ public void makeHttpRequestsShouldSetCorrectUriWithApp() { assertThat(result.getValue()) .extracting(HttpRequest::getUri) .containsExactly("https://eplanning.com/clientId/1/FILE/ROS?r=pbs&ncb=1&e=testadun_itco_de%3A1x1&" - + "appn=appName&appid=id&ifa=ifa&app=1"); + + "appn=appName&appid=id&app=1&ifa=ifa"); } @Test @@ -432,7 +412,7 @@ public void makeHttpRequestsShouldNotAppendSchainIfSourceIsNull() { // then assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).doesNotContain("sch="); } @@ -449,7 +429,7 @@ public void makeHttpRequestsShouldNotAppendSchainIfExtIsNull() { // then assertThat(result.getErrors()).isEmpty(); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).doesNotContain("sch="); } @@ -469,7 +449,7 @@ public void makeHttpRequestsShouldNotAppendSchainIfSchainIsNull() { // then assertThat(result.getErrors()).isEmpty(); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).doesNotContain("sch="); } @@ -490,7 +470,7 @@ public void makeHttpRequestsShouldNotAppendSchainIfNoNodes() { // then assertThat(result.getErrors()).isEmpty(); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).doesNotContain("sch="); } @@ -517,7 +497,7 @@ public void makeHttpRequestsShouldNotAppendSchainIfNodeCountIsGreaterThan2() { // then assertThat(result.getErrors()).isEmpty(); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).doesNotContain("sch="); } @@ -543,7 +523,7 @@ public void makeHttpRequestsShouldAppendSchainForUpToTwoNodes() { // then assertThat(result.getErrors()).isEmpty(); - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri) .contains("sch=") .contains("%21asi1%2Csid1%2C1%2Crid1%2Cname1%2Cdomain1%2C") @@ -577,7 +557,7 @@ public void makeHttpRequestsShouldUrlEncodeSchainFieldsCorrectly() { final Result>> result = target.makeHttpRequests(bidRequest); // then - final String uri = result.getValue().get(0).getUri(); + final String uri = result.getValue().getFirst().getUri(); assertThat(uri).contains("&sch="); assertThat(uri).contains("1.0%2C0"); diff --git a/src/test/java/org/prebid/server/bidder/escalax/EscalaxBidderTest.java b/src/test/java/org/prebid/server/bidder/escalax/EscalaxBidderTest.java index 34a74ff904a..03cf68cf586 100644 --- a/src/test/java/org/prebid/server/bidder/escalax/EscalaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/escalax/EscalaxBidderTest.java @@ -40,7 +40,7 @@ public class EscalaxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com?k={{AccountID}}&name={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?k={AccountID}&name={SourceId}"; private final EscalaxBidder target = new EscalaxBidder(ENDPOINT_URL, jacksonMapper); @@ -64,7 +64,7 @@ public void makeHttpRequestsShouldRemoveOnlyFirstImpExt() { assertThat(result.getValue()) .extracting(HttpRequest::getPayload) .extracting(BidRequest::getImp) - .extracting(imps -> imps.getFirst()) + .extracting(List::getFirst) .extracting(Imp::getExt) .containsOnlyNulls(); diff --git a/src/test/java/org/prebid/server/bidder/flatads/FlatadsBidderTest.java b/src/test/java/org/prebid/server/bidder/flatads/FlatadsBidderTest.java index d8e9e6fe27e..0e6886d3ac1 100644 --- a/src/test/java/org/prebid/server/bidder/flatads/FlatadsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/flatads/FlatadsBidderTest.java @@ -43,7 +43,7 @@ public class FlatadsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://endpoint.com/?publisher={{PublisherID}}&token={{TokenID}}"; + private static final String ENDPOINT_URL = "https://endpoint.com/?publisher={PublisherID}&token={TokenID}"; private final FlatadsBidder target = new FlatadsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/flipp/FlippBidderTest.java b/src/test/java/org/prebid/server/bidder/flipp/FlippBidderTest.java index 74bf3474a59..527ea6662ec 100644 --- a/src/test/java/org/prebid/server/bidder/flipp/FlippBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/flipp/FlippBidderTest.java @@ -355,7 +355,7 @@ public void makeHttpRequestsShouldSetContentCodeFromSitePageWhenValidUrlContainF final BidRequest bidRequest = givenBidRequest( bidRequestBuilder -> bidRequestBuilder .site(Site.builder() - .page("http://www.example.com/test?flipp-content-code=value-test&any=any-value") + .page("http://www.example.com/test?flipp-content-code=value%20test&any=any-value") .build()), impBuilder -> impBuilder .banner(Banner.builder().format(null).build()) @@ -375,7 +375,7 @@ public void makeHttpRequestsShouldSetContentCodeFromSitePageWhenValidUrlContainF .flatExtracting(CampaignRequestBody::getPlacements) .extracting(Placement::getProperties) .extracting(Properties::getContentCode) - .containsExactly("value-test"); + .containsExactly("value test"); } @Test @@ -925,10 +925,6 @@ public void makeBidsShouldPopulateBidDefaultStandardHeightWhenInlineCustomDataIs final BidRequest bidRequest = givenBidRequest(givenImp(identity(), extImp -> extImp .options(ExtImpFlippOptions.of(false, null, null)))); - final ObjectNode customData = mapper.createObjectNode() - .put("compactHeight", 20) - .put("standardHeight", 30); - final BidderCall httpCall = givenHttpCall(CampaignRequestBody.builder().build(), mapper.writeValueAsString(givenCampaignResponseBody(inlineBuilder -> inlineBuilder .contents(singletonList(Content.of( diff --git a/src/test/java/org/prebid/server/bidder/gothamads/GothamAdsBidderTest.java b/src/test/java/org/prebid/server/bidder/gothamads/GothamAdsBidderTest.java index 41c38db12ad..79faa42104f 100644 --- a/src/test/java/org/prebid/server/bidder/gothamads/GothamAdsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/gothamads/GothamAdsBidderTest.java @@ -46,7 +46,7 @@ public class GothamAdsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?pass={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?pass={AccountID}"; private final GothamAdsBidder target = new GothamAdsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java b/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java index f37303c6d98..f5906474d77 100644 --- a/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/gumgum/GumgumBidderTest.java @@ -26,7 +26,6 @@ import org.prebid.server.proto.openrtb.ext.request.gumgum.ExtImpGumgumBanner; import org.prebid.server.proto.openrtb.ext.request.gumgum.ExtImpGumgumVideo; -import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Collections; @@ -39,10 +38,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.assertj.core.api.Assertions.tuple; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; import static org.prebid.server.proto.openrtb.ext.response.BidType.video; @@ -91,7 +86,7 @@ public void makeHttpRequestsShouldModifyImpressionsWhenValidInput() { } @Test - public void testMakeHttpRequestsShouldNotSetTagIdFromZoneWhenAdUnitIdIsMissing() throws IOException { + public void makeHttpRequestsShouldNotSetTagIdFromZoneWhenAdUnitIdIsMissing() { // given final ObjectNode extImp = mapper.valueToTree(ExtPrebid.of(null, ExtImpGumgum.of("zone123", BigInteger.TEN, "productA", null, "zone123"))); @@ -112,18 +107,12 @@ public void testMakeHttpRequestsShouldNotSetTagIdFromZoneWhenAdUnitIdIsMissing() final Result>> result = target.makeHttpRequests(bidRequest); // then - assertNotNull(result); - assertFalse(result.getValue().isEmpty()); - - final byte[] requestBody = result.getValue().getFirst().getBody(); - final BidRequest modifiedRequest = mapper.readValue(requestBody, BidRequest.class); - - assertFalse(modifiedRequest.getImp().isEmpty()); - - final Imp modifiedImp = modifiedRequest.getImp().getFirst(); - - assertNull(modifiedImp.getTagid()); - assertEquals("test-site", modifiedRequest.getSite().getId(), "zone123"); + assertThat(result.getValue()) + .extracting(HttpRequest::getPayload) + .allSatisfy(request -> assertThat(request.getSite().getId()).isEqualTo("zone123")) + .flatExtracting(BidRequest::getImp) + .extracting(Imp::getTagid) + .containsOnlyNulls(); } @Test diff --git a/src/test/java/org/prebid/server/bidder/imds/ImdsBidderTest.java b/src/test/java/org/prebid/server/bidder/imds/ImdsBidderTest.java index 3265fc94bec..359fdb01926 100644 --- a/src/test/java/org/prebid/server/bidder/imds/ImdsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/imds/ImdsBidderTest.java @@ -39,7 +39,7 @@ @ExtendWith(MockitoExtension.class) public class ImdsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://pbs.endpoint.com/{{AccountID}}?src={{SourceId}}&adapter=imds"; + private static final String ENDPOINT_URL = "https://pbs.endpoint.com/{AccountID}?src={SourceId}&adapter=imds"; private static final String PREBID_VERSION = "pbs-java/0.1.2"; private final ImdsBidder target = new ImdsBidder(ENDPOINT_URL, PREBID_VERSION, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidderTest.java b/src/test/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidderTest.java index 82c9ff1e659..731ceeb04ee 100644 --- a/src/test/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/improvedigital/ImprovedigitalBidderTest.java @@ -42,7 +42,7 @@ public class ImprovedigitalBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/{{PathPrefix}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{PathPrefix}"; private final ImprovedigitalBidder target = new ImprovedigitalBidder(ENDPOINT_URL, jacksonMapper); @@ -108,8 +108,7 @@ public void makeHttpRequestsShouldUseProperEndpoints() { .extracting(HttpRequest::getUri) .containsExactly( "https://test.endpoint.com/", - "https://test.endpoint.com/789/" - ); + "https://test.endpoint.com/789"); } @Test diff --git a/src/test/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidderTest.java b/src/test/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidderTest.java index cdeae275e82..b2cb9b59012 100644 --- a/src/test/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/interactiveoffers/InteractiveOffersBidderTest.java @@ -32,7 +32,7 @@ public class InteractiveOffersBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?p={PartnerId}"; private final InteractiveOffersBidder target = new InteractiveOffersBidder(ENDPOINT_URL, jacksonMapper); @@ -42,6 +42,22 @@ public void creationShouldFailOnInvalidEndpointUrl() { .isThrownBy(() -> new InteractiveOffersBidder("invalid_url", jacksonMapper)); } + @Test + public void makeHttpRequestsShouldCreateCorrectUrl() { + // given + final BidRequest bidRequest = givenBidRequest(identity()); + + // when + final Result>> result = target.makeHttpRequests(bidRequest); + + // then + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).hasSize(1); + assertThat(result.getValue()) + .extracting(HttpRequest::getUri) + .containsExactly("https://test.endpoint.com?p=35"); + } + @Test public void makeHttpRequestsShouldCreateCorrectPayload() { // given diff --git a/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java b/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java index f3d41d8d863..35905dab816 100644 --- a/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java @@ -37,7 +37,7 @@ public class IntertechBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{page_id}?imp_id={imp_id}"; private final IntertechBidder target = new IntertechBidder(ENDPOINT_URL, jacksonMapper); @@ -46,6 +46,22 @@ public void creationShouldFailOnInvalidEndpointUrl() { assertThatIllegalArgumentException().isThrownBy(() -> new IntertechBidder("invalid_url", jacksonMapper)); } + @Test + public void makeHttpRequestsShouldCreateCorrectUrl() { + // given + final BidRequest bidRequest = givenBidRequest(imp -> imp.ext(givenImpExt(123)), identity()); + + // when + final Result>> result = target.makeHttpRequests(bidRequest); + + // then + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).hasSize(1); + assertThat(result.getValue()) + .extracting(HttpRequest::getUri) + .containsExactly("https://test.endpoint.com/123456?imp_id=123"); + } + @Test public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed() { // given diff --git a/src/test/java/org/prebid/server/bidder/invibes/InvibesBidderTest.java b/src/test/java/org/prebid/server/bidder/invibes/InvibesBidderTest.java index 5ac2828716c..3e3b2c0fcb4 100644 --- a/src/test/java/org/prebid/server/bidder/invibes/InvibesBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/invibes/InvibesBidderTest.java @@ -45,7 +45,7 @@ public class InvibesBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{ZoneID}}.videostep.com/bid/"; + private static final String ENDPOINT_URL = "https://{ZoneID}.videostep.com/bid/"; private static final int BANNER_H = 12; private static final int BANNER_W = 15; private static final String PAGE_URL = "www.test.com"; diff --git a/src/test/java/org/prebid/server/bidder/iqx/IqxBidderTest.java b/src/test/java/org/prebid/server/bidder/iqx/IqxBidderTest.java index 9311f44791f..c520762cdcd 100644 --- a/src/test/java/org/prebid/server/bidder/iqx/IqxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/iqx/IqxBidderTest.java @@ -29,7 +29,7 @@ public class IqxBidderTest extends VertxTest { - private final IqxBidder target = new IqxBidder("https://test.dm/{{SourceId}}/{{Host}}", jacksonMapper); + private final IqxBidder target = new IqxBidder("https://test.dm/{SourceId}/{Host}", jacksonMapper); @Test public void creationShouldFailOnInvalidEndpointUrl() { diff --git a/src/test/java/org/prebid/server/bidder/kayzen/KayzenBidderTest.java b/src/test/java/org/prebid/server/bidder/kayzen/KayzenBidderTest.java index 526cf424c05..c3e9242b497 100644 --- a/src/test/java/org/prebid/server/bidder/kayzen/KayzenBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/kayzen/KayzenBidderTest.java @@ -34,7 +34,7 @@ public class KayzenBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://bids-{{ZoneID}}.bidder.kayzen.io/?exchange={{AccountID}}"; + private static final String ENDPOINT_URL = "https://bids-{ZoneID}.bidder.kayzen.io/?exchange={AccountID}"; private final KayzenBidder target = new KayzenBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/krushmedia/KrushmediaBidderTest.java b/src/test/java/org/prebid/server/bidder/krushmedia/KrushmediaBidderTest.java index bc17d0f50ef..5ea2d54a78a 100644 --- a/src/test/java/org/prebid/server/bidder/krushmedia/KrushmediaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/krushmedia/KrushmediaBidderTest.java @@ -34,7 +34,7 @@ public class KrushmediaBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/prebid/bid&key={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test.com/prebid/bid&key={AccountID}"; private final KrushmediaBidder target = new KrushmediaBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidderTest.java b/src/test/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidderTest.java index ea17aa28074..5ae774939b5 100644 --- a/src/test/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/lemmadigital/LemmaDigitalBidderTest.java @@ -33,7 +33,7 @@ public class LemmaDigitalBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/{{AdUnit}}/{{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{AdUnit}/{PublisherID}"; private final LemmaDigitalBidder target = new LemmaDigitalBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidderTest.java b/src/test/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidderTest.java index b9df67f62d7..5954b04efdb 100644 --- a/src/test/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/limelightdigital/LimeLightDigitalBidderTest.java @@ -48,7 +48,7 @@ @ExtendWith(MockitoExtension.class) public class LimeLightDigitalBidderTest extends VertxTest { - public static final String ENDPOINT_URL = "http://ads.test.com/{{PublisherID}}?host={{Host}}"; + public static final String ENDPOINT_URL = "http://ads.test.com/{PublisherID}?host={Host}"; @Mock private CurrencyConversionService currencyConversionService; diff --git a/src/test/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidderTest.java b/src/test/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidderTest.java index 98b8409c5f6..8ece938f148 100644 --- a/src/test/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/lmkiviads/LmKiviAdsBidderTest.java @@ -32,7 +32,7 @@ public class LmKiviAdsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/test?param={{Host}}?second={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.com/test?param={Host}?second={SourceId}"; private final LmKiviAdsBidder target = new LmKiviAdsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/lunamedia/LunamediaBidderTest.java b/src/test/java/org/prebid/server/bidder/lunamedia/LunamediaBidderTest.java index 58713cae376..a9a12806478 100644 --- a/src/test/java/org/prebid/server/bidder/lunamedia/LunamediaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/lunamedia/LunamediaBidderTest.java @@ -42,7 +42,7 @@ public class LunamediaBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://test/get?pubid="; + private static final String ENDPOINT_URL = "http://test/get?pubid={Pid}"; private final LunamediaBidder target = new LunamediaBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/madvertise/MadvertiseBidderTest.java b/src/test/java/org/prebid/server/bidder/madvertise/MadvertiseBidderTest.java index 8f71be3a9a0..87d648fe74e 100644 --- a/src/test/java/org/prebid/server/bidder/madvertise/MadvertiseBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/madvertise/MadvertiseBidderTest.java @@ -38,7 +38,7 @@ public class MadvertiseBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://mobile.mng-ads.com/bidrequest{{ZoneID}}"; + private static final String ENDPOINT_URL = "https://mobile.mng-ads.com/bidrequest{ZoneID}"; private final MadvertiseBidder target = new MadvertiseBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/marsmedia/MarsmediaBidderTest.java b/src/test/java/org/prebid/server/bidder/marsmedia/MarsmediaBidderTest.java index 6bcfca08340..c5999c77a16 100644 --- a/src/test/java/org/prebid/server/bidder/marsmedia/MarsmediaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/marsmedia/MarsmediaBidderTest.java @@ -241,7 +241,7 @@ public void makeHttpRequestsShouldSetExpectedRequestUriAndBasicHeaders() { assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) .extracting(HttpRequest::getUri) - .containsExactly("https://test.endpoint.com/test&zone=zoneId"); + .containsExactly("https://test.endpoint.com/test?zone=zoneId"); assertThat(result.getValue()) .extracting(HttpRequest::getHeaders) .flatExtracting(MultiMap::entries) diff --git a/src/test/java/org/prebid/server/bidder/mediago/MediaGoBidderTest.java b/src/test/java/org/prebid/server/bidder/mediago/MediaGoBidderTest.java index c4e627a256a..e8940574a84 100644 --- a/src/test/java/org/prebid/server/bidder/mediago/MediaGoBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/mediago/MediaGoBidderTest.java @@ -43,7 +43,7 @@ public class MediaGoBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.host.com/prebid/bid?region={{Host}}&token={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test.host.com/prebid/bid?region={Host}&token={AccountID}"; private final MediaGoBidder target = new MediaGoBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/melozen/MeloZenBidderTest.java b/src/test/java/org/prebid/server/bidder/melozen/MeloZenBidderTest.java index a62b8f0ab49..ac4c21bed18 100644 --- a/src/test/java/org/prebid/server/bidder/melozen/MeloZenBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/melozen/MeloZenBidderTest.java @@ -51,7 +51,7 @@ @ExtendWith(MockitoExtension.class) class MeloZenBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/{{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test-url.com/{PublisherID}"; @Mock private CurrencyConversionService currencyConversionService; diff --git a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java index 942e17400b1..f197df11484 100644 --- a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java @@ -45,7 +45,7 @@ @ExtendWith(MockitoExtension.class) public class MetaxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com?sid={{publisherId}}&adunit={{adUnit}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?sid={publisherId}&adunit={adUnit}"; private MetaxBidder target; diff --git a/src/test/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidderTest.java b/src/test/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidderTest.java index a9df3c14105..a3f7dccab65 100644 --- a/src/test/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/minutemedia/MinuteMediaBidderTest.java @@ -32,8 +32,8 @@ public class MinuteMediaBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com/exchange?publisherId={{PublisherId}}"; - private static final String TEST_ENDPOINT_URL = "https://test.com/exchange?publisherId={{PublisherId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com/exchange?publisherId={PublisherId}"; + private static final String TEST_ENDPOINT_URL = "https://test.com/exchange?publisherId={PublisherId}"; private final MinuteMediaBidder target = new MinuteMediaBidder(ENDPOINT_URL, TEST_ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/missena/MissenaBidderTest.java b/src/test/java/org/prebid/server/bidder/missena/MissenaBidderTest.java index e7a636fc4bb..b4025692372 100644 --- a/src/test/java/org/prebid/server/bidder/missena/MissenaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/missena/MissenaBidderTest.java @@ -56,7 +56,7 @@ @ExtendWith(MockitoExtension.class) class MissenaBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?t={{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?t={PublisherID}"; private static final String TEST_PBS_VERSION = "pbs-java/1.0"; @Mock(strictness = LENIENT) diff --git a/src/test/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidderTest.java b/src/test/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidderTest.java index e92c868bd17..d6c4bf3d88f 100644 --- a/src/test/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/mobfoxpb/MobfoxpbBidderTest.java @@ -35,7 +35,7 @@ public class MobfoxpbBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com?c=__route__&m=__method__&key=__key__"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?c={route}&m={method}&key={key}"; private final MobfoxpbBidder target = new MobfoxpbBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/motorik/MotorikBidderTest.java b/src/test/java/org/prebid/server/bidder/motorik/MotorikBidderTest.java index c17daa8036d..a612b93d4b3 100644 --- a/src/test/java/org/prebid/server/bidder/motorik/MotorikBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/motorik/MotorikBidderTest.java @@ -38,7 +38,7 @@ public class MotorikBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com?k={{AccountID}}&name={{SourceId}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?k={AccountID}&name={SourceId}"; private final MotorikBidder target = new MotorikBidder(ENDPOINT_URL, jacksonMapper); @@ -62,7 +62,7 @@ public void makeHttpRequestsShouldRemoveOnlyFirstImpExt() { assertThat(result.getValue()) .extracting(HttpRequest::getPayload) .extracting(BidRequest::getImp) - .extracting(imps -> imps.getFirst()) + .extracting(List::getFirst) .extracting(Imp::getExt) .containsOnlyNulls(); diff --git a/src/test/java/org/prebid/server/bidder/nobid/NobidBidderTest.java b/src/test/java/org/prebid/server/bidder/nobid/NobidBidderTest.java index 78e7acd702c..e52de2a11de 100644 --- a/src/test/java/org/prebid/server/bidder/nobid/NobidBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/nobid/NobidBidderTest.java @@ -30,7 +30,7 @@ public class NobidBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/prebid/bid&key={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test.com/prebid/bid"; private final NobidBidder target = new NobidBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/oms/OmsBidderTest.java b/src/test/java/org/prebid/server/bidder/oms/OmsBidderTest.java index f912f04c8b5..162b5e6d9d3 100644 --- a/src/test/java/org/prebid/server/bidder/oms/OmsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/oms/OmsBidderTest.java @@ -35,7 +35,7 @@ public class OmsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com?pid={{PublisherId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com?pid={PublisherId}"; private final OmsBidder target = new OmsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/onetag/OnetagBidderTest.java b/src/test/java/org/prebid/server/bidder/onetag/OnetagBidderTest.java index 73d6035303d..816bb381c6c 100644 --- a/src/test/java/org/prebid/server/bidder/onetag/OnetagBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/onetag/OnetagBidderTest.java @@ -36,7 +36,7 @@ public class OnetagBidderTest extends VertxTest { - public static final String ENDPOINT_URL = "https://test.endpoint.com/{{publisherId}}"; + public static final String ENDPOINT_URL = "https://test.endpoint.com/{publisherId}"; private final OnetagBidder target = new OnetagBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/operaads/OperaadsBidderTest.java b/src/test/java/org/prebid/server/bidder/operaads/OperaadsBidderTest.java index 4b84f88e5ea..02261aa55b3 100644 --- a/src/test/java/org/prebid/server/bidder/operaads/OperaadsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/operaads/OperaadsBidderTest.java @@ -39,7 +39,7 @@ public class OperaadsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com/{{AccountId}}/{{PublisherId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com/{AccountId}/{PublisherId}"; private final OperaadsBidder target = new OperaadsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/ownadx/OwnAdxBidderTest.java b/src/test/java/org/prebid/server/bidder/ownadx/OwnAdxBidderTest.java index ac520ff3883..6f2fc3a2e5a 100644 --- a/src/test/java/org/prebid/server/bidder/ownadx/OwnAdxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/ownadx/OwnAdxBidderTest.java @@ -35,7 +35,7 @@ public class OwnAdxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.com/test/{{SeatID}}/{{SspID}}?token={{TokenID}}"; + private static final String ENDPOINT_URL = "https://test.com/test/{SeatID}/{SspID}?token={TokenID}"; private final OwnAdxBidder target = new OwnAdxBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/rediads/RediadsBidderTest.java b/src/test/java/org/prebid/server/bidder/rediads/RediadsBidderTest.java index 4d294c78856..b9d4cda8cbf 100644 --- a/src/test/java/org/prebid/server/bidder/rediads/RediadsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/rediads/RediadsBidderTest.java @@ -35,7 +35,7 @@ public class RediadsBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://{{SUBDOMAIN}}.domain.com/path"; + private static final String ENDPOINT_URL = "http://{SUBDOMAIN}.domain.com/path"; private final RediadsBidder target = new RediadsBidder(ENDPOINT_URL, jacksonMapper, "subdomain"); diff --git a/src/test/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidderTest.java b/src/test/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidderTest.java index 3609fed3a2f..ed4c941a216 100644 --- a/src/test/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/relevantdigital/RelevantDigitalBidderTest.java @@ -56,7 +56,7 @@ public class RelevantDigitalBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://{{Host}}/pbs"; + private static final String ENDPOINT_URL = "http://{Host}/pbs"; private final RelevantDigitalBidder target = new RelevantDigitalBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/roulax/RoulaxBidderTest.java b/src/test/java/org/prebid/server/bidder/roulax/RoulaxBidderTest.java index 9d0a7a4ea69..3f6d051a4b7 100644 --- a/src/test/java/org/prebid/server/bidder/roulax/RoulaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/roulax/RoulaxBidderTest.java @@ -30,7 +30,7 @@ public class RoulaxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/{{PublisherID}}?pid={{AccountID}}"; + private static final String ENDPOINT_URL = "https://test-url.com/{PublisherID}?pid={AccountID}"; private final RoulaxBidder target = new RoulaxBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java index d85e94191a6..5444bce997b 100644 --- a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java @@ -146,7 +146,8 @@ public class RubiconBidderTest extends VertxTest { private static final String BIDDER_NAME = "bidderName"; - private static final String ENDPOINT_URL = "http://rubiconproject.com/exchange.json?tk_xint=prebid"; + private static final String ENDPOINT_URL = "http://rubiconproject.com/exchange.json"; + private static final String DEFAULT_TK_X_INT = "prebid"; private static final String EXTERNAL_URL = "http://localhost:8080"; private static final String APEX_RENDERER_URL = "https://video-outstream.rubiconproject.com/apex-2.2.1.js"; private static final String USERNAME = "username"; @@ -174,6 +175,7 @@ public void setUp() { target = new RubiconBidder( BIDDER_NAME, ENDPOINT_URL, + DEFAULT_TK_X_INT, EXTERNAL_URL, USERNAME, PASSWORD, @@ -196,6 +198,7 @@ public void creationShouldFailOnInvalidEndpointUrl() { () -> new RubiconBidder(BIDDER_NAME, "invalid_url", EXTERNAL_URL, + DEFAULT_TK_X_INT, USERNAME, PASSWORD, SUPPORTED_VENDORS, @@ -220,7 +223,7 @@ public void makeHttpRequestsShouldFillMethodAndUrlAndExpectedHeaders() { // then assertThat(result.getValue()).hasSize(1).element(0).isNotNull() .returns(HttpMethod.POST, HttpRequest::getMethod) - .returns(ENDPOINT_URL, HttpRequest::getUri); + .returns(ENDPOINT_URL + "?tk_xint=prebid", HttpRequest::getUri); assertThat(result.getValue().getFirst().getHeaders()).isNotNull() .extracting(Map.Entry::getKey, Map.Entry::getValue) .containsOnly( @@ -880,6 +883,7 @@ public void shouldNotSetSizeIfBidderParamsIsMissingSizeId() { target = new RubiconBidder( BIDDER_NAME, ENDPOINT_URL, + DEFAULT_TK_X_INT, EXTERNAL_URL, USERNAME, PASSWORD, @@ -3900,8 +3904,20 @@ public void makeBidsShouldReturnNativeBidIfNativeIsPresent() throws JsonProcessi public void makeBidsShouldReturnBidWithCurrencyFromBidResponse() throws JsonProcessingException { // given target = new RubiconBidder( - BIDDER_NAME, ENDPOINT_URL, EXTERNAL_URL, USERNAME, PASSWORD, SUPPORTED_VENDORS, true, APEX_RENDERER_URL, - currencyConversionService, priceFloorResolver, versionProvider, idGenerator, jacksonMapper); + BIDDER_NAME, + ENDPOINT_URL, + DEFAULT_TK_X_INT, + EXTERNAL_URL, + USERNAME, + PASSWORD, + SUPPORTED_VENDORS, + true, + APEX_RENDERER_URL, + currencyConversionService, + priceFloorResolver, + versionProvider, + idGenerator, + jacksonMapper); final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), mapper.writeValueAsString(RubiconBidResponse.builder() diff --git a/src/test/java/org/prebid/server/bidder/screencore/ScreencoreBidderTest.java b/src/test/java/org/prebid/server/bidder/screencore/ScreencoreBidderTest.java index c9b5c81efae..a4528e6ec78 100644 --- a/src/test/java/org/prebid/server/bidder/screencore/ScreencoreBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/screencore/ScreencoreBidderTest.java @@ -42,7 +42,7 @@ public class ScreencoreBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://h1.screencore.io/?kp={{AccountId}}&kn={{SourceId}}"; + private static final String ENDPOINT_URL = "http://h1.screencore.io/?kp={AccountId}&kn={SourceId}"; private final ScreencoreBidder target = new ScreencoreBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidderTest.java b/src/test/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidderTest.java index 4ac9e11720f..7ea9ad2a9d2 100644 --- a/src/test/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/seedingAlliance/SeedingAllianceBidderTest.java @@ -34,7 +34,7 @@ public class SeedingAllianceBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com/{{AccountId}}"; + private static final String ENDPOINT_URL = "https://randomurl.com/{AccountId}"; private final SeedingAllianceBidder target = new SeedingAllianceBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/silvermob/SilvermobBidderTest.java b/src/test/java/org/prebid/server/bidder/silvermob/SilvermobBidderTest.java index 091836d9f7d..d60648591b3 100644 --- a/src/test/java/org/prebid/server/bidder/silvermob/SilvermobBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/silvermob/SilvermobBidderTest.java @@ -39,7 +39,7 @@ public class SilvermobBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "http://{{Host}}.test/some/path/{{ZoneID}}"; + private static final String ENDPOINT_URL = "http://{Host}.test/some/path/{ZoneID}"; private final SilvermobBidder target = new SilvermobBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/smartadserver/SmartadserverBidderTest.java b/src/test/java/org/prebid/server/bidder/smartadserver/SmartadserverBidderTest.java index c9f64cd8a0c..c91a8e28ea1 100644 --- a/src/test/java/org/prebid/server/bidder/smartadserver/SmartadserverBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smartadserver/SmartadserverBidderTest.java @@ -37,8 +37,8 @@ public class SmartadserverBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/path?testParam=testVal"; - private static final String SECONDARY_URL = "https://test.endpoint2.com/path?testParam=testVal"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/path/api/bid?testParam=testVal"; + private static final String SECONDARY_URL = "https://test.endpoint2.com/path/ortb?testParam=testVal"; private final SmartadserverBidder target = new SmartadserverBidder(ENDPOINT_URL, SECONDARY_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/smarthub/SmarthubBidderTest.java b/src/test/java/org/prebid/server/bidder/smarthub/SmarthubBidderTest.java index c9defbbd2e8..c2631aebda7 100644 --- a/src/test/java/org/prebid/server/bidder/smarthub/SmarthubBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smarthub/SmarthubBidderTest.java @@ -38,7 +38,7 @@ public class SmarthubBidderTest extends VertxTest { private static final String ENDPOINT_URL = - "http://localhost/prebid_server?host={{Host}}&AccountID={{AccountID}}&SourceId={{SourceId}}"; + "http://localhost/prebid_server?host={Host}&AccountID={AccountID}&SourceId={SourceId}"; private final SmarthubBidder target = new SmarthubBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/smartrtb/SmartrtbBidderTest.java b/src/test/java/org/prebid/server/bidder/smartrtb/SmartrtbBidderTest.java index 0f9e94ce37c..9f9f8110cae 100644 --- a/src/test/java/org/prebid/server/bidder/smartrtb/SmartrtbBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smartrtb/SmartrtbBidderTest.java @@ -38,7 +38,7 @@ public class SmartrtbBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/"; + private static final String ENDPOINT_URL = "https://test.endpoint.com?pubid={PubId}"; private final SmartrtbBidder target = new SmartrtbBidder(ENDPOINT_URL, jacksonMapper); @@ -95,7 +95,7 @@ public void makeHttpRequestsShouldCreateCorrectURL() { // then assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1); - assertThat(result.getValue().getFirst().getUri()).isEqualTo(ENDPOINT_URL + "publisherID"); + assertThat(result.getValue().getFirst().getUri()).isEqualTo("https://test.endpoint.com?pubid=publisherID"); } @Test @@ -110,7 +110,7 @@ public void makeHttpRequestsShouldSetExpectedRequestUrlAndDefaultHeaders() { assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1) .extracting(HttpRequest::getUri) - .containsOnly("https://test.endpoint.com/publisherID"); + .containsOnly("https://test.endpoint.com?pubid=publisherID"); assertThat(result.getValue().getFirst().getHeaders()).isNotNull() .extracting(Map.Entry::getKey, Map.Entry::getValue) .containsOnly(tuple(HttpUtil.X_OPENRTB_VERSION_HEADER.toString(), "2.5"), diff --git a/src/test/java/org/prebid/server/bidder/smartyads/SmartyAdsBidderTest.java b/src/test/java/org/prebid/server/bidder/smartyads/SmartyAdsBidderTest.java index 05bda6c7ff5..40a221272a3 100644 --- a/src/test/java/org/prebid/server/bidder/smartyads/SmartyAdsBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smartyads/SmartyAdsBidderTest.java @@ -41,7 +41,7 @@ public class SmartyAdsBidderTest extends VertxTest { private static final String ENDPOINT_URL = - "http://{{Host}}.test.com/bid?param1={{SourceId}}¶m2={{AccountID}}"; + "http://{Host}.test.com/bid?param1={SourceId}¶m2={AccountID}"; private final SmartyAdsBidder target = new SmartyAdsBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/smilewanted/SmileWantedBidderTest.java b/src/test/java/org/prebid/server/bidder/smilewanted/SmileWantedBidderTest.java index 26085bff972..c2212c698b8 100644 --- a/src/test/java/org/prebid/server/bidder/smilewanted/SmileWantedBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smilewanted/SmileWantedBidderTest.java @@ -36,7 +36,7 @@ public class SmileWantedBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://prebid-server.smilewanted.com/java/{{ZoneId}}"; + private static final String ENDPOINT_URL = "https://prebid-server.smilewanted.com/java/{ZoneId}"; private final SmileWantedBidder target = new SmileWantedBidder(ENDPOINT_URL, jacksonMapper); @@ -85,7 +85,7 @@ public void makeHttpRequestsShouldReturnSingleRequest() { // then assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1); - final HttpRequest httpRequest = result.getValue().get(0); + final HttpRequest httpRequest = result.getValue().getFirst(); assertThat(httpRequest.getPayload()).isNotNull(); assertThat(httpRequest.getPayload().getImp()).hasSize(2); assertThat(httpRequest.getPayload().getAt()).isEqualTo(1); diff --git a/src/test/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidderTest.java b/src/test/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidderTest.java index d6dff0d824a..0453b59994c 100644 --- a/src/test/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/smrtconnect/SmrtconnectBidderTest.java @@ -33,7 +33,7 @@ public class SmrtconnectBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test-url.com/?param={{SupplyId}}"; + private static final String ENDPOINT_URL = "https://test-url.com/?param={SupplyId}"; private SmrtconnectBidder smrtconnectBidder; diff --git a/src/test/java/org/prebid/server/bidder/taboola/TaboolaBidderTest.java b/src/test/java/org/prebid/server/bidder/taboola/TaboolaBidderTest.java index a185687bb5f..c966a3fbcc1 100644 --- a/src/test/java/org/prebid/server/bidder/taboola/TaboolaBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/taboola/TaboolaBidderTest.java @@ -44,7 +44,7 @@ public class TaboolaBidderTest extends VertxTest { private final TaboolaBidder target = new TaboolaBidder( - "https://{{MediaType}}.bidder.taboola.com/OpenRTB/PS/auction/{{GvlID}}/{{PublisherID}}", + "https://{MediaType}.bidder.taboola.com/OpenRTB/PS/auction/{GvlID}/{PublisherID}", 1, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/tappx/TappxBidderTest.java b/src/test/java/org/prebid/server/bidder/tappx/TappxBidderTest.java index 5372c135896..bc558ad01cb 100644 --- a/src/test/java/org/prebid/server/bidder/tappx/TappxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/tappx/TappxBidderTest.java @@ -34,7 +34,7 @@ public class TappxBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{subdomain}}.domain"; + private static final String ENDPOINT_URL = "https://{subdomain}.domain{+path}"; private final TappxBidder target = new TappxBidder(ENDPOINT_URL, Clock.systemDefaultZone(), jacksonMapper); @@ -190,7 +190,7 @@ public void makeHttpRequestShouldBuildCorrectUriWithEndPointParameterIfMatched() // then assertThat(result.getErrors()).isEmpty(); final String expectedUri = - "https://zz855226test.pub.domain/rtb/?tappxkey=tappxkey&v=1.6&type_cnn=prebid"; + "https://zz855226test.pub.domain/rtb?tappxkey=tappxkey&v=1.6&type_cnn=prebid"; assertThat(result.getValue()).hasSize(1) .allSatisfy(httpRequest -> { assertThat(httpRequest.getUri()).isEqualTo(expectedUri); diff --git a/src/test/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidderTest.java b/src/test/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidderTest.java index 033b8236d34..46db30df08c 100644 --- a/src/test/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/thetradedesk/TheTradeDeskBidderTest.java @@ -45,7 +45,7 @@ public class TheTradeDeskBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/{{SupplyId}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{SupplyId}"; private final TheTradeDeskBidder target = new TheTradeDeskBidder(ENDPOINT_URL, jacksonMapper, "supplyid"); diff --git a/src/test/java/org/prebid/server/bidder/tradplus/TradPlusBidderTest.java b/src/test/java/org/prebid/server/bidder/tradplus/TradPlusBidderTest.java index 12384199d76..5622a661e01 100644 --- a/src/test/java/org/prebid/server/bidder/tradplus/TradPlusBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/tradplus/TradPlusBidderTest.java @@ -37,7 +37,7 @@ public class TradPlusBidderTest extends VertxTest { - private static final String ENDPOINT_TEMPLATE = "http://{{ZoneID}}/openrtb2?sid={{AccountID}}"; + private static final String ENDPOINT_TEMPLATE = "http://{ZoneID}/openrtb2?sid={AccountID}"; private final TradPlusBidder target = new TradPlusBidder(ENDPOINT_TEMPLATE, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/trafficgate/TrafficGateBidderTest.java b/src/test/java/org/prebid/server/bidder/trafficgate/TrafficGateBidderTest.java index 6ab480538b4..5d1799c7235 100644 --- a/src/test/java/org/prebid/server/bidder/trafficgate/TrafficGateBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/trafficgate/TrafficGateBidderTest.java @@ -34,7 +34,7 @@ public class TrafficGateBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{subdomain}}.domain"; + private static final String ENDPOINT_URL = "https://{subdomain}.domain"; private final TrafficGateBidder target = new TrafficGateBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/trustedstack/TrustedstackBidderTest.java b/src/test/java/org/prebid/server/bidder/trustedstack/TrustedstackBidderTest.java index babced9d304..6428f85c456 100644 --- a/src/test/java/org/prebid/server/bidder/trustedstack/TrustedstackBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/trustedstack/TrustedstackBidderTest.java @@ -31,7 +31,7 @@ public class TrustedstackBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.trustedstack.com?src={{PREBID_SERVER_ENDPOINT}}"; + private static final String ENDPOINT_URL = "https://test.trustedstack.com?src={PREBID_SERVER_ENDPOINT}"; private static final String EXTERNAL_URL = "external.prebidserver.com"; private final TrustedstackBidder target = new TrustedstackBidder(ENDPOINT_URL, EXTERNAL_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidderTest.java b/src/test/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidderTest.java index 1415d95340e..2ef589db541 100644 --- a/src/test/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/videoheroes/VideoHeroesBidderTest.java @@ -38,7 +38,7 @@ public class VideoHeroesBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/?partner={{PublisherID}}"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/?partner={PublisherID}"; private final VideoHeroesBidder target = new VideoHeroesBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/xeworks/XeworksBidderTest.java b/src/test/java/org/prebid/server/bidder/xeworks/XeworksBidderTest.java index 98fb9c0e017..cbbf51ae671 100644 --- a/src/test/java/org/prebid/server/bidder/xeworks/XeworksBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/xeworks/XeworksBidderTest.java @@ -31,7 +31,7 @@ public class XeworksBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://randomurl.com?pid={{SourceId}}&host={{Host}}"; + private static final String ENDPOINT_URL = "https://randomurl.com?pid={SourceId}&host={Host}"; private final XeworksBidder target = new XeworksBidder(ENDPOINT_URL, jacksonMapper); diff --git a/src/test/java/org/prebid/server/bidder/yandex/YandexBidderTest.java b/src/test/java/org/prebid/server/bidder/yandex/YandexBidderTest.java index 26322943187..7ddc1d7cde7 100644 --- a/src/test/java/org/prebid/server/bidder/yandex/YandexBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/yandex/YandexBidderTest.java @@ -41,7 +41,7 @@ public class YandexBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com/"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{PageId}?imp-id={ImpId}"; private final YandexBidder target = new YandexBidder(ENDPOINT_URL, jacksonMapper); @Test @@ -301,8 +301,8 @@ public void makeHttpRequestsShouldCreateCorrectURL() { // then assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).extracting(HttpRequest::getUri) - .containsExactly("https://test.endpoint.com/?" - + "target-ref=https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue&ssp-cur=EUR"); + .containsExactly("https://test.endpoint.com/134001?imp-id=1" + + "&target-ref=https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue&ssp-cur=EUR"); } @Test diff --git a/src/test/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidderTest.java b/src/test/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidderTest.java index 7e9cebc735b..61305b595e7 100644 --- a/src/test/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/yeahmobi/YeahmobiBidderTest.java @@ -37,7 +37,7 @@ public class YeahmobiBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://{{Host}}/prebid/bid"; + private static final String ENDPOINT_URL = "https://{ZoneId}.localhost/prebid/bid"; private final YeahmobiBidder target = new YeahmobiBidder(ENDPOINT_URL, jacksonMapper); @@ -99,7 +99,7 @@ public void makeHttpRequestsShouldCreateCorrectURL() { assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) .extracting(HttpRequest::getUri) - .containsExactly("https://gw-zoneId-bid.yeahtargeter.com/prebid/bid"); + .containsExactly("https://zoneId.localhost/prebid/bid"); } @Test diff --git a/src/test/java/org/prebid/server/bidder/yieldlab/YieldlabBidderTest.java b/src/test/java/org/prebid/server/bidder/yieldlab/YieldlabBidderTest.java index c33b0c9835b..b09631ea8ae 100644 --- a/src/test/java/org/prebid/server/bidder/yieldlab/YieldlabBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/yieldlab/YieldlabBidderTest.java @@ -55,7 +55,7 @@ public class YieldlabBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://test.endpoint.com"; + private static final String ENDPOINT_URL = "https://test.endpoint.com/{AdSlotId}"; private Clock clock; @@ -74,29 +74,6 @@ public void creationShouldFailOnInvalidEndpointUrl() { .withMessage("URL supplied is not valid: invalid_url"); } - @Test - public void makeHttpRequestsShouldReturnErrorIfEndpointUrlComposingFails() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpYieldlab.builder() - .adslotId("invalid path") - .build()))) - .build())) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).hasSize(1) - .allSatisfy(error -> { - assertThat(error.getMessage()).startsWith("Invalid url: https://test.endpoint.com/invalid path"); - assertThat(error.getType()).isEqualTo(BidderError.Type.bad_input); - }); - } - @Test public void makeHttpRequestsShouldSendRequestToModifiedUrlWithHeaders() { // given @@ -118,43 +95,41 @@ public void makeHttpRequestsShouldSendRequestToModifiedUrlWithHeaders() { .extId("extId") .build()))) .build())) - .device(Device.builder().ip("ip").ua("Agent").language("fr").devicetype(1).build()) + .device(Device.builder().ip("ip").ifa("ifa").ua("Agent").language("fr").devicetype(1).build()) .regs(Regs.builder().coppa(1).ext(ExtRegs.of(1, "usPrivacy", null, null)).build()) .user(User.builder().buyeruid("buyeruid").ext(ExtUser.builder().consent("consent").build()).build()) .site(Site.builder().page("http://www.example.com").build()) - .source(Source.builder().ext(ExtSource.of(SupplyChain.of(1, List.of( - SupplyChainNode.of( - "exchange1.com", - "1234!abcd", - "bid request&%1", - "publisher", - "publisher.com", + .source(Source.builder() + .ext(ExtSource.of(SupplyChain.of( 1, - mapper.createObjectNode() - .put("freeFormData", 1) - .set("nested", mapper.createObjectNode().put("isTrue", true))) - ), "1.0", null))).build()) + List.of(SupplyChainNode.of( + "exchange1.com", + "1234!abcd", + "bid request&%1", + "publisher", + "publisher.com", + 1, + mapper.createObjectNode() + .put("freeFormData", 1) + .set("nested", mapper.createObjectNode().put("isTrue", true)))), + "1.0", + null))) + .build()) .build(); // when final Result>> result = target.makeHttpRequests(bidRequest); // then - final long expectedTime = clock.instant().getEpochSecond(); - assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1) .extracting(HttpRequest::getUri) - .allSatisfy(uri -> { - assertThat(uri).startsWith("https://test.endpoint.com/1?content=json&pvid=true&ts="); - assertThat(uri).endsWith("&t=key1%3Dvalue1%26key2%3Dvalue2&sizes=1%3A1x1%7C2x2&" - + "ids=ylid%3Abuyeruid&yl_rtb_ifa&yl_rtb_devicetype=1&gdpr=1&gdpr_consent=consent&" - + "schain=1.0%2C1%21exchange1.com%2C1234%2521abcd%2C1%2Cbid%2Brequest%2526%25251%2C" - + "publisher%2Cpublisher.com%2C%257B%2522freeFormData%2522%253A1%252C%2522" - + "nested%2522%253A%257B%2522isTrue%2522%253Atrue%257D%257D"); - final String ts = uri.substring(54, uri.indexOf("&t=")); - assertThat(Long.parseLong(ts)).isEqualTo(expectedTime); - }); + .containsExactly("https://test.endpoint.com/1?content=json&pvid=true&ts=1564135200" + + "&t=key1%3Dvalue1%26key2%3Dvalue2&sizes=1%3A1x1%7C2x2&ids=ylid%3Abuyeruid&yl_rtb_ifa=ifa" + + "&yl_rtb_devicetype=1&gdpr=1&gdpr_consent=consent" + + "&schain=1.0%2C1%21exchange1.com%2C1234%2521abcd%2C1%2Cbid%2520request" + + "%2526%25251%2Cpublisher%2Cpublisher.com%2C%257B%2522freeFormData%2522%253A1%252C%2522" + + "nested%2522%253A%257B%2522isTrue%2522%253Atrue%257D%257D"); assertThat(result.getValue()).hasSize(1) .flatExtracting(r -> r.getHeaders().entries()) @@ -211,11 +186,9 @@ public void constructExtImpShouldWorkWithDuplicateKeysTargeting() { assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).hasSize(1) .extracting(HttpRequest::getUri) - .allSatisfy(uri -> { - assertThat(uri).startsWith("https://test.endpoint.com/1,2?content=json&pvid=true&ts="); - assertThat(uri).endsWith("&t=key1%3Dvalue1&sizes=1%3A%2C2%3A&ids=ylid%3Abuyeruid&yl_rtb_ifa&" - + "yl_rtb_devicetype=1&gdpr=1&gdpr_consent=consent"); - }); + .containsExactly("https://test.endpoint.com/1%2C2?content=json&pvid=true&ts=1564135200" + + "&t=key1%3Dvalue1&sizes=1%3A%2C2%3A&ids=ylid%3Abuyeruid&yl_rtb_devicetype=1" + + "&gdpr=1&gdpr_consent=consent"); } @Test @@ -336,15 +309,15 @@ public void makeHttpRequestsShouldAddDsaRequestParamsToRequestWhenDsaIsPresent() 1, 2, 3, List.of(DsaTransparency.of("testDomain", List.of(1, 2, 3))) ); final Regs regs = Regs.builder() - .ext(ExtRegs.of(null, null, null, dsa)) - .build(); + .ext(ExtRegs.of(null, null, null, dsa)) + .build(); final BidRequest bidRequest = BidRequest.builder() .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpYieldlab.builder() - .adslotId("123") - .build()))) - .build())) + .ext(mapper.valueToTree(ExtPrebid.of(null, + ExtImpYieldlab.builder() + .adslotId("123") + .build()))) + .build())) .regs(regs) .build(); @@ -356,7 +329,7 @@ public void makeHttpRequestsShouldAddDsaRequestParamsToRequestWhenDsaIsPresent() "&dsarequired=1", "&dsapubrender=2", "&dsadatatopub=3", - "&dsatransparency=testDomain%7E1_2_3" + "&dsatransparency=testDomain~1_2_3" ); assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue().getFirst().getUri()) @@ -368,8 +341,8 @@ public void makeHttpRequestsEncodesDsaTransparencyCorrectlyWhenBidRequestContain //given final ExtRegsDsa dsa = ExtRegsDsa.of( 1, 2, 3, List.of( - DsaTransparency.of("testDomain", List.of(1, 2, 3)), - DsaTransparency.of("testDomain2", List.of(4, 5, 6)) + DsaTransparency.of("testDomain", List.of(1, 2, 3)), + DsaTransparency.of("testDomain2", List.of(4, 5, 6)) ) ); final Regs regs = Regs.builder() @@ -377,11 +350,8 @@ public void makeHttpRequestsEncodesDsaTransparencyCorrectlyWhenBidRequestContain .build(); final BidRequest bidRequest = BidRequest.builder() .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpYieldlab.builder() - .adslotId("123") - .build()))) - .build())) + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpYieldlab.builder().adslotId("123").build()))) + .build())) .regs(regs) .build(); @@ -393,8 +363,7 @@ public void makeHttpRequestsEncodesDsaTransparencyCorrectlyWhenBidRequestContain "&dsarequired=1", "&dsapubrender=2", "&dsadatatopub=3", - "&dsatransparency=testDomain%7E1_2_3%7E%7EtestDomain2%7E4_5_6" - ); + "&dsatransparency=testDomain~1_2_3~~testDomain2~4_5_6"); assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue().getFirst().getUri()) .contains(expectations); @@ -411,11 +380,8 @@ public void makeHttpRequestsShouldNotSendDsaInfoInBidRequestWhenDsaIsMissing() { .build(); final BidRequest bidRequest = BidRequest.builder() .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpYieldlab.builder() - .adslotId("123") - .build()))) - .build())) + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpYieldlab.builder().adslotId("123").build()))) + .build())) .regs(regs) .build(); @@ -443,11 +409,8 @@ public void makeHttpRequestsShouldNotAddDsaTransparencyParamsToBidRequestWhenPar .build(); final BidRequest bidRequest = BidRequest.builder() .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpYieldlab.builder() - .adslotId("123") - .build()))) - .build())) + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpYieldlab.builder().adslotId("123").build()))) + .build())) .regs(regs) .build(); @@ -469,15 +432,15 @@ public void makeBidsShouldAddDsaParamsWhenDsaIsPresentInResponse() throws JsonPr // given final BidRequest bidRequest = BidRequest.builder() .imp(singletonList(Imp.builder() - .id("test-imp-id") - .banner(Banner.builder().w(1).h(1).build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpYieldlab.builder() - .adslotId("1") - .supplyId("2") - .targeting(singletonMap("key", "value")) - .extId("extId") - .build()))) - .build())) + .id("test-imp-id") + .banner(Banner.builder().w(1).h(1).build()) + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpYieldlab.builder() + .adslotId("1") + .supplyId("2") + .targeting(singletonMap("key", "value")) + .extId("extId") + .build()))) + .build())) .build(); final ExtBidDsa dsaResponse = ExtBidDsa.builder() diff --git a/src/test/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidderTest.java b/src/test/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidderTest.java index fc39016e61f..04de0a0a1e0 100644 --- a/src/test/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/zeroclickfraud/ZeroclickfraudBidderTest.java @@ -32,7 +32,7 @@ public class ZeroclickfraudBidderTest extends VertxTest { - private static final String ENDPOINT_TEMPLATE = "http://{{Host}}/openrtb2?sid={{SourceId}}"; + private static final String ENDPOINT_TEMPLATE = "http://{Host}/openrtb2?sid={SourceId}"; private final ZeroclickfraudBidder target = new ZeroclickfraudBidder(ENDPOINT_TEMPLATE, jacksonMapper); diff --git a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java index d37fff76d46..299d4567c16 100644 --- a/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java +++ b/src/test/java/org/prebid/server/cache/CoreCacheServiceTest.java @@ -1259,7 +1259,14 @@ public void cachePutObjectsShouldCallInternalCacheEndpointWhenProvided() throws .willReturn(new TextNode("modifiedVast")); // when - target.cachePutObjects(singletonList(firstBidPutObject), true, singleton("bidder1"), "account", 100, "pbjs", timeout); + target.cachePutObjects( + singletonList(firstBidPutObject), + true, + singleton("bidder1"), + "account", + 100, + "pbjs", + timeout); // then verify(httpClient).post(eq("http://cache-service-internal/cache"), any(), any(), anyLong()); diff --git a/src/test/java/org/prebid/server/it/IntertechTest.java b/src/test/java/org/prebid/server/it/IntertechTest.java index a041b428911..b12bb0bf9ce 100644 --- a/src/test/java/org/prebid/server/it/IntertechTest.java +++ b/src/test/java/org/prebid/server/it/IntertechTest.java @@ -19,7 +19,7 @@ public class IntertechTest extends IntegrationTest { public void openrtb2AuctionShouldRespondWithBidsFromIntertech() throws IOException, JSONException { // given WIRE_MOCK_RULE.stubFor(post( - urlPathEqualTo("/intertech-exchange&target-ref=http%3A%2F%2Fwww.example.com&ssp-cur=USD")) + urlPathEqualTo("/intertech-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/intertech/test-intertech-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/intertech/test-intertech-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/SmartrtbTest.java b/src/test/java/org/prebid/server/it/SmartrtbTest.java index 091e2b8026a..bfb2a562f14 100644 --- a/src/test/java/org/prebid/server/it/SmartrtbTest.java +++ b/src/test/java/org/prebid/server/it/SmartrtbTest.java @@ -18,7 +18,7 @@ public class SmartrtbTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromSmartrtb() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartrtb-exchange/1234")) + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/smartrtb-exchange")) .withRequestBody(equalToJson(jsonFrom("openrtb2/smartrtb/test-smartrtb-bid-request.json"))) .willReturn(aResponse().withBody(jsonFrom("openrtb2/smartrtb/test-smartrtb-bid-response.json")))); diff --git a/src/test/java/org/prebid/server/it/YieldlabTest.java b/src/test/java/org/prebid/server/it/YieldlabTest.java index 1d7dc249fa4..383a0d7fd5d 100644 --- a/src/test/java/org/prebid/server/it/YieldlabTest.java +++ b/src/test/java/org/prebid/server/it/YieldlabTest.java @@ -20,7 +20,7 @@ public class YieldlabTest extends IntegrationTest { @Test public void openrtb2AuctionShouldRespondWithBidsFromYieldlab() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo("/yieldlab-exchange/12345")) + WIRE_MOCK_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo("/yieldlab-exchange")) .willReturn(aResponse().withBody(jsonFrom("openrtb2/yieldlab/test-yieldlab-bid-response.json")))); // when diff --git a/src/test/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListServiceTest.java b/src/test/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListServiceTest.java index 82ef85987d2..2b285e0adc8 100644 --- a/src/test/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListServiceTest.java +++ b/src/test/java/org/prebid/server/privacy/gdpr/vendorlist/VendorListServiceTest.java @@ -114,7 +114,7 @@ public void creationShouldFailsIfCannotCreateCacheDir() { () -> new VendorListService( 0, CACHE_DIR, - "http://vendorlist/%s", + "http://vendorlist/{VERSION}", 0, REFRESH_MISSING_LIST_PERIOD_MS, false, @@ -197,7 +197,7 @@ public void creationShouldFailsIfCannotReadFiles() { () -> new VendorListService( 0, CACHE_DIR, - "http://vendorlist/%s", + "http://vendorlist/{VERSION}", 0, REFRESH_MISSING_LIST_PERIOD_MS, false, @@ -224,7 +224,7 @@ public void creationShouldFailsIfCannotReadAtLeastOneVendorListFile() { () -> new VendorListService( 0, CACHE_DIR, - "http://vendorlist/%s", + "http://vendorlist/{VERSION}", 0, REFRESH_MISSING_LIST_PERIOD_MS, false, @@ -251,7 +251,7 @@ public void creationShouldFailsIfAtLeastOneVendorListFileCannotBeParsed() { () -> new VendorListService( 0, CACHE_DIR, - "http://vendorlist/%s", + "http://vendorlist/{VERSION}", 0, REFRESH_MISSING_LIST_PERIOD_MS, false, diff --git a/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java index 0a46bc83d16..8cdfc37b1b3 100644 --- a/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java @@ -344,7 +344,11 @@ public void getStoredDataShouldSendHttpRequestWithRfc3986CompatibleParams() thro jacksonMapper); // when - httpApplicationSettings.getStoredData(null, Set.of("id1", "id2"), Set.of("id1", "id2"), timeout); + httpApplicationSettings.getStoredData( + null, + new HashSet<>(Set.of("id1", "id2")), + new HashSet<>(Set.of("id1", "id2")), + timeout); // then final ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); @@ -357,10 +361,8 @@ public void getStoredDataShouldSendHttpRequestWithRfc3986CompatibleParams() thro .extracting(NameValuePair::getName, NameValuePair::getValue) .containsExactlyInAnyOrder( tuple("id", "1"), - tuple("request-id", "id1"), - tuple("request-id", "id2"), - tuple("imp-id", "id1"), - tuple("imp-id", "id2")); + tuple("request-id", "id2,id1"), + tuple("imp-id", "id2,id1")); } @Test diff --git a/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerCreatorTest.java b/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerCreatorTest.java index 7337d5d8b1c..9888cf8d9f8 100644 --- a/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerCreatorTest.java +++ b/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerCreatorTest.java @@ -8,7 +8,7 @@ import org.prebid.server.spring.config.bidder.model.usersync.UsersyncConfigurationProperties; import org.prebid.server.spring.config.bidder.model.usersync.UsersyncMethodConfigurationProperties; -import java.net.MalformedURLException; +import java.net.URISyntaxException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -56,9 +56,9 @@ public void createShouldValidateExternalUrl() { config.setRedirect(methodConfig); // given, when and then - assertThatThrownBy(() -> UsersyncerCreator.create(null).apply(config, CookieFamilySource.ROOT)) - .hasCauseExactlyInstanceOf(MalformedURLException.class) - .hasMessage("URL supplied is not valid: null"); + assertThatThrownBy(() -> UsersyncerCreator.create("/inv a lid").apply(config, CookieFamilySource.ROOT)) + .hasCauseExactlyInstanceOf(URISyntaxException.class) + .hasMessage("URL supplied is not valid: /inv a lid"); } @Test diff --git a/src/test/resources/org/prebid/server/it/test-application.properties b/src/test/resources/org/prebid/server/it/test-application.properties index 17f864aa414..fbf3ca2d270 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -511,7 +511,7 @@ adapters.smartadserver.endpoint=http://localhost:8090/smartadserver-exchange adapters.smartadserver.pg-endpoint=http://localhost:8090/smartadserver-pg-exchange adapters.smartadserver.aliases.equativ.enabled=true adapters.smartrtb.enabled=true -adapters.smartrtb.endpoint=http://localhost:8090/smartrtb-exchange/ +adapters.smartrtb.endpoint=http://localhost:8090/smartrtb-exchange adapters.smartx.enabled=true adapters.smartx.endpoint=http://localhost:8090/smartx-exchange adapters.smarthub.enabled=true