Skip to content

Commit 2cb5405

Browse files
Pass ext.ixdiag fields through (#4159)
1 parent c3b5626 commit 2cb5405

File tree

5 files changed

+95
-27
lines changed

5 files changed

+95
-27
lines changed

src/main/java/org/prebid/server/bidder/ix/IxBidder.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.apache.commons.collections4.CollectionUtils;
2222
import org.apache.commons.lang3.StringUtils;
2323
import org.prebid.server.bidder.Bidder;
24-
import org.prebid.server.bidder.ix.model.request.IxDiag;
2524
import org.prebid.server.bidder.ix.model.response.IxBidResponse;
2625
import org.prebid.server.bidder.ix.model.response.IxExtBidResponse;
2726
import org.prebid.server.bidder.ix.model.response.NativeV11Wrapper;
@@ -65,6 +64,8 @@ public class IxBidder implements Bidder<BidRequest> {
6564
private static final TypeReference<ExtPrebid<?, ExtImpIx>> IX_EXT_TYPE_REFERENCE =
6665
new TypeReference<>() {
6766
};
67+
private static final String PBSP_JAVA = "java";
68+
private static final String PBS_VERSION_UNKNOWN = "unknown";
6869

6970
private final String endpointUrl;
7071
private final PrebidVersionProvider prebidVersionProvider;
@@ -204,11 +205,11 @@ private ExtRequest modifyRequestExt(ExtRequest extRequest, Set<String> siteIds)
204205
modifiedExt = ExtRequest.empty();
205206
}
206207

207-
modifiedExt.addProperty("ixdiag", mapper.mapper().valueToTree(makeDiagData(extRequest, siteIds)));
208+
modifiedExt.addProperty("ixdiag", makeDiagData(extRequest, siteIds));
208209
return modifiedExt;
209210
}
210211

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

224-
return IxDiag.of(pbsv, pbjsv, multipleSiteIds);
225+
final ObjectNode ixdiag = Optional.ofNullable(extRequest)
226+
.map(ext -> ext.getProperty("ixdiag"))
227+
.filter(JsonNode::isObject)
228+
.map(ObjectNode.class::cast)
229+
.orElse(mapper.mapper().createObjectNode())
230+
.put("pbsv", pbsv == null ? PBS_VERSION_UNKNOWN : pbsv)
231+
.put("pbsp", PBSP_JAVA);
232+
233+
if (multipleSiteIds != null) {
234+
ixdiag.put("multipleSiteIds", multipleSiteIds);
235+
}
236+
237+
if (pbjsv != null) {
238+
ixdiag.put("pbjsv", pbjsv);
239+
}
240+
241+
return ixdiag;
225242
}
226243

227244
@Override

src/main/java/org/prebid/server/bidder/ix/model/request/IxDiag.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/test/java/org/prebid/server/bidder/ix/IxBidderTest.java

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.mockito.Mock;
2727
import org.mockito.junit.jupiter.MockitoExtension;
2828
import org.prebid.server.VertxTest;
29-
import org.prebid.server.bidder.ix.model.request.IxDiag;
3029
import org.prebid.server.bidder.ix.model.response.AuctionConfigExtBidResponse;
3130
import org.prebid.server.bidder.ix.model.response.IxBidResponse;
3231
import org.prebid.server.bidder.ix.model.response.IxExtBidResponse;
@@ -191,8 +190,10 @@ public void makeHttpRequestsShouldReturnIxDiagWithPbjsVersionIfRequestExtPrebidC
191190
.extracting(HttpRequest::getPayload)
192191
.extracting(BidRequest::getExt)
193192
.extracting(ext -> ext.getProperty("ixdiag"))
194-
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
195-
.containsExactly(IxDiag.of(null, "pbjsv", null));
193+
.containsExactly(mapper.createObjectNode()
194+
.put("pbsv", "unknown")
195+
.put("pbjsv", "pbjsv")
196+
.put("pbsp", "java"));
196197
}
197198

198199
@Test
@@ -210,8 +211,9 @@ public void makeHttpRequestsShouldReturnIxDiagWithPbsVersion() {
210211
.extracting(HttpRequest::getPayload)
211212
.extracting(BidRequest::getExt)
212213
.extracting(ext -> ext.getProperty("ixdiag"))
213-
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
214-
.containsExactly(IxDiag.of("pbsv", null, null));
214+
.containsExactly(mapper.createObjectNode()
215+
.put("pbsv", "pbsv")
216+
.put("pbsp", "java"));
215217
}
216218

217219
@Test
@@ -230,8 +232,51 @@ public void makeHttpRequestsShouldReturnIxDiagWithMultipleSiteIdsWhenMultipleImp
230232
.extracting(HttpRequest::getPayload)
231233
.extracting(BidRequest::getExt)
232234
.extracting(ext -> ext.getProperty("ixdiag"))
233-
.extracting(diagNode -> mapper.treeToValue(diagNode, IxDiag.class))
234-
.containsExactly(IxDiag.of(null, null, "site1, site2"));
235+
.containsExactly(mapper.createObjectNode()
236+
.put("pbsv", "unknown")
237+
.put("pbsp", "java")
238+
.put("multipleSiteIds", "site1, site2"));
239+
}
240+
241+
@Test
242+
public void makeHttpRequestsShouldPassThroughProvidedIxDiagFields() {
243+
// given
244+
given(prebidVersionProvider.getNameVersionRecord()).willReturn("pbsv1");
245+
final ObjectNode givenIxDiag = mapper.createObjectNode();
246+
givenIxDiag.put("pbsv", "pbsv2");
247+
givenIxDiag.put("pbjsv", "pbjsv2");
248+
givenIxDiag.put("pbsp", "go");
249+
givenIxDiag.put("multipleSiteIds", "site1");
250+
givenIxDiag.put("property1", "value");
251+
givenIxDiag.put("property2", 1);
252+
253+
final BidRequest bidRequest = givenBidRequest(
254+
bidRequestBuilder -> bidRequestBuilder.ext(givenExtRequestWithIxDiag(
255+
"pbjsv1",
256+
givenIxDiag)),
257+
List.of(
258+
impBuilder -> impBuilder.ext(givenImpExt("site1", null)),
259+
impBuilder -> impBuilder.ext(givenImpExt("site2", null))));
260+
261+
// when
262+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
263+
264+
// then
265+
assertThat(result.getErrors()).isEmpty();
266+
267+
final ObjectNode expectedIxDiag = mapper.createObjectNode();
268+
expectedIxDiag.put("pbsv", "pbsv1");
269+
expectedIxDiag.put("pbjsv", "pbjsv1");
270+
expectedIxDiag.put("pbsp", "java");
271+
expectedIxDiag.put("multipleSiteIds", "site1, site2");
272+
expectedIxDiag.put("property1", "value");
273+
expectedIxDiag.put("property2", 1);
274+
275+
assertThat(result.getValue())
276+
.extracting(HttpRequest::getPayload)
277+
.extracting(BidRequest::getExt)
278+
.extracting(ext -> ext.getProperty("ixdiag"))
279+
.containsExactly(expectedIxDiag);
235280
}
236281

237282
@Test
@@ -886,6 +931,12 @@ private static ExtRequest givenExtRequest(String pbjsv) {
886931
.build());
887932
}
888933

934+
private static ExtRequest givenExtRequestWithIxDiag(String pbjsv, ObjectNode ixDiag) {
935+
final ExtRequest extRequest = givenExtRequest(pbjsv);
936+
extRequest.addProperty("ixdiag", ixDiag);
937+
return extRequest;
938+
}
939+
889940
private static ObjectNode givenImpExt(String siteId, String sid) {
890941
return mapper.valueToTree(ExtPrebid.of(null, ExtImpIx.of(siteId, null, sid)));
891942
}

src/test/resources/org/prebid/server/it/openrtb2/ix/test-auction-ix-request.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,14 @@
2020
"ext": {
2121
"gdpr": 0
2222
}
23+
},
24+
"ext": {
25+
"ixdiag": {
26+
"msd": 2,
27+
"msi": 2,
28+
"mfu": 0,
29+
"ren": false,
30+
"version": "6.29.1"
31+
}
2332
}
2433
}

src/test/resources/org/prebid/server/it/openrtb2/ix/test-ix-bid-request.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,13 @@
6262
}
6363
},
6464
"ixdiag": {
65-
"pbsv": "{{ pbs.java.version }}"
65+
"pbsv": "{{ pbs.java.version }}",
66+
"pbsp": "java",
67+
"msd": 2,
68+
"msi": 2,
69+
"mfu": 0,
70+
"ren": false,
71+
"version": "6.29.1"
6672
}
6773
}
6874
}

0 commit comments

Comments
 (0)