Skip to content

Commit 76ef823

Browse files
Segments insert fix (prebid#1172)
1 parent 7bf8a51 commit 76ef823

File tree

2 files changed

+57
-15
lines changed

2 files changed

+57
-15
lines changed

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

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -986,25 +986,28 @@ private void mergeFirstPartyDataFromUser(ExtUser userExt, ObjectNode result) {
986986
}
987987

988988
private void enrichWithIabAttribute(ObjectNode target, List<Data> data) {
989-
if (containsIabTaxonomyName(data)) {
989+
final List<String> iabValue = CollectionUtils.emptyIfNull(data).stream()
990+
.filter(Objects::nonNull)
991+
.filter(dataRecord -> containsIabTaxonomyName(dataRecord.getExt()))
992+
.map(Data::getSegment)
993+
.filter(Objects::nonNull)
994+
.flatMap(segments -> segments.stream()
995+
.map(Segment::getId))
996+
.filter(Objects::nonNull)
997+
.collect(Collectors.toList());
998+
999+
if (CollectionUtils.isNotEmpty(iabValue)) {
9901000
final ArrayNode iab = target.putArray("iab");
991-
data.stream()
992-
.map(Data::getSegment)
993-
.flatMap(segments -> segments.stream()
994-
.map(Segment::getId))
995-
.forEach(iab::add);
1001+
iabValue.forEach(iab::add);
9961002
}
9971003
}
9981004

999-
private boolean containsIabTaxonomyName(List<Data> data) {
1000-
return CollectionUtils.emptyIfNull(data).stream()
1001-
.map(Data::getExt)
1002-
.filter(Objects::nonNull)
1003-
.map(ext -> ext.get("taxonomyname"))
1004-
.filter(Objects::nonNull)
1005-
.filter(JsonNode::isTextual)
1006-
.map(JsonNode::textValue)
1007-
.anyMatch(value -> StringUtils.containsIgnoreCase(value, "iab"));
1005+
private boolean containsIabTaxonomyName(ObjectNode ext) {
1006+
final JsonNode taxonomyname = ext.get("taxonomyname");
1007+
if (taxonomyname != null && taxonomyname.isTextual()) {
1008+
return StringUtils.containsIgnoreCase(taxonomyname.textValue(), "iab");
1009+
}
1010+
return false;
10081011
}
10091012

10101013
private static String extractLiverampId(Map<String, List<ExtUserEid>> sourceToUserEidExt) {

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,45 @@ public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeIfTaxonomynameCon
702702
.build()));
703703
}
704704

705+
@Test
706+
public void makeHttpRequestsShouldFillWithIabAttributeOnlyIfContainsIabInTaxonomynameAttribute() {
707+
// given
708+
final ObjectNode firstUserDataNode = mapper.createObjectNode();
709+
firstUserDataNode.put("taxonomyname", "contains IaB");
710+
final ObjectNode secondUserDataNode = mapper.createObjectNode();
711+
secondUserDataNode.put("taxonomyname", "not contain");
712+
final BidRequest bidRequest = givenBidRequest(
713+
builder -> builder.user(User.builder().data(asList(Data.builder()
714+
.segment(singletonList(Segment.builder().id("segmentId")
715+
.build()))
716+
.ext(firstUserDataNode).build(),
717+
Data.builder()
718+
.segment(singletonList(Segment.builder().id("secondSegmentId")
719+
.build()))
720+
.ext(secondUserDataNode).build())).build()),
721+
builder -> builder.video(Video.builder().build()),
722+
identity());
723+
724+
// when
725+
final Result<List<HttpRequest<BidRequest>>> result = rubiconBidder.makeHttpRequests(bidRequest);
726+
727+
// then
728+
final ObjectNode expectedTarget = mapper.createObjectNode();
729+
final ArrayNode expectedIabAttribute = expectedTarget.putArray("iab");
730+
expectedIabAttribute.add("segmentId");
731+
732+
assertThat(result.getErrors()).isEmpty();
733+
assertThat(result.getValue()).hasSize(1).doesNotContainNull()
734+
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
735+
.extracting(BidRequest::getUser).doesNotContainNull()
736+
.extracting(User::getExt)
737+
.containsOnly(jacksonMapper.fillExtension(
738+
ExtUser.builder().build(),
739+
RubiconUserExt.builder()
740+
.rp(RubiconUserExtRp.of(expectedTarget))
741+
.build()));
742+
}
743+
705744
@Test
706745
public void makeHttpRequestsShouldIgnoreNotTextualTaxonomynameProperty() {
707746
// given

0 commit comments

Comments
 (0)