Skip to content

Commit acb7dd6

Browse files
committed
Fix comments
1 parent 1bd8dea commit acb7dd6

File tree

2 files changed

+141
-34
lines changed

2 files changed

+141
-34
lines changed

src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,41 +1689,19 @@ private ObjectNode prepareBidExt(RubiconBid bid,
16891689
BidType bidType,
16901690
boolean hasApexRenderer) {
16911691

1692-
final ObjectNode originalBidExt = bid.getExt();
1693-
final Integer networkId = resolveNetworkId(seatBid);
1694-
final String seat = seatBid.getSeat();
1695-
final String rendererUrl = resolveRendererUrl(imp, bidType, hasApexRenderer);
1696-
1697-
return ObjectUtils.allNull(networkId, rendererUrl, seat)
1698-
? originalBidExt
1699-
: prepareBidMeta(bid, seat, networkId, rendererUrl);
1700-
}
1701-
1702-
private static Integer resolveNetworkId(RubiconSeatBid seatBid) {
1703-
final String buyer = seatBid.getBuyer();
1704-
final int networkId = NumberUtils.toInt(buyer, 0);
1705-
return networkId <= 0 ? null : networkId;
1706-
}
1707-
1708-
private String resolveRendererUrl(Imp imp, BidType bidType, boolean hasApexRenderer) {
1709-
if (imp == null) {
1710-
return null;
1711-
}
1712-
1713-
final Video video = imp.getVideo();
1714-
return hasApexRenderer
1715-
&& bidType == BidType.video
1716-
&& (!Objects.equals(video.getPlacement(), 1) && !Objects.equals(video.getPlcmt(), 1))
1717-
? VIDEO_OUTSTREAM_APEX_META_RENDERER_URL
1718-
: null;
1719-
}
1720-
1721-
private ObjectNode prepareBidMeta(RubiconBid bid, String seat, Integer networkId, String rendererUrl) {
17221692
final ObjectNode bidExt = bid.getExt();
17231693
final ExtPrebid<ExtBidPrebid, ObjectNode> extPrebid = getExtPrebid(bidExt, bid.getId());
17241694
final ExtBidPrebid extBidPrebid = extPrebid != null ? extPrebid.getPrebid() : null;
17251695
final ExtBidPrebidMeta meta = extBidPrebid != null ? extBidPrebid.getMeta() : null;
17261696

1697+
final Integer networkId = resolveNetworkId(seatBid);
1698+
final String seat = seatBid.getSeat();
1699+
final String rendererUrl = resolveRendererUrl(imp, meta, bidType, hasApexRenderer);
1700+
1701+
if (ObjectUtils.allNull(networkId, rendererUrl, seat)) {
1702+
return bidExt;
1703+
}
1704+
17271705
final ExtBidPrebidMeta updatedMeta = Optional.ofNullable(meta)
17281706
.map(ExtBidPrebidMeta::toBuilder)
17291707
.orElseGet(ExtBidPrebidMeta::builder)
@@ -1750,6 +1728,32 @@ private ExtPrebid<ExtBidPrebid, ObjectNode> getExtPrebid(ObjectNode bidExt, Stri
17501728
}
17511729
}
17521730

1731+
private static Integer resolveNetworkId(RubiconSeatBid seatBid) {
1732+
final String buyer = seatBid.getBuyer();
1733+
final int networkId = NumberUtils.toInt(buyer, 0);
1734+
return networkId <= 0 ? null : networkId;
1735+
}
1736+
1737+
private String resolveRendererUrl(Imp imp, ExtBidPrebidMeta meta, BidType bidType, boolean hasApexRenderer) {
1738+
if (imp == null) {
1739+
return null;
1740+
}
1741+
1742+
final Video video = imp.getVideo();
1743+
return hasApexRenderer
1744+
&& (bidType == BidType.video || isVideoMetaMediaType(meta))
1745+
&& (video != null && !Objects.equals(video.getPlacement(), 1) && !Objects.equals(video.getPlcmt(), 1))
1746+
? VIDEO_OUTSTREAM_APEX_META_RENDERER_URL
1747+
: null;
1748+
}
1749+
1750+
private static Boolean isVideoMetaMediaType(ExtBidPrebidMeta meta) {
1751+
return Optional.ofNullable(meta)
1752+
.map(ExtBidPrebidMeta::getMediaType)
1753+
.map("video"::equalsIgnoreCase)
1754+
.orElse(false);
1755+
}
1756+
17531757
private String resolveAdm(String bidAdm, ObjectNode admobject) {
17541758
if (StringUtils.isNotBlank(bidAdm)) {
17551759
return bidAdm;

src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java

Lines changed: 107 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3348,6 +3348,109 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlForOutputStreamVide
33483348
.containsExactly(expectedBidExt);
33493349
}
33503350

3351+
@Test
3352+
public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTypeIsVideoAndVideoIsPresent()
3353+
throws JsonProcessingException {
3354+
3355+
// given
3356+
final ExtRequest extBidRequest = ExtRequest.of(ExtRequestPrebid.builder()
3357+
.bidders(mapper.valueToTree(ExtPrebidBidders.of(
3358+
mapper.createObjectNode().set("apexRenderer", BooleanNode.valueOf(true)))))
3359+
.build());
3360+
3361+
final BidRequest givenBidRequest = givenBidRequest(
3362+
builder -> builder.ext(extBidRequest),
3363+
imp -> imp.id("impId").video(Video.builder().build()),
3364+
identity());
3365+
3366+
final ObjectNode givenBidExt = mapper.valueToTree(
3367+
ExtPrebid.of(ExtBidPrebid.builder()
3368+
.meta(ExtBidPrebidMeta.builder()
3369+
.mediaType("video")
3370+
.rendererUrl("https://renderer.url.from.bidder")
3371+
.build())
3372+
.build(), null));
3373+
3374+
final BidderCall<BidRequest> httpCall = givenHttpCall(
3375+
givenBidRequest,
3376+
mapper.writeValueAsString(RubiconBidResponse.builder()
3377+
.cur("USD")
3378+
.seatbid(singletonList(RubiconSeatBid.builder()
3379+
.bid(singletonList(givenRubiconBid(bid ->
3380+
bid.impid("impId").price(ONE).ext(givenBidExt))))
3381+
.build()))
3382+
.build()));
3383+
3384+
// when
3385+
final Result<List<BidderBid>> result = target.makeBids(httpCall, givenBidRequest);
3386+
3387+
// then
3388+
final ObjectNode expectedBidExt = mapper.valueToTree(
3389+
ExtPrebid.of(ExtBidPrebid.builder()
3390+
.meta(ExtBidPrebidMeta.builder()
3391+
.mediaType("video")
3392+
.rendererUrl("https://video-outstream.rubiconproject.com/apex-2.2.1.js")
3393+
.build())
3394+
.build(), null));
3395+
3396+
assertThat(result.getErrors()).isEmpty();
3397+
assertThat(result.getValue())
3398+
.extracting(BidderBid::getBid)
3399+
.extracting(Bid::getExt)
3400+
.containsExactly(expectedBidExt);
3401+
}
3402+
3403+
@Test
3404+
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTypeIsVideoAndVideoIsAbsent()
3405+
throws JsonProcessingException {
3406+
3407+
// given
3408+
final ExtRequest extBidRequest = ExtRequest.of(ExtRequestPrebid.builder()
3409+
.bidders(mapper.valueToTree(ExtPrebidBidders.of(
3410+
mapper.createObjectNode().set("apexRenderer", BooleanNode.valueOf(true)))))
3411+
.build());
3412+
3413+
final BidRequest givenBidRequest = givenBidRequest(
3414+
builder -> builder.ext(extBidRequest),
3415+
imp -> imp.id("impId").video(null),
3416+
identity());
3417+
3418+
final ObjectNode givenBidExt = mapper.valueToTree(
3419+
ExtPrebid.of(ExtBidPrebid.builder()
3420+
.meta(ExtBidPrebidMeta.builder()
3421+
.mediaType("video")
3422+
.rendererUrl("https://renderer.url.from.bidder")
3423+
.build())
3424+
.build(), null));
3425+
3426+
final BidderCall<BidRequest> httpCall = givenHttpCall(
3427+
givenBidRequest,
3428+
mapper.writeValueAsString(RubiconBidResponse.builder()
3429+
.cur("USD")
3430+
.seatbid(singletonList(RubiconSeatBid.builder()
3431+
.bid(singletonList(givenRubiconBid(bid ->
3432+
bid.impid("impId").price(ONE).ext(givenBidExt))))
3433+
.build()))
3434+
.build()));
3435+
3436+
// when
3437+
final Result<List<BidderBid>> result = target.makeBids(httpCall, givenBidRequest);
3438+
3439+
// then
3440+
final ObjectNode expectedBidExt = mapper.valueToTree(
3441+
ExtPrebid.of(ExtBidPrebid.builder()
3442+
.meta(ExtBidPrebidMeta.builder()
3443+
.rendererUrl("https://video-outstream.rubiconproject.com/apex-2.2.1.js")
3444+
.build())
3445+
.build(), null));
3446+
3447+
assertThat(result.getErrors()).isEmpty();
3448+
assertThat(result.getValue())
3449+
.extracting(BidderBid::getBid)
3450+
.extracting(Bid::getExt)
3451+
.containsExactly(givenBidExt);
3452+
}
3453+
33513454
@Test
33523455
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsNotDefined()
33533456
throws JsonProcessingException {
@@ -3377,7 +3480,7 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRenderer
33773480
}
33783481

33793482
@Test
3380-
public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsDefinedAsFalse()
3483+
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsDefinedAsFalse()
33813484
throws JsonProcessingException {
33823485

33833486
// given
@@ -3412,7 +3515,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsD
34123515
}
34133516

34143517
@Test
3415-
public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNotVideo()
3518+
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNotVideo()
34163519
throws JsonProcessingException {
34173520

34183521
// given
@@ -3447,7 +3550,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNo
34473550
}
34483551

34493552
@Test
3450-
public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementIsOne()
3553+
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementIsOne()
34513554
throws JsonProcessingException {
34523555

34533556
// given
@@ -3482,7 +3585,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementI
34823585
}
34833586

34843587
@Test
3485-
public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlcmtIsOne()
3588+
public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlcmtIsOne()
34863589
throws JsonProcessingException {
34873590

34883591
// given

0 commit comments

Comments
 (0)