Skip to content

Commit 137c7fc

Browse files
committed
Use two separate DTOs for imp ext to brings more clarity
1 parent 1329f6c commit 137c7fc

2 files changed

Lines changed: 86 additions & 18 deletions

File tree

src/main/java/org/prebid/server/bidder/sparteo/SparteoBidder.java

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.prebid.server.bidder.sparteo;
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.core.type.TypeReference;
45
import com.fasterxml.jackson.databind.JsonNode;
56
import com.fasterxml.jackson.databind.node.ObjectNode;
67
import com.iab.openrtb.request.BidRequest;
@@ -22,6 +23,7 @@
2223
import org.prebid.server.json.JacksonMapper;
2324
import org.prebid.server.proto.openrtb.ext.request.ExtPublisher;
2425
import org.prebid.server.proto.openrtb.ext.request.sparteo.ExtImpSparteo;
26+
import org.prebid.server.proto.openrtb.ext.request.sparteo.ExtImpParamsSparteo;
2527
import org.prebid.server.proto.openrtb.ext.response.BidType;
2628
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
2729
import org.prebid.server.util.BidderUtil;
@@ -30,7 +32,9 @@
3032
import java.util.ArrayList;
3133
import java.util.Collection;
3234
import java.util.Collections;
35+
import java.util.HashMap;
3336
import java.util.List;
37+
import java.util.Map;
3438
import java.util.Objects;
3539
import java.util.Optional;
3640

@@ -88,27 +92,45 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
8892
private ObjectNode buildImpExt(ObjectNode impExt, ExtImpSparteo bidderParams, JacksonMapper mapper)
8993
throws JsonProcessingException {
9094

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);
92100

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+
});
105129

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);
110132

111-
return impExt;
133+
return ext;
112134
}
113135

114136
private Site modifySite(Site site, String siteNetworkId, JacksonMapper mapper) {
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.prebid.server.proto.openrtb.ext.request.sparteo;
2+
3+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.fasterxml.jackson.databind.JsonNode;
7+
import lombok.Value;
8+
9+
import java.util.Map;
10+
11+
@Value(staticConstructor = "of")
12+
@JsonInclude(JsonInclude.Include.NON_NULL)
13+
public class ExtImpParamsSparteo {
14+
15+
@JsonProperty("networkId")
16+
String networkId;
17+
18+
@JsonProperty("custom1")
19+
String custom1;
20+
21+
@JsonProperty("custom2")
22+
String custom2;
23+
24+
@JsonProperty("custom3")
25+
String custom3;
26+
27+
@JsonProperty("custom4")
28+
String custom4;
29+
30+
@JsonProperty("custom5")
31+
String custom5;
32+
33+
@JsonProperty("adUnitCode")
34+
String adUnitCode;
35+
36+
@JsonAnyGetter
37+
Map<String, JsonNode> additionalProperties;
38+
39+
@JsonAnyGetter
40+
public Map<String, JsonNode> getAdditionalProperties() {
41+
if (additionalProperties != null && additionalProperties.isEmpty()) {
42+
return null;
43+
}
44+
return additionalProperties;
45+
}
46+
}

0 commit comments

Comments
 (0)