Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions src/main/java/org/prebid/server/bidder/ix/IxBidder.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.prebid.server.bidder.Bidder;
import org.prebid.server.bidder.ix.model.request.IxDiag;
import org.prebid.server.bidder.ix.model.response.IxBidResponse;
import org.prebid.server.bidder.ix.model.response.IxExtBidResponse;
import org.prebid.server.bidder.ix.model.response.NativeV11Wrapper;
Expand Down Expand Up @@ -65,6 +64,8 @@ public class IxBidder implements Bidder<BidRequest> {
private static final TypeReference<ExtPrebid<?, ExtImpIx>> IX_EXT_TYPE_REFERENCE =
new TypeReference<>() {
};
private static final String PBSP_JAVA = "java";
private static final String PBS_VERSION_UNKNOWN = "unknown";

private final String endpointUrl;
private final PrebidVersionProvider prebidVersionProvider;
Expand Down Expand Up @@ -204,11 +205,11 @@ private ExtRequest modifyRequestExt(ExtRequest extRequest, Set<String> siteIds)
modifiedExt = ExtRequest.empty();
}

modifiedExt.addProperty("ixdiag", mapper.mapper().valueToTree(makeDiagData(extRequest, siteIds)));
modifiedExt.addProperty("ixdiag", makeDiagData(extRequest, siteIds));
return modifiedExt;
}

private IxDiag makeDiagData(ExtRequest extRequest, Set<String> siteIds) {
private ObjectNode makeDiagData(ExtRequest extRequest, Set<String> siteIds) {
final String pbjsv = Optional.ofNullable(extRequest)
.map(ExtRequest::getPrebid)
.map(ExtRequestPrebid::getChannel)
Expand All @@ -221,7 +222,23 @@ private IxDiag makeDiagData(ExtRequest extRequest, Set<String> siteIds) {
? siteIds.stream().sorted().collect(Collectors.joining(", "))
: null;

return IxDiag.of(pbsv, pbjsv, multipleSiteIds);
final ObjectNode ixdiag = Optional.ofNullable(extRequest)
.map(ext -> ext.getProperty("ixdiag"))
.filter(JsonNode::isObject)
.map(ObjectNode.class::cast)
.orElse(mapper.mapper().createObjectNode())
.put("pbsv", pbsv == null ? PBS_VERSION_UNKNOWN : pbsv)
.put("pbsp", PBSP_JAVA);

if (multipleSiteIds != null) {
ixdiag.put("multipleSiteIds", multipleSiteIds);
}

if (pbjsv != null) {
ixdiag.put("pbjsv", pbjsv);
}

return ixdiag;
}

@Override
Expand Down

This file was deleted.

65 changes: 58 additions & 7 deletions src/test/java/org/prebid/server/bidder/ix/IxBidderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.prebid.server.VertxTest;
import org.prebid.server.bidder.ix.model.request.IxDiag;
import org.prebid.server.bidder.ix.model.response.AuctionConfigExtBidResponse;
import org.prebid.server.bidder.ix.model.response.IxBidResponse;
import org.prebid.server.bidder.ix.model.response.IxExtBidResponse;
Expand Down Expand Up @@ -191,8 +190,10 @@ public void makeHttpRequestsShouldReturnIxDiagWithPbjsVersionIfRequestExtPrebidC
.extracting(HttpRequest::getPayload)
.extracting(BidRequest::getExt)
.extracting(ext -> ext.getProperty("ixdiag"))
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
.containsExactly(IxDiag.of(null, "pbjsv", null));
.containsExactly(mapper.createObjectNode()
.put("pbsv", "unknown")
.put("pbjsv", "pbjsv")
.put("pbsp", "java"));
}

@Test
Expand All @@ -210,8 +211,9 @@ public void makeHttpRequestsShouldReturnIxDiagWithPbsVersion() {
.extracting(HttpRequest::getPayload)
.extracting(BidRequest::getExt)
.extracting(ext -> ext.getProperty("ixdiag"))
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
.containsExactly(IxDiag.of("pbsv", null, null));
.containsExactly(mapper.createObjectNode()
.put("pbsv", "pbsv")
.put("pbsp", "java"));
}

@Test
Expand All @@ -230,8 +232,51 @@ public void makeHttpRequestsShouldReturnIxDiagWithMultipleSiteIdsWhenMultipleImp
.extracting(HttpRequest::getPayload)
.extracting(BidRequest::getExt)
.extracting(ext -> ext.getProperty("ixdiag"))
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
.containsExactly(IxDiag.of(null, null, "site1, site2"));
.containsExactly(mapper.createObjectNode()
.put("pbsv", "unknown")
.put("pbsp", "java")
.put("multipleSiteIds", "site1, site2"));
}

@Test
public void makeHttpRequestsShouldPassThroughProvidedIxDiagFields() {
// given
given(prebidVersionProvider.getNameVersionRecord()).willReturn("pbsv1");
final ObjectNode givenIxDiag = mapper.createObjectNode();
givenIxDiag.put("pbsv", "pbsv2");
givenIxDiag.put("pbjsv", "pbjsv2");
givenIxDiag.put("pbsp", "go");
givenIxDiag.put("multipleSiteIds", "site1");
givenIxDiag.put("property1", "value");
givenIxDiag.put("property2", 1);

final BidRequest bidRequest = givenBidRequest(
bidRequestBuilder -> bidRequestBuilder.ext(givenExtRequestWithIxDiag(
"pbjsv1",
givenIxDiag)),
List.of(
impBuilder -> impBuilder.ext(givenImpExt("site1", null)),
impBuilder -> impBuilder.ext(givenImpExt("site2", null))));

// when
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);

// then
assertThat(result.getErrors()).isEmpty();

final ObjectNode expectedIxDiag = mapper.createObjectNode();
expectedIxDiag.put("pbsv", "pbsv1");
expectedIxDiag.put("pbjsv", "pbjsv1");
expectedIxDiag.put("pbsp", "java");
expectedIxDiag.put("multipleSiteIds", "site1, site2");
expectedIxDiag.put("property1", "value");
expectedIxDiag.put("property2", 1);

assertThat(result.getValue())
.extracting(HttpRequest::getPayload)
.extracting(BidRequest::getExt)
.extracting(ext -> ext.getProperty("ixdiag"))
.containsExactly(expectedIxDiag);
}

@Test
Expand Down Expand Up @@ -886,6 +931,12 @@ private static ExtRequest givenExtRequest(String pbjsv) {
.build());
}

private static ExtRequest givenExtRequestWithIxDiag(String pbjsv, ObjectNode ixDiag) {
final ExtRequest extRequest = givenExtRequest(pbjsv);
extRequest.addProperty("ixdiag", ixDiag);
return extRequest;
}

private static ObjectNode givenImpExt(String siteId, String sid) {
return mapper.valueToTree(ExtPrebid.of(null, ExtImpIx.of(siteId, null, sid)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,14 @@
"ext": {
"gdpr": 0
}
},
"ext": {
"ixdiag": {
"msd": 2,
"msi": 2,
"mfu": 0,
"ren": false,
"version": "6.29.1"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,13 @@
}
},
"ixdiag": {
"pbsv": "{{ pbs.java.version }}"
"pbsv": "{{ pbs.java.version }}",
"pbsp": "java",
"msd": 2,
"msi": 2,
"mfu": 0,
"ren": false,
"version": "6.29.1"
}
}
}
Loading