|
1 | 1 | package org.prebid.server.bidder.sparteo; |
2 | 2 |
|
3 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; |
| 4 | +import com.fasterxml.jackson.core.type.TypeReference; |
4 | 5 | import com.fasterxml.jackson.databind.JsonNode; |
5 | 6 | import com.fasterxml.jackson.databind.node.ObjectNode; |
6 | 7 | import com.iab.openrtb.request.BidRequest; |
|
22 | 23 | import org.prebid.server.json.JacksonMapper; |
23 | 24 | import org.prebid.server.proto.openrtb.ext.request.ExtPublisher; |
24 | 25 | import org.prebid.server.proto.openrtb.ext.request.sparteo.ExtImpSparteo; |
| 26 | +import org.prebid.server.proto.openrtb.ext.request.sparteo.ExtImpParamsSparteo; |
25 | 27 | import org.prebid.server.proto.openrtb.ext.response.BidType; |
26 | 28 | import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; |
27 | 29 | import org.prebid.server.util.BidderUtil; |
|
30 | 32 | import java.util.ArrayList; |
31 | 33 | import java.util.Collection; |
32 | 34 | import java.util.Collections; |
| 35 | +import java.util.HashMap; |
33 | 36 | import java.util.List; |
| 37 | +import java.util.Map; |
34 | 38 | import java.util.Objects; |
35 | 39 | import java.util.Optional; |
36 | 40 |
|
@@ -88,27 +92,45 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request |
88 | 92 | private ObjectNode buildImpExt(ObjectNode impExt, ExtImpSparteo bidderParams, JacksonMapper mapper) |
89 | 93 | throws JsonProcessingException { |
90 | 94 |
|
91 | | - impExt.remove("bidder"); |
| 95 | + final String adUnitCode = Optional.ofNullable(impExt.get("prebid")) |
| 96 | + .map(prebidNode -> prebidNode.get("adunitcode")) |
| 97 | + .filter(JsonNode::isTextual) |
| 98 | + .map(JsonNode::asText) |
| 99 | + .orElse(null); |
92 | 100 |
|
93 | | - final JsonNode sparteoNode = impExt.get("sparteo"); |
94 | | - final ObjectNode outgoingParamsNode; |
95 | | - |
96 | | - if (sparteoNode != null && sparteoNode.isObject() && sparteoNode.has("params") |
97 | | - && sparteoNode.get("params").isObject()) { |
98 | | - outgoingParamsNode = (ObjectNode) sparteoNode.get("params"); |
99 | | - } else { |
100 | | - outgoingParamsNode = impExt.putObject("sparteo").putObject("params"); |
101 | | - } |
102 | | - |
103 | | - final ObjectNode bidderParamsAsNode = mapper.mapper().convertValue(bidderParams, ObjectNode.class); |
104 | | - outgoingParamsNode.setAll(bidderParamsAsNode); |
| 101 | + final Map<String, JsonNode> sparteoProperties = Optional.ofNullable(impExt.get("sparteo")) |
| 102 | + .map(sparteoNode -> sparteoNode.get("params")) |
| 103 | + .filter(JsonNode::isObject) |
| 104 | + .map(paramsNode -> mapper.mapper().convertValue(paramsNode, |
| 105 | + new TypeReference<Map<String, JsonNode>>() { })) |
| 106 | + .orElse(Collections.emptyMap()); |
| 107 | + |
| 108 | + final Map<String, JsonNode> additionnalProperties = new HashMap<>(sparteoProperties); |
| 109 | + additionnalProperties.putAll(bidderParams.getAdditionalProperties()); |
| 110 | + |
| 111 | + final ExtImpParamsSparteo sparteoParams = ExtImpParamsSparteo.of( |
| 112 | + bidderParams.getNetworkId(), |
| 113 | + bidderParams.getCustom1(), |
| 114 | + bidderParams.getCustom2(), |
| 115 | + bidderParams.getCustom3(), |
| 116 | + bidderParams.getCustom4(), |
| 117 | + bidderParams.getCustom5(), |
| 118 | + adUnitCode, |
| 119 | + additionnalProperties); |
| 120 | + |
| 121 | + final ObjectNode ext = mapper.mapper().createObjectNode(); |
| 122 | + |
| 123 | + impExt.fields().forEachRemaining(entry -> { |
| 124 | + final String key = entry.getKey(); |
| 125 | + if (!key.equals("bidder") && !key.equals("sparteo")) { |
| 126 | + ext.set(key, entry.getValue()); |
| 127 | + } |
| 128 | + }); |
105 | 129 |
|
106 | | - final JsonNode prebidNode = impExt.get("prebid"); |
107 | | - if (prebidNode != null && prebidNode.has("adunitcode")) { |
108 | | - outgoingParamsNode.set("adUnitCode", prebidNode.get("adunitcode")); |
109 | | - } |
| 130 | + final ObjectNode sparteoParamsAsNode = mapper.mapper().convertValue(sparteoParams, ObjectNode.class); |
| 131 | + ext.putObject("sparteo").set("params", sparteoParamsAsNode); |
110 | 132 |
|
111 | | - return impExt; |
| 133 | + return ext; |
112 | 134 | } |
113 | 135 |
|
114 | 136 | private Site modifySite(Site site, String siteNetworkId, JacksonMapper mapper) { |
|
0 commit comments