Skip to content

Commit c36cc65

Browse files
committed
Epsilon: native support
1 parent 2f92932 commit c36cc65

2 files changed

Lines changed: 54 additions & 4 deletions

File tree

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/test/java/org/prebid/server/bidder/epsilon/EpsilonBidderTest.java

Lines changed: 49 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,51 @@ 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 BidRequest bidRequest = BidRequest.builder()
724+
.id("native-test")
725+
.imp(singletonList(Imp.builder()
726+
.id("impid-0")
727+
.xNative(Native.builder()
728+
.request("{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":80}}")
729+
.ver("1.2")
730+
.build())
731+
.build()))
732+
.build();
733+
734+
final BidderCall<BidRequest> httpCall = givenHttpCall(bidRequest, mapper.writeValueAsString(BidResponse.builder()
735+
.seatbid(singletonList(SeatBid.builder()
736+
.bid(singletonList(Bid.builder()
737+
.price(BigDecimal.ONE)
738+
.impid("impid-0")
739+
.adm("\"native\"{\"assets\": [{\"id\": 1, \"title\": {\"text\": \"Native test (Title)\"}}], \"link\": {\"url\": \"https://www.epsilon.com/\"}, \"imptrackers\":[\"https://iad-usadmm.dotomi.com/event\"],\"jstracker\":\"\"}")
740+
.mtype(4)
741+
.cat(singletonList("IAB3"))
742+
.build()))
743+
.build()))
744+
.cur("USD")
745+
.ext(ExtBidResponse.builder().build())
746+
.build()));
747+
748+
// when
749+
final CompositeBidderResponse result = target.makeBidderResponse(httpCall, bidRequest);
750+
751+
// then
752+
assertThat(result.getErrors()).isEmpty();
753+
assertThat(result.getBids()).hasSize(1)
754+
.containsOnly(BidderBid.of(
755+
Bid.builder()
756+
.impid("impid-0")
757+
.price(BigDecimal.ONE)
758+
.adm("\"native\"{\"assets\": [{\"id\": 1, \"title\": {\"text\": \"Native test (Title)\"}}], \"link\": {\"url\": \"https://www.epsilon.com/\"}, \"imptrackers\":[\"https://iad-usadmm.dotomi.com/event\"],\"jstracker\":\"\"}")
759+
.cat(singletonList("IAB3"))
760+
.mtype(4)
761+
.build(),
762+
BidType.xNative, "USD"));
763+
}
715764
private static BidRequest givenBidRequest(
716765
Function<BidRequest.BidRequestBuilder, BidRequest.BidRequestBuilder> bidRequestCustomizer,
717766
Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer,

0 commit comments

Comments
 (0)