Skip to content

Commit c6625b3

Browse files
author
johnwier
committed
Epsilon: Add native support
1 parent b6efb77 commit c6625b3

File tree

3 files changed

+64
-4
lines changed

3 files changed

+64
-4
lines changed

src/main/java/org/prebid/server/bidder/epsilon/EpsilonBidder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ private BidRequest createOutgoingRequest(BidRequest bidRequest) {
104104
final String siteId = extImp.getSiteId();
105105
final Site requestSite = bidRequest.getSite();
106106
final App requestApp = bidRequest.getApp();
107-
final List<String> cur = bidRequest.getCur();
108107
return bidRequest.toBuilder()
109108
.site(updateSite(requestSite, siteId))
110109
.app(requestSite == null ? updateApp(requestApp, siteId) : requestApp)
@@ -262,10 +261,12 @@ private Bid updateBidWithId(Bid bid) {
262261
private static BidType getType(String impId, List<Imp> imps) {
263262
for (Imp imp : imps) {
264263
if (imp.getId().equals(impId)) {
265-
if (imp.getVideo() != null) {
266-
return BidType.video;
267-
} else if (imp.getAudio() != null) {
264+
if (imp.getAudio() != null) {
268265
return BidType.audio;
266+
} else if (imp.getXNative() != null) {
267+
return BidType.xNative;
268+
} else if (imp.getVideo() != null) {
269+
return BidType.video;
269270
} else {
270271
return BidType.banner;
271272
}

src/main/resources/bidder-config/epsilon.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ adapters:
1212
- banner
1313
- video
1414
- audio
15+
- native
1516
site-media-types:
1617
- banner
1718
- video
1819
- audio
20+
- native
1921
supported-vendors:
2022
vendor-id: 24
2123
usersync:

src/test/java/org/prebid/server/bidder/epsilon/EpsilonBidderTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.iab.openrtb.request.Banner;
77
import com.iab.openrtb.request.BidRequest;
88
import com.iab.openrtb.request.Imp;
9+
import com.iab.openrtb.request.Native;
910
import com.iab.openrtb.request.Site;
1011
import com.iab.openrtb.request.Video;
1112
import com.iab.openrtb.response.Bid;
@@ -21,12 +22,15 @@
2122
import org.prebid.server.bidder.model.BidderBid;
2223
import org.prebid.server.bidder.model.BidderCall;
2324
import org.prebid.server.bidder.model.BidderError;
25+
import org.prebid.server.bidder.model.CompositeBidderResponse;
2426
import org.prebid.server.bidder.model.HttpRequest;
2527
import org.prebid.server.bidder.model.HttpResponse;
2628
import org.prebid.server.bidder.model.Result;
2729
import org.prebid.server.currency.CurrencyConversionService;
2830
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
2931
import org.prebid.server.proto.openrtb.ext.request.epsilon.ExtImpEpsilon;
32+
import org.prebid.server.proto.openrtb.ext.response.BidType;
33+
import org.prebid.server.proto.openrtb.ext.response.ExtBidResponse;
3034

3135
import java.math.BigDecimal;
3236
import java.util.Collections;
@@ -712,6 +716,59 @@ public void makeHttpRequestsShouldReturnConvertedBidFloorCurrency() {
712716
.containsOnly(AssertionsForClassTypes.tuple(BigDecimal.ONE, "USD"));
713717
}
714718

719+
@Test
720+
public void makeBidsShouldReturnResultForNativeBidsWithExpectedFields() throws JsonProcessingException {
721+
// given
722+
723+
final String nativeRequestString =
724+
"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":80}}";
725+
final String nativeResponseString =
726+
"\"native\"{\"assets\": [{\"id\": 1, \"title\": {\"text\": \"Native test (Title)\"}}], "
727+
+ "\"link\": {\"url\": \"https://www.epsilon.com/\"}, "
728+
+ "\"imptrackers\":[\"https://iad-usadmm.dotomi.com/event\"],\"jstracker\":\"\"}";
729+
final BidRequest bidRequest = BidRequest.builder()
730+
.id("native-test")
731+
.imp(singletonList(Imp.builder()
732+
.id("impid-0")
733+
.xNative(Native.builder()
734+
.request(nativeRequestString)
735+
.ver("1.2")
736+
.build())
737+
.build()))
738+
.build();
739+
740+
final BidderCall<BidRequest> httpCall = givenHttpCall(bidRequest,
741+
mapper.writeValueAsString(BidResponse.builder()
742+
.seatbid(singletonList(SeatBid.builder()
743+
.bid(singletonList(Bid.builder()
744+
.price(BigDecimal.ONE)
745+
.impid("impid-0")
746+
.adm(nativeResponseString)
747+
.mtype(4)
748+
.cat(singletonList("IAB3"))
749+
.build()))
750+
.build()))
751+
.cur("USD")
752+
.ext(ExtBidResponse.builder().build())
753+
.build()));
754+
755+
// when
756+
final CompositeBidderResponse result = target.makeBidderResponse(httpCall, bidRequest);
757+
758+
// then
759+
assertThat(result.getErrors()).isEmpty();
760+
assertThat(result.getBids()).hasSize(1)
761+
.containsOnly(BidderBid.of(
762+
Bid.builder()
763+
.impid("impid-0")
764+
.price(BigDecimal.ONE)
765+
.adm(nativeResponseString)
766+
.cat(singletonList("IAB3"))
767+
.mtype(4)
768+
.build(),
769+
BidType.xNative, "USD"));
770+
}
771+
715772
private static BidRequest givenBidRequest(
716773
Function<BidRequest.BidRequestBuilder, BidRequest.BidRequestBuilder> bidRequestCustomizer,
717774
Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer,

0 commit comments

Comments
 (0)