Skip to content

Commit

Permalink
All Requested Changes have been made
Browse files Browse the repository at this point in the history
  • Loading branch information
SuprPhatAnon committed Apr 17, 2024
1 parent 7a3e223 commit 63c438f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo;
import org.prebid.server.util.BidderUtil;
import org.prebid.server.util.HttpUtil;
import org.prebid.server.util.ObjectUtil;

import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -98,8 +97,8 @@ private ExtImpConsumable parseImpExt(Imp imp) {
}

private boolean isImpValid(Site site, App app, ExtImpConsumable impExt) {
return ((app != null && !Strings.isNullOrEmpty(impExt.getPlacementId()))
|| (site != null && impExt.getSiteId() != 0 && impExt.getNetworkId() != 0 && impExt.getUnitId() != 0));
return (app != null && !Strings.isNullOrEmpty(impExt.getPlacementId()))
|| (site != null && impExt.getSiteId() != 0 && impExt.getNetworkId() != 0 && impExt.getUnitId() != 0);

}

Expand Down Expand Up @@ -162,29 +161,54 @@ public CompositeBidderResponse makeBidderResponse(BidderCall<BidRequest> httpCal
}

private List<BidderBid> extractConsumableBids(BidRequest bidRequest, BidResponse bidResponse,
List<BidderError> bidderErrors) {
return bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid()) ? Collections.emptyList()
: bidsFromResponse(bidResponse, bidRequest, bidderErrors);
}
List<BidderError> errors) {
if (bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid())) {
return Collections.emptyList();
}

return bidResponse.getSeatbid().stream()
.filter(Objects::nonNull)
.map(SeatBid::getBid)
.filter(Objects::nonNull)
.flatMap(Collection::stream)
.filter(Objects::nonNull)
.map(bid -> toBidderBid(bid, bidRequest, bidResponse, errors))
.filter(Objects::nonNull)
.toList();

private List<BidderBid> bidsFromResponse(BidResponse bidResponse, BidRequest bidRequest, List<BidderError> errors) {
return bidResponse.getSeatbid().stream().filter(Objects::nonNull).map(SeatBid::getBid).filter(Objects::nonNull)
.flatMap(Collection::stream).map(bid -> toBidderBid(bid, bidRequest, bidResponse, errors))
.filter(Objects::nonNull).toList();
}

private BidderBid toBidderBid(Bid bid, BidRequest bidRequest, BidResponse bidResponse, List<BidderError> errors) {
final ExtBidPrebid prebidExt;
final BidType bidType;
try {
prebidExt = parseBidExt(bid);
bidType = getBidType(bid, bidRequest.getImp());
} catch (PreBidException e) {
errors.add(BidderError.badServerResponse(e.getMessage()));
return null;
}

final Bid updatedBid = (bidType.equals(BidType.video))?updateBidWithVideoAttributes(bid):bid;
return BidderBid.builder()
.bid(bid)
.type(bidType)
.bidCurrency(bidResponse.getCur())
.videoInfo(makeVideoInfo(bid))
.build();
}

private ExtBidPrebid parseBidExt(Bid bid) {
final Optional<Bid> optionalBid = Optional.ofNullable(bid);

return BidderBid.of(updatedBid, bidType, bidResponse.getCur());
final ObjectNode bidExt = optionalBid
.map(Bid::getExt)
.orElse(mapper.mapper().valueToTree(ExtBidPrebid.builder().build()));

try {
return mapper.mapper().treeToValue(bidExt, ExtBidPrebid.class);
} catch (IllegalArgumentException | JsonProcessingException e) {
throw new PreBidException(e.getMessage());
}
}

private static BidType getBidType(Bid bid, List<Imp> imps) {
Expand Down Expand Up @@ -226,31 +250,12 @@ private static BidType getBidTypeFromImp(List<Imp> imps, String impId) {
throw new PreBidException("Unmatched impression id " + impId);
}

private Bid updateBidWithVideoAttributes(Bid bid) {
final ObjectNode bidExt = bid.getExt();
final ExtBidPrebid extPrebid = bidExt != null ? parseBidExt(bidExt) : ExtBidPrebid.builder()
.video(ExtBidPrebidVideo.of(null, null)).build();
final ExtBidPrebidVideo extVideo = extPrebid != null ? extPrebid.getVideo() : null;
final Bid updatedBid;
if (extVideo != null) {
updatedBid = bid.toBuilder().ext(resolveBidExt(bid.getDur())).build();
} else {
updatedBid = bid;
}
return updatedBid;
}
private static ExtBidPrebidVideo makeVideoInfo(Bid bid) {

private ExtBidPrebid parseBidExt(ObjectNode bidExt) {
try {
return mapper.mapper().treeToValue(bidExt, ExtBidPrebid.class);
} catch (JsonProcessingException e) {
return null;
}
}
final int duration = Optional.ofNullable(bid)
.map(Bid::getDur)
.orElse(0);

private ObjectNode resolveBidExt(Integer duration) {
return mapper.mapper().valueToTree(ExtBidPrebid.builder().video(ExtBidPrebidVideo
.of(duration, null)).build());
return ExtBidPrebidVideo.of(duration, null);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ public void makeBidderResponseShouldReturnBidderBidWithNoErrors() throws JsonPro

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getBids())
.containsExactly(BidderBid.of(Bid.builder().impid("123").build(), BidType.banner, "USD"));
assertThat(result.getBids()).isNotEmpty();
}

@Test
Expand Down Expand Up @@ -202,7 +201,8 @@ public void makeBidderResponseShouldReturnBannerBidIfBannerIsPresent() throws Js
// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getBids())
.containsOnly(BidderBid.of(Bid.builder().impid("123").build(), BidType.banner, "USD"));
.extracting(BidderBid::getType)
.containsExactly(BidType.banner);
}

@Test
Expand All @@ -222,7 +222,8 @@ public void makeBidderResponseShouldReturnAudioBidIfAudioIsPresent() throws Json
// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getBids())
.containsOnly(BidderBid.of(Bid.builder().impid("123").build(), BidType.audio, "USD"));
.extracting(BidderBid::getType)
.containsExactly(BidType.audio);
}

@Test
Expand Down Expand Up @@ -266,10 +267,7 @@ public void makeBidderResponseShouldReturnBidWithVideoExt() throws JsonProcessin
// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getBids())
.extracting(BidderBid::getBid)
.extracting(Bid::getExt)
.extracting(node -> mapper.treeToValue(node, ExtBidPrebid.class))
.extracting(ExtBidPrebid::getVideo)
.extracting(BidderBid::getVideoInfo)
.extracting(ExtBidPrebidVideo::getDuration)
.containsExactly(1);
}
Expand Down Expand Up @@ -447,7 +445,8 @@ private static BidResponse givenBidResponse(Function<Bid.BidBuilder, Bid.BidBuil
return BidResponse.builder()
.cur("USD")
.seatbid(singletonList(SeatBid.builder()
.bid(singletonList(bidCustomizer.apply(Bid.builder()).build()))
.bid(singletonList(bidCustomizer.apply(Bid.builder()
.ext(mapper.valueToTree(ExtBidPrebid.builder().build()))).build()))
.build()))
.build();
}
Expand Down

0 comments on commit 63c438f

Please sign in to comment.