Skip to content

Commit e8c27f7

Browse files
AntoxaAntoxicsergseven
authored andcommitted
Rubicon Bidder: Add Bid Meta Seat Field (prebid#3587)
1 parent 7411595 commit e8c27f7

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

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

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,19 +1617,27 @@ private List<BidderBid> bidsFromResponse(BidRequest prebidRequest,
16171617
}
16181618

16191619
private RubiconSeatBid updateSeatBids(RubiconSeatBid seatBid, List<BidderError> errors) {
1620-
final String buyer = seatBid.getBuyer();
1621-
final int networkId = NumberUtils.toInt(buyer, 0);
1622-
if (networkId <= 0) {
1620+
final Integer networkId = resolveNetworkId(seatBid);
1621+
final String seat = seatBid.getSeat();
1622+
1623+
if (networkId == null && seat == null) {
16231624
return seatBid;
16241625
}
1626+
16251627
final List<RubiconBid> updatedBids = seatBid.getBid().stream()
1626-
.map(bid -> insertNetworkIdToMeta(bid, networkId, errors))
1628+
.map(bid -> prepareBidMeta(bid, seat, networkId, errors))
16271629
.filter(Objects::nonNull)
16281630
.toList();
16291631
return seatBid.toBuilder().bid(updatedBids).build();
16301632
}
16311633

1632-
private RubiconBid insertNetworkIdToMeta(RubiconBid bid, int networkId, List<BidderError> errors) {
1634+
private static Integer resolveNetworkId(RubiconSeatBid seatBid) {
1635+
final String buyer = seatBid.getBuyer();
1636+
final int networkId = NumberUtils.toInt(buyer, 0);
1637+
return networkId <= 0 ? null : networkId;
1638+
}
1639+
1640+
private RubiconBid prepareBidMeta(RubiconBid bid, String seat, Integer networkId, List<BidderError> errors) {
16331641
final ObjectNode bidExt = bid.getExt();
16341642
final ExtPrebid<ExtBidPrebid, ObjectNode> extPrebid;
16351643
try {
@@ -1640,9 +1648,13 @@ private RubiconBid insertNetworkIdToMeta(RubiconBid bid, int networkId, List<Bid
16401648
}
16411649
final ExtBidPrebid extBidPrebid = extPrebid != null ? extPrebid.getPrebid() : null;
16421650
final ExtBidPrebidMeta meta = extBidPrebid != null ? extBidPrebid.getMeta() : null;
1643-
final ExtBidPrebidMeta updatedMeta = meta != null
1644-
? meta.toBuilder().networkId(networkId).build()
1645-
: ExtBidPrebidMeta.builder().networkId(networkId).build();
1651+
1652+
final ExtBidPrebidMeta updatedMeta = Optional.ofNullable(meta)
1653+
.map(ExtBidPrebidMeta::toBuilder)
1654+
.orElseGet(ExtBidPrebidMeta::builder)
1655+
.networkId(networkId)
1656+
.seat(seat)
1657+
.build();
16461658

16471659
final ExtBidPrebid modifiedExtBidPrebid = extBidPrebid != null
16481660
? extBidPrebid.toBuilder().meta(updatedMeta).build()

src/main/java/org/prebid/server/proto/openrtb/ext/response/ExtBidPrebidMeta.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,6 @@ public class ExtBidPrebidMeta {
6767
@JsonProperty("secondaryCatIds")
6868
List<String> secondaryCategoryIdList;
6969

70+
String seat;
71+
7072
}

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3305,6 +3305,34 @@ public void makeBidsShouldReplaceNotPresentAdmWithAdmNative() throws JsonProcess
33053305
.containsExactly("{\"admNativeProperty\":\"admNativeValue\"}");
33063306
}
33073307

3308+
@Test
3309+
public void makeBidsShouldSetSeatToMetaSeat() throws JsonProcessingException {
3310+
// given
3311+
final BidderCall<BidRequest> httpCall = givenHttpCall(
3312+
givenBidRequest(identity()),
3313+
mapper.writeValueAsString(RubiconBidResponse.builder()
3314+
.cur("USD")
3315+
.seatbid(singletonList(RubiconSeatBid.builder()
3316+
.seat("seat")
3317+
.bid(singletonList(givenRubiconBid(bid -> bid.price(ONE))))
3318+
.build()))
3319+
.build()));
3320+
3321+
// when
3322+
final Result<List<BidderBid>> result = target.makeBids(httpCall, givenBidRequest(identity()));
3323+
3324+
// then
3325+
final ObjectNode expectedBidExt = mapper.valueToTree(
3326+
ExtPrebid.of(ExtBidPrebid.builder()
3327+
.meta(ExtBidPrebidMeta.builder().seat("seat").build())
3328+
.build(), null));
3329+
assertThat(result.getErrors()).isEmpty();
3330+
assertThat(result.getValue())
3331+
.extracting(BidderBid::getBid)
3332+
.extracting(Bid::getExt)
3333+
.containsExactly(expectedBidExt);
3334+
}
3335+
33083336
@Test
33093337
public void makeBidsShouldSetSeatBuyerToMetaNetworkId() throws JsonProcessingException {
33103338
// given

0 commit comments

Comments
 (0)