From c0a5165bed9d80b41ef5dd6854c233a55186ef9f Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Tue, 7 Jan 2025 13:57:41 +0100 Subject: [PATCH 1/5] Metax: Update bidder (#3631) --- .../server/bidder/metax/MetaxBidder.java | 22 +++++++++- .../server/bidder/metax/MetaxBidderTest.java | 44 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) 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 08b7aec984e..fd3c03d2c92 100644 --- a/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java +++ b/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java @@ -22,6 +22,7 @@ import org.prebid.server.proto.openrtb.ext.ExtPrebid; import org.prebid.server.proto.openrtb.ext.request.metax.ExtImpMetax; 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; @@ -136,7 +137,13 @@ private static List extractBids(BidResponse bidResponse) { .map(SeatBid::getBid).filter(Objects::nonNull) .flatMap(Collection::stream) .filter(Objects::nonNull) - .map(bid -> BidderBid.of(bid, getBidType(bid), bidResponse.getCur())) + .map(bid -> BidderBid.builder() + .bid(bid) + .type(getBidType(bid)) + .bidCurrency(bidResponse.getCur()) + .videoInfo(videoInfo(bid)) + .build()) + .toList(); } @@ -155,4 +162,17 @@ private static BidType getBidType(Bid bid) { .formatted(bid.getImpid())); }; } + + private static ExtBidPrebidVideo videoInfo(Bid bid) { + final List cat = bid.getCat(); + final Integer duration = bid.getDur(); + + final boolean catNotEmpty = CollectionUtils.isNotEmpty(cat); + final boolean durationValid = duration != null && duration > 0; + return catNotEmpty || durationValid + ? ExtBidPrebidVideo.of( + durationValid ? duration : null, + catNotEmpty ? cat.getFirst() : null) + : null; + } } 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 605b56315da..dc29da555ba 100644 --- a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java @@ -22,6 +22,7 @@ import org.prebid.server.bidder.model.Result; import org.prebid.server.proto.openrtb.ext.ExtPrebid; import org.prebid.server.proto.openrtb.ext.request.metax.ExtImpMetax; +import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo; import java.util.Collections; import java.util.List; @@ -338,6 +339,39 @@ public void makeBidsShouldThrowErrorWhenMediaTypeIsMissing() throws JsonProcessi }); } + @Test + public void makeBidsShouldReturnVideoInfoWithDuration() throws JsonProcessingException { + // given + final BidderCall httpCall = givenHttpCall(givenBidResponse( + givenBid(bid -> bid.dur(1).mtype(2)))); + System.out.println("HTTP Response Body: " + httpCall.getResponse().getBody()); + + // when + final Result> result = target.makeBids(httpCall, null); + + // then + assertThat(result.getValue()) + .extracting(BidderBid::getVideoInfo) + .containsExactly(ExtBidPrebidVideo.of(1, null)); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void makeBidsShouldReturnVideoInfoWithPrimaryCategory() throws JsonProcessingException { + // given + final BidderCall httpCall = givenHttpCall(givenBidResponse( + givenBid(bid -> bid.cat(asList("1", "2")).mtype(2)))); + + // when + final Result> result = target.makeBids(httpCall, null); + + // then + assertThat(result.getValue()) + .extracting(BidderBid::getVideoInfo) + .containsExactly(ExtBidPrebidVideo.of(null, "1")); + assertThat(result.getErrors()).isEmpty(); + } + private static BidRequest givenBidRequest(UnaryOperator impCustomizer) { return BidRequest.builder() @@ -368,4 +402,14 @@ private static BidderCall givenHttpCall(String body) { HttpResponse.of(200, null, body), null); } + + private static String givenBidResponse(Bid... bids) throws JsonProcessingException { + return mapper.writeValueAsString(BidResponse.builder() + .seatbid(singletonList(SeatBid.builder().bid(asList(bids)).build())) + .build()); + } + + private static Bid givenBid(UnaryOperator bidCustomizer){ + return bidCustomizer.apply(Bid.builder()).build(); + } } From 8af285e9e9b50f2c318e4834102df41d795727b8 Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Tue, 7 Jan 2025 14:11:58 +0100 Subject: [PATCH 2/5] Metax: Update bidder (#3631) --- .../java/org/prebid/server/bidder/metax/MetaxBidderTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 dc29da555ba..05b6ff36105 100644 --- a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java @@ -344,7 +344,6 @@ public void makeBidsShouldReturnVideoInfoWithDuration() throws JsonProcessingExc // given final BidderCall httpCall = givenHttpCall(givenBidResponse( givenBid(bid -> bid.dur(1).mtype(2)))); - System.out.println("HTTP Response Body: " + httpCall.getResponse().getBody()); // when final Result> result = target.makeBids(httpCall, null); @@ -409,7 +408,7 @@ private static String givenBidResponse(Bid... bids) throws JsonProcessingExcepti .build()); } - private static Bid givenBid(UnaryOperator bidCustomizer){ + private static Bid givenBid(UnaryOperator bidCustomizer) { return bidCustomizer.apply(Bid.builder()).build(); } } From 54b748b7f0820a86d329b32d000f9cfc88614d25 Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Tue, 7 Jan 2025 14:16:53 +0100 Subject: [PATCH 3/5] Metax: Update bidder (#3631) --- .../prebid/server/bidder/metax/MetaxBidderTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 05b6ff36105..54b9e71a1cf 100644 --- a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java @@ -395,6 +395,12 @@ private String givenBidResponse(UnaryOperator bidCustomizer) thr .build()); } + private static String givenBidResponse(Bid... bids) throws JsonProcessingException { + return mapper.writeValueAsString(BidResponse.builder() + .seatbid(singletonList(SeatBid.builder().bid(asList(bids)).build())) + .build()); + } + private static BidderCall givenHttpCall(String body) { return BidderCall.succeededHttp( HttpRequest.builder().payload(null).build(), @@ -402,12 +408,6 @@ private static BidderCall givenHttpCall(String body) { null); } - private static String givenBidResponse(Bid... bids) throws JsonProcessingException { - return mapper.writeValueAsString(BidResponse.builder() - .seatbid(singletonList(SeatBid.builder().bid(asList(bids)).build())) - .build()); - } - private static Bid givenBid(UnaryOperator bidCustomizer) { return bidCustomizer.apply(Bid.builder()).build(); } From a7139adabd3c10ef59e560d8ac7bc46d1d569169 Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Wed, 8 Jan 2025 15:49:08 +0100 Subject: [PATCH 4/5] update tests --- .../server/bidder/metax/MetaxBidderTest.java | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) 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 54b9e71a1cf..942e17400b1 100644 --- a/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/metax/MetaxBidderTest.java @@ -342,8 +342,8 @@ public void makeBidsShouldThrowErrorWhenMediaTypeIsMissing() throws JsonProcessi @Test public void makeBidsShouldReturnVideoInfoWithDuration() throws JsonProcessingException { // given - final BidderCall httpCall = givenHttpCall(givenBidResponse( - givenBid(bid -> bid.dur(1).mtype(2)))); + final BidderCall httpCall = givenHttpCall( + givenBidResponse(bid -> bid.dur(1).mtype(2))); // when final Result> result = target.makeBids(httpCall, null); @@ -358,8 +358,8 @@ public void makeBidsShouldReturnVideoInfoWithDuration() throws JsonProcessingExc @Test public void makeBidsShouldReturnVideoInfoWithPrimaryCategory() throws JsonProcessingException { // given - final BidderCall httpCall = givenHttpCall(givenBidResponse( - givenBid(bid -> bid.cat(asList("1", "2")).mtype(2)))); + final BidderCall httpCall = givenHttpCall( + givenBidResponse(bid -> bid.cat(List.of("1", "2")).mtype(2))); // when final Result> result = target.makeBids(httpCall, null); @@ -395,20 +395,10 @@ private String givenBidResponse(UnaryOperator bidCustomizer) thr .build()); } - private static String givenBidResponse(Bid... bids) throws JsonProcessingException { - return mapper.writeValueAsString(BidResponse.builder() - .seatbid(singletonList(SeatBid.builder().bid(asList(bids)).build())) - .build()); - } - private static BidderCall givenHttpCall(String body) { return BidderCall.succeededHttp( HttpRequest.builder().payload(null).build(), HttpResponse.of(200, null, body), null); } - - private static Bid givenBid(UnaryOperator bidCustomizer) { - return bidCustomizer.apply(Bid.builder()).build(); - } } From a02afe8489480e2afe7739e755353bd625f644be Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Fri, 17 Jan 2025 15:30:31 +0100 Subject: [PATCH 5/5] fix clean code and endpoint --- .../java/org/prebid/server/bidder/metax/MetaxBidder.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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 fd3c03d2c92..7e57d054fab 100644 --- a/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.java +++ b/src/main/java/org/prebid/server/bidder/metax/MetaxBidder.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.commons.lang3.StringUtils; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -107,10 +106,10 @@ private static Imp modifyImp(Imp imp) { private String resolveEndpoint(ExtImpMetax extImpMetax) { final String publisherIdAsString = Optional.ofNullable(extImpMetax.getPublisherId()) .map(Object::toString) - .orElse(StringUtils.EMPTY); + .orElse("0"); final String adUnitAsString = Optional.ofNullable(extImpMetax.getAdUnit()) .map(Object::toString) - .orElse(StringUtils.EMPTY); + .orElse("0"); return endpointUrl .replace(PUBLISHER_ID_MACRO, publisherIdAsString) @@ -143,7 +142,6 @@ private static List extractBids(BidResponse bidResponse) { .bidCurrency(bidResponse.getCur()) .videoInfo(videoInfo(bid)) .build()) - .toList(); }