Skip to content

Commit 4c0ad2e

Browse files
committed
CTMBNara Review
1 parent e35e27f commit 4c0ad2e

File tree

2 files changed

+34
-81
lines changed

2 files changed

+34
-81
lines changed

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

Lines changed: 33 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@
3232
import java.util.ArrayList;
3333
import java.util.Collection;
3434
import java.util.Collections;
35-
import java.util.Iterator;
3635
import java.util.List;
37-
import java.util.Map;
3836
import java.util.Objects;
3937
import java.util.Optional;
4038

@@ -58,21 +56,18 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
5856
String siteNetworkId = null;
5957

6058
for (Imp imp : request.getImp()) {
61-
try {
62-
final ExtImpSparteo bidderParams = parseExtImp(imp);
63-
64-
if (siteNetworkId == null && bidderParams.getNetworkId() != null) {
65-
siteNetworkId = bidderParams.getNetworkId();
59+
if (siteNetworkId == null) {
60+
try {
61+
siteNetworkId = parseExtImp(imp).getNetworkId();
62+
} catch (PreBidException e) {
63+
errors.add(BidderError.badInput(
64+
"ignoring imp id=%s, error processing ext: %s".formatted(
65+
imp.getId(), e.getMessage())));
6666
}
67-
68-
final ObjectNode modifiedExt = modifyImpExt(imp);
69-
70-
modifiedImps.add(imp.toBuilder().ext(modifiedExt).build());
71-
} catch (PreBidException e) {
72-
errors.add(BidderError.badInput(
73-
"ignoring imp id=%s, error processing ext: %s".formatted(
74-
imp.getId(), e.getMessage())));
7567
}
68+
69+
final ObjectNode modifiedExt = modifyImpExt(imp);
70+
modifiedImps.add(imp.toBuilder().ext(modifiedExt).build());
7671
}
7772

7873
if (modifiedImps.isEmpty()) {
@@ -99,24 +94,10 @@ private ExtImpSparteo parseExtImp(Imp imp) {
9994

10095
private static ObjectNode modifyImpExt(Imp imp) {
10196
final ObjectNode modifiedImpExt = imp.getExt().deepCopy();
102-
final JsonNode sparteoJsonNode = modifiedImpExt.get("sparteo");
103-
final ObjectNode sparteoNode = sparteoJsonNode == null || !sparteoJsonNode.isObject()
104-
? modifiedImpExt.putObject("sparteo")
105-
: (ObjectNode) sparteoJsonNode;
106-
107-
final JsonNode paramsJsonNode = sparteoNode.get("params");
108-
final ObjectNode paramsNode = paramsJsonNode == null || !paramsJsonNode.isObject()
109-
? sparteoNode.putObject("params")
110-
: (ObjectNode) paramsJsonNode;
111-
97+
final ObjectNode sparteoNode = modifiedImpExt.putObject("sparteo");
11298
final JsonNode bidderJsonNode = modifiedImpExt.remove("bidder");
113-
if (bidderJsonNode != null && bidderJsonNode.isObject()) {
114-
final Iterator<Map.Entry<String, JsonNode>> fields = bidderJsonNode.fields();
115-
while (fields.hasNext()) {
116-
final Map.Entry<String, JsonNode> field = fields.next();
117-
paramsNode.set(field.getKey(), field.getValue());
118-
}
119-
}
99+
sparteoNode.set("params", bidderJsonNode);
100+
120101
return modifiedImpExt;
121102
}
122103

@@ -179,6 +160,26 @@ private List<BidderBid> extractBids(BidResponse bidResponse, List<BidderError> e
179160
.toList();
180161
}
181162

163+
private BidderBid toBidderBid(Bid bid, String currency, List<BidderError> errors) {
164+
try {
165+
final BidType bidType = getBidType(bid);
166+
167+
final Integer mtype = switch (bidType) {
168+
case banner -> 1;
169+
case video -> 2;
170+
case xNative -> 4;
171+
default -> null;
172+
};
173+
174+
final Bid bidWithMtype = mtype != null ? bid.toBuilder().mtype(mtype).build() : bid;
175+
176+
return BidderBid.of(bidWithMtype, bidType, currency);
177+
} catch (PreBidException e) {
178+
errors.add(BidderError.badServerResponse(e.getMessage()));
179+
return null;
180+
}
181+
}
182+
182183
private BidType getBidType(Bid bid) throws PreBidException {
183184
final BidType bidType = Optional.ofNullable(bid.getExt())
184185
.map(ext -> ext.get("prebid"))
@@ -203,24 +204,4 @@ private ExtBidPrebid parseExtBidPrebid(JsonNode prebidNode) {
203204
return null;
204205
}
205206
}
206-
207-
private BidderBid toBidderBid(Bid bid, String currency, List<BidderError> errors) {
208-
try {
209-
final BidType bidType = getBidType(bid);
210-
211-
final Integer mtype = switch (bidType) {
212-
case banner -> 1;
213-
case video -> 2;
214-
case xNative -> 4;
215-
default -> null;
216-
};
217-
218-
final Bid bidWithMtype = mtype != null ? bid.toBuilder().mtype(mtype).build() : bid;
219-
220-
return BidderBid.of(bidWithMtype, bidType, currency);
221-
} catch (PreBidException e) {
222-
errors.add(BidderError.badServerResponse(e.getMessage()));
223-
return null;
224-
}
225-
}
226207
}

src/test/java/org/prebid/server/bidder/sparteo/SparteoBidderTest.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ public void makeHttpRequestsShouldReturnErrorWhenImpExtIsInvalid() {
6363
assertThat(result.getErrors()).hasSize(1)
6464
.allSatisfy(error -> assertThat(error.getMessage())
6565
.startsWith("ignoring imp id=impId, error processing ext: invalid imp.ext"));
66-
assertThat(result.getValue()).isEmpty();
6766
}
6867

6968
@Test
@@ -76,7 +75,6 @@ public void makeHttpRequestsShouldReturnErrorWhenAllImpsAreInvalid() {
7675
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
7776

7877
// then
79-
assertThat(result.getValue()).isEmpty();
8078
assertThat(result.getErrors()).hasSize(1);
8179
}
8280

@@ -101,7 +99,7 @@ public void makeHttpRequestsShouldReturnPartialResultWhenSomeImpsAreInvalid() {
10199
.flatExtracting(BidRequest::getImp)
102100
.extracting(Imp::getExt)
103101
.extracting((JsonNode ext) -> ext.at("/sparteo/params/key").asText())
104-
.containsExactly("value");
102+
.containsExactly("", "value");
105103
}
106104

107105
@Test
@@ -171,32 +169,6 @@ public void makeHttpRequestsShouldUseFirstNetworkIdWhenMultipleImpsDefineIt() {
171169
.containsExactly("id1");
172170
}
173171

174-
@Test
175-
public void makeHttpRequestsShouldMergeBidderAndSparteoParams() {
176-
// given
177-
final ObjectNode impExt = mapper.createObjectNode();
178-
impExt.set("bidder", mapper.createObjectNode().put("paramFromBidder", "value1"));
179-
final ObjectNode sparteoNode = impExt.putObject("sparteo");
180-
sparteoNode.putObject("params").put("paramFromSparteo", "value2");
181-
182-
final BidRequest bidRequest = givenBidRequest(givenImp(imp -> imp.ext(impExt)));
183-
184-
// when
185-
final Result<List<HttpRequest<BidRequest>>> result = sparteoBidder.makeHttpRequests(bidRequest);
186-
187-
// then
188-
assertThat(result.getErrors()).isEmpty();
189-
assertThat(result.getValue())
190-
.extracting(HttpRequest::getPayload)
191-
.flatExtracting(BidRequest::getImp)
192-
.extracting(Imp::getExt)
193-
.extracting(ext -> ext.at("/sparteo/params"))
194-
.allSatisfy(params -> {
195-
assertThat(params.at("/paramFromBidder").asText()).isEqualTo("value1");
196-
assertThat(params.at("/paramFromSparteo").asText()).isEqualTo("value2");
197-
});
198-
}
199-
200172
@Test
201173
public void makeHttpRequestsShouldOverwriteSparteoParamsWithBidderParamsOnConflict() {
202174
// given

0 commit comments

Comments
 (0)