Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.VersionInfo;

import java.math.BigDecimal;
import java.util.ArrayList;
Expand Down Expand Up @@ -57,21 +58,23 @@ public class EpsilonBidder implements Bidder<BidRequest> {
// Position of the ad as a relative measure of visibility or prominence
private static final Set<Integer> AD_POSITIONS = IntStream.range(0, 8).boxed().collect(Collectors.toSet());

private static final String DISPLAY_MANAGER = "prebid-s2s";
private static final String DISPLAY_MANAGER_VER = "2.0.0";
private static final String DISPLAY_MANAGER = "prebid-s2s-java";

private final String endpointUrl;
private final boolean generateBidId;
private final JacksonMapper mapper;
private final String displayManagerVersion;

public EpsilonBidder(String endpointUrl,
boolean generateBidId,
String pbsVersion,
JacksonMapper mapper,
CurrencyConversionService currencyConversionService) {
this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl));
this.generateBidId = generateBidId;
this.mapper = Objects.requireNonNull(mapper);
this.currencyConversionService = Objects.requireNonNull(currencyConversionService);
this.displayManagerVersion = VersionInfo.UNDEFINED.equals(pbsVersion) ? null : pbsVersion;
}

@Override
Expand All @@ -96,7 +99,7 @@ private BidRequest createOutgoingRequest(BidRequest bidRequest) {
final BigDecimal bidFloor = resolveBidFloor(bidRequest,
imp.getBidfloorcur(),
getBidFloor(imp.getBidfloor(), impExt.getBidfloor()));
modifiedImps.add(modifyImp(imp, impExt, bidFloor));
modifiedImps.add(modifyImp(imp, impExt, bidFloor, displayManagerVersion));
}

final Imp firstImp = requestImps.getFirst();
Expand Down Expand Up @@ -143,13 +146,13 @@ private static App updateApp(App app, String siteId) {
return app == null ? null : app.toBuilder().id(siteId).build();
}

private static Imp modifyImp(Imp imp, ExtImpEpsilon impExt, BigDecimal bidfloor) {
private static Imp modifyImp(Imp imp, ExtImpEpsilon impExt, BigDecimal bidfloor, String displayManagerVersion) {
final Banner banner = imp.getBanner();
final Video video = imp.getVideo();

return imp.toBuilder()
.displaymanager(DISPLAY_MANAGER)
.displaymanagerver(DISPLAY_MANAGER_VER)
.displaymanagerver(displayManagerVersion)
.bidfloor(bidfloor)
.bidfloorcur(BIDDER_CURRENCY)
.tagid(getTagId(imp.getTagid(), impExt.getTagId()))
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/prebid/server/bidder/oms/OmsBidder.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@

public class OmsBidder implements Bidder<BidRequest> {

private static final String PUBLISHER_ID_MACRO = "{{PublisherId}}";
private static final TypeReference<ExtPrebid<?, ExtImpOms>> EXT_TYPE_REFERENCE = new TypeReference<>() {
};

private final String endpointUrl;
private final JacksonMapper mapper;

Expand All @@ -48,7 +50,7 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
final ExtImpOms impExt = parseImpExt(request.getImp().getFirst());
final String publisherId = resolverPublisherId(impExt.getPid(), impExt.getPublisherId());
final String encodedPublisherId = HttpUtil.encodeUrl(publisherId);
final String url = "%s?publisherId=%s".formatted(endpointUrl, encodedPublisherId);
final String url = endpointUrl.replace(PUBLISHER_ID_MACRO, encodedPublisherId);
return Result.withValue(BidderUtil.defaultRequest(request, url, mapper));
} catch (PreBidException e) {
return Result.withError(BidderError.badInput(e.getMessage()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,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.VersionInfo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
Expand All @@ -36,6 +37,7 @@ EpsilonConfigurationProperties configurationProperties() {
@Bean
BidderDeps epsilonBidderDeps(EpsilonConfigurationProperties epsilonConfigurationProperties,
@NotBlank @Value("${external-url}") String externalUrl,
VersionInfo versionInfo,
JacksonMapper mapper,
CurrencyConversionService currencyConversionService) {

Expand All @@ -46,6 +48,7 @@ BidderDeps epsilonBidderDeps(EpsilonConfigurationProperties epsilonConfiguration
new EpsilonBidder(
config.getEndpoint(),
epsilonConfigurationProperties.getGenerateBidId(),
versionInfo.getVersion(),
mapper,
currencyConversionService))
.assemble();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/prebid/server/util/VersionInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
public class VersionInfo {

private static final Logger logger = LoggerFactory.getLogger(VersionInfo.class);
private static final String UNDEFINED = "undefined";
public static final String UNDEFINED = "undefined";

String version;
String commitHash;
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/bidder-config/adkernel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ adapters:
152media: ~
xapads:
enabled: false
vendor-id: 1320
meta-info:
vendor-id: 1320
usersync:
enabled: true
cookie-family-name: xapads
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/bidder-config/flipp.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
adapters:
flipp:
endpoint: https://cdn-gateflipp.flippback.com/flyer-locator-service/prebid_campaigns
endpoint: https://ads-flipp.com/flyer-locator-service/prebid_campaigns
meta-info:
maintainer-email: prebid@flipp.com
app-media-types:
Expand Down
18 changes: 0 additions & 18 deletions src/main/resources/bidder-config/generic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,24 +97,6 @@ adapters:
url: https://prebid.cwi.re/v1/usersync?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&rd={{redirect_url}}
support-cors: false
uid-macro: '$UID'
adsinteractive:
enabled: false
endpoint: http://bid.adsinteractive.com/prebid
modifying-vast-xml-allowed: false
meta-info:
maintainer-email: it@adsinteractive.com
app-media-types:
- banner
site-media-types:
- banner
supported-vendors:
vendor-id: 1212
usersync:
cookie-family-name: adsinteractive
redirect:
url: https://sync.adsinteractive.com/getuid?{{redirect_url}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}
support-cors: false
uid-macro: '$AUID'
nativo:
enabled: false
endpoint: https://exchange.postrelease.com/esi?ntv_epid=7
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/bidder-config/missena.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
adapters:
missena:
endpoint: https://bid.missena.io/?t={{PublisherID}}
endpoint-compression: gzip
meta-info:
maintainer-email: prebid@missena.com
modifying-vast-xml-allowed: true
Expand All @@ -13,6 +14,6 @@ adapters:
usersync:
cookie-family-name: missena
iframe:
url: https://sync.missena.io/iframe?gdpr={{gdpr}}&consent={{gdpr_consent}}&us_privacy={{us_privacy}}&redirect={{redirect_url}}
url: https://sync.missena.io/iframe?gdpr={{gdpr}}&consent={{gdpr_consent}}&us_privacy={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}&redirect={{redirect_url}}
support-cors: false
uid-macro: '$UID'
3 changes: 3 additions & 0 deletions src/main/resources/bidder-config/mobilefuse.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ adapters:
- video
- native
site-media-types:
- banner
- video
- native
supported-vendors:
vendor-id: 909
usersync:
Expand Down
10 changes: 10 additions & 0 deletions src/main/resources/bidder-config/nexx360.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,13 @@ adapters:
- audio
supported-vendors:
vendor-id: 965
usersync:
cookie-family-name: nexx360
redirect:
url: https://fast.nexx360.io/usermatchredir/redirect?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&gpp={{gpp}}&gppsid={{gpp_sid}}&redir={{redirect_url}}
support-cors: false
uid-macro: '$UID'
iframe:
url: https://fast.nexx360.io/usermatchredir/iframe?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}&redir={{redirect_url}}
support-cors: false
uid-macro: '$UID'
2 changes: 1 addition & 1 deletion src/main/resources/bidder-config/oms.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
adapters:
oms:
endpoint: http://rt.marphezis.com/pbs
endpoint: http://rt.marphezis.com/pbs?pid={{PublisherId}}
meta-info:
maintainer-email: prebid@onlinemediasolutions.com
app-media-types:
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/bidder-config/teal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ adapters:
usersync:
cookie-family-name: teal
iframe:
url: https://bids.ws/load-pbs.html?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&redirect_url={{redirect_url}}
url: https://bids.ws/load-pbs.html?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}&redirect_url={{redirect_url}}
support-cors: false
17 changes: 17 additions & 0 deletions src/main/resources/bidder-config/teqblaze.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,23 @@ adapters:
mata-info:
maintainer-email: support@gravite.net
vendor-id: 377
adsinteractive:
enabled: false
endpoint: https://bntb.adsinteractive.com/pserver
meta-info:
maintainer-email: it@adsinteractive.com
vendor-id: 1212
usersync:
enabled: true
cookie-family-name: adsinteractive
redirect:
url: https://cstb.adsinteractive.com/pbserver?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&ccpa={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}&redir={{redirect_url}}
support-cors: false
uid-macro: '[UID]'
iframe:
url: https://cstb.adsinteractive.com/pbserverIframe?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&ccpa={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}&pbserverUrl={{redirect_url}}
support-cors: false
uid-macro: '[UID]'
progx:
enabled: false
endpoint: https://us-east.progrtb.com/pserver
Expand Down
15 changes: 0 additions & 15 deletions src/main/resources/static/bidder-params/adsinteractive.json

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.prebid.server.functional.testcontainers

import org.testcontainers.containers.InfluxDBContainer

import org.testcontainers.containers.MySQLContainer
import org.testcontainers.containers.PostgreSQLContainer

Expand Down Expand Up @@ -123,8 +123,6 @@ LIMIT 1
"adapters.generic.aliases.cwire.meta-info.app-media-types" : "",
"adapters.generic.aliases.blue.meta-info.app-media-types" : "",
"adapters.generic.aliases.blue.meta-info.site-media-types" : "",
"adapters.generic.aliases.adsinteractive.meta-info.app-media-types" : "",
"adapters.generic.aliases.adsinteractive.meta-info.site-media-types" : "",
"adapters.generic.aliases.nativo.meta-info.app-media-types" : "",
"adapters.generic.aliases.nativo.meta-info.site-media-types" : "",
"adapters.generic.aliases.infytv.meta-info.app-media-types" : "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.prebid.server.proto.openrtb.ext.request.epsilon.ExtImpEpsilon;
import org.prebid.server.proto.openrtb.ext.response.BidType;
import org.prebid.server.proto.openrtb.ext.response.ExtBidResponse;
import org.prebid.server.util.VersionInfo;

import java.math.BigDecimal;
import java.util.Collections;
Expand Down Expand Up @@ -64,13 +65,14 @@ public class EpsilonBidderTest extends VertxTest {

@BeforeEach
public void setUp() {
target = new EpsilonBidder(ENDPOINT_URL, false, jacksonMapper, currencyConversionService);
target = new EpsilonBidder(ENDPOINT_URL, false, null, jacksonMapper, currencyConversionService);
}

@Test
public void creationShouldFailOnInvalidEndpointUrl() {
assertThatIllegalArgumentException()
.isThrownBy(() -> new EpsilonBidder("invalid_url", false, jacksonMapper, currencyConversionService));
.isThrownBy(() -> new EpsilonBidder(
"invalid_url", false, null, jacksonMapper, currencyConversionService));
}

@Test
Expand Down Expand Up @@ -186,7 +188,7 @@ public void makeHttpRequestsShouldSetSiteIdFromExtSiteIdIfSiteIdIsNullOrEmpty()
}

@Test
public void makeHttpRequestsShouldSetImpDisplayManagerAndDisplayManagerVer() {
public void makeHttpRequestsShouldSetImpDisplayManager() {
// given
final BidRequest bidRequest = givenBidRequest(identity());

Expand All @@ -198,8 +200,63 @@ public void makeHttpRequestsShouldSetImpDisplayManagerAndDisplayManagerVer() {
assertThat(result.getValue()).hasSize(1)
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
.flatExtracting(BidRequest::getImp)
.extracting(Imp::getDisplaymanager, Imp::getDisplaymanagerver)
.containsExactly(tuple("prebid-s2s", "2.0.0"));
.extracting(Imp::getDisplaymanager)
.containsExactly("prebid-s2s-java");
}

@Test
public void makeHttpRequestsShouldNotSetDisplayManagerVerWhenVersionIsNull() {
// given
target = new EpsilonBidder(ENDPOINT_URL, false, null, jacksonMapper, currencyConversionService);
final BidRequest bidRequest = givenBidRequest(identity());

// when
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getValue()).hasSize(1)
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
.flatExtracting(BidRequest::getImp)
.extracting(Imp::getDisplaymanagerver)
.containsOnlyNulls();
}

@Test
public void makeHttpRequestsShouldNotSetDisplayManagerVerWhenVersionIsUndefined() {
// given
target = new EpsilonBidder(
ENDPOINT_URL, false, VersionInfo.UNDEFINED, jacksonMapper, currencyConversionService);
final BidRequest bidRequest = givenBidRequest(identity());

// when
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getValue()).hasSize(1)
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
.flatExtracting(BidRequest::getImp)
.extracting(Imp::getDisplaymanagerver)
.containsOnlyNulls();
}

@Test
public void makeHttpRequestsShouldSetDisplayManagerVerWhenVersionIsProvided() {
// given
target = new EpsilonBidder(ENDPOINT_URL, false, "1.2.3", jacksonMapper, currencyConversionService);
final BidRequest bidRequest = givenBidRequest(identity());

// when
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getValue()).hasSize(1)
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
.flatExtracting(BidRequest::getImp)
.extracting(Imp::getDisplaymanagerver)
.containsExactly("1.2.3");
}

@Test
Expand Down Expand Up @@ -697,7 +754,7 @@ public void makeBidsShouldReturnAudioBidIfRequestImpHasAudio() throws JsonProces
@Test
public void makeBidsShouldUpdateBidWithUUIDIfGenerateBidIdIsTrue() throws JsonProcessingException {
// given
target = new EpsilonBidder(ENDPOINT_URL, true, jacksonMapper, currencyConversionService);
target = new EpsilonBidder(ENDPOINT_URL, true, null, jacksonMapper, currencyConversionService);
final BidderCall<BidRequest> httpCall = givenHttpCall(
givenBidRequest(builder -> builder.id("123")
.banner(Banner.builder().build())),
Expand Down
Loading
Loading