Skip to content
Open
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
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
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
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
"h": 600
},
"bidfloorcur": "USD",
"displaymanager": "prebid-s2s",
"displaymanagerver": "2.0.0",
"displaymanager": "prebid-s2s-java",
"displaymanagerver": "${json-unit.ignore}",
"ext": {
"tid": "${json-unit.any-string}",
"bidder": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
"h": 600
},
"bidfloorcur": "USD",
"displaymanager": "prebid-s2s",
"displaymanagerver": "2.0.0",
"displaymanager": "prebid-s2s-java",
"displaymanagerver": "${json-unit.ignore}",
"ext": {
"tid": "${json-unit.any-string}",
"bidder": {
Expand Down
Loading