Skip to content

Commit c9ceec1

Browse files
fix comments
1 parent 3b1abb9 commit c9ceec1

4 files changed

Lines changed: 62 additions & 28 deletions

File tree

src/main/java/org/prebid/server/bidder/nativery/NativeryBidder.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.prebid.server.json.JacksonMapper;
2323
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
2424
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
25-
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
2625
import org.prebid.server.proto.openrtb.ext.request.nativery.ExtImpNativery;
2726
import org.prebid.server.proto.openrtb.ext.response.BidType;
2827
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
@@ -70,7 +69,7 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
7069
for (Imp imp : request.getImp()) {
7170
try {
7271
final ExtImpNativery extImp = parseImpExt(imp);
73-
if (widgetId == null && extImp != null && StringUtils.isNotBlank(extImp.getWidgetId())) {
72+
if (widgetId == null && StringUtils.isNotBlank(extImp.getWidgetId())) {
7473
widgetId = extImp.getWidgetId();
7574
}
7675
validImps.add(imp);
@@ -83,13 +82,16 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
8382
return Result.of(Collections.emptyList(), errors);
8483
}
8584

86-
final ExtRequest updatedExt = buildRequestExtWithNativery(request.getExt(), isAmp, widgetId);
85+
// 🟢 Zmienione — zamieniamy ExtRequest na ObjectNode
86+
final ObjectNode originalExt = request.getExt() != null
87+
? mapper.mapper().convertValue(request.getExt(), ObjectNode.class)
88+
: null;
89+
final ExtRequest updatedExt = buildRequestExtWithNativery(originalExt, isAmp, widgetId);
8790

8891
for (Imp imp : validImps) {
8992
final BidRequest singleImpRequest = request.toBuilder()
9093
.imp(Collections.singletonList(imp))
91-
.ext(updatedExt)
92-
.cur(Collections.singletonList(DEFAULT_CURRENCY))
94+
.ext(updatedExt) // ✅ teraz typ się zgadza
9395
.build();
9496

9597
httpRequests.add(BidderUtil.defaultRequest(singleImpRequest, endpointUrl, mapper));
@@ -98,6 +100,18 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
98100
return Result.of(httpRequests, errors);
99101
}
100102

103+
private boolean isAmpRequest(BidRequest request) {
104+
if (request.getSite() != null && request.getSite().getExt() != null) {
105+
final JsonNode siteExt = mapper.mapper().valueToTree(request.getSite().getExt());
106+
final JsonNode ampNode = siteExt.get("amp");
107+
if (ampNode != null && ampNode.asInt(0) == 1) {
108+
return true;
109+
}
110+
}
111+
112+
return false;
113+
}
114+
101115
private ExtImpNativery parseImpExt(Imp imp) {
102116
try {
103117
final ExtPrebid<?, ExtImpNativery> ext =
@@ -108,11 +122,13 @@ private ExtImpNativery parseImpExt(Imp imp) {
108122
}
109123
}
110124

111-
private ExtRequest buildRequestExtWithNativery(ExtRequest originalExt, boolean isAmp, String widgetId) {
112-
final ObjectNode extNode = mapper.mapper().convertValue(originalExt, ObjectNode.class);
113-
final ObjectNode root = extNode != null ? extNode : mapper.mapper().createObjectNode();
125+
private ExtRequest buildRequestExtWithNativery(ObjectNode originalExt, boolean isAmp, String widgetId) {
126+
final ObjectNode root = originalExt != null
127+
? originalExt.deepCopy()
128+
: mapper.mapper().createObjectNode();
114129

115130
final ObjectNode nativeryNode = root.with("nativery");
131+
116132
nativeryNode.put("isAmp", isAmp);
117133
if (widgetId != null) {
118134
nativeryNode.put("widgetId", widgetId);
@@ -121,19 +137,6 @@ private ExtRequest buildRequestExtWithNativery(ExtRequest originalExt, boolean i
121137
return mapper.mapper().convertValue(root, ExtRequest.class);
122138
}
123139

124-
private boolean isAmpRequest(BidRequest request) {
125-
if (request.getSite() == null || request.getSite().getExt() == null) {
126-
return false;
127-
}
128-
try {
129-
final ExtSite extSite = mapper.mapper().convertValue(request.getSite().getExt(), ExtSite.class);
130-
final Integer amp = extSite != null ? extSite.getAmp() : null;
131-
return amp != null && amp == 1;
132-
} catch (Exception e) {
133-
return false;
134-
}
135-
}
136-
137140
@Override
138141
public Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
139142
final List<BidderError> errors = new ArrayList<>();

src/main/java/org/prebid/server/spring/config/bidder/NativeryBidderConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ BidderConfigurationProperties configurationProperties() {
2929

3030
@Bean
3131
BidderDeps nativeryBidderDeps(BidderConfigurationProperties nativeryConfigurationProperties,
32-
@NotBlank @Value("${external-url}") String externalUrl,
33-
JacksonMapper mapper) {
32+
@NotBlank @Value("${external-url}") String externalUrl,
33+
JacksonMapper mapper) {
3434

3535
return BidderDepsAssembler.forBidder(BIDDER_NAME)
3636
.withConfig(nativeryConfigurationProperties)

src/main/resources/bidder-config/nativery.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ adapters:
88
- banner
99
- video
1010
- native
11-
supported-vendors: []
12-
vendor-id: 0
11+
supported-vendors:
12+
vendor-id: 1133

src/test/java/org/prebid/server/bidder/nativery/NativeryBidderTest.java

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.prebid.server.bidder.model.HttpResponse;
2020
import org.prebid.server.bidder.model.Result;
2121
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
22+
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
2223
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
2324
import org.prebid.server.proto.openrtb.ext.request.nativery.ExtImpNativery;
2425
import org.prebid.server.proto.openrtb.ext.response.BidType;
@@ -128,6 +129,37 @@ public void makeHttpRequestsShouldSetExtWithWidgetId() {
128129
.containsOnly("widget1");
129130
}
130131

132+
@Test
133+
public void makeHttpRequestsShouldPreserveOriginalExtFields() {
134+
// given
135+
final ObjectNode extNode = mapper.createObjectNode();
136+
extNode.put("accountId", "acc-123");
137+
138+
final BidRequest bidRequest = givenBidRequest(
139+
requestBuilder -> {
140+
try {
141+
return requestBuilder.ext(
142+
mapper.readValue(mapper.writeValueAsString(extNode), ExtRequest.class)
143+
);
144+
} catch (JsonProcessingException e) {
145+
throw new RuntimeException(e);
146+
}
147+
},
148+
UnaryOperator.identity());
149+
150+
// when
151+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
152+
153+
// then
154+
assertThat(result.getErrors()).isEmpty();
155+
156+
final ObjectNode resultingExt = mapper.convertValue(
157+
result.getValue().get(0).getPayload().getExt(), ObjectNode.class);
158+
159+
assertThat(resultingExt.path("accountId").asText()).isEqualTo("acc-123");
160+
assertThat(resultingExt.path("nativery").path("widgetId").asText()).isEqualTo("widget1");
161+
}
162+
131163
@Test
132164
public void makeHttpRequestsShouldSetExtWithAmpTrue() {
133165
// given
@@ -169,7 +201,7 @@ public void makeHttpRequestsShouldReturnErrorIfImpExtCannotBeParsed() {
169201
}
170202

171203
@Test
172-
public void makeHttpRequestsShouldSetDefaultCurrency() {
204+
public void makeHttpRequestsShouldNotSetCurrencyIfNotProvided() {
173205
// given
174206
final BidRequest bidRequest = givenBidRequest(UnaryOperator.identity());
175207

@@ -181,8 +213,7 @@ public void makeHttpRequestsShouldSetDefaultCurrency() {
181213
assertThat(result.getValue())
182214
.extracting(HttpRequest::getPayload)
183215
.extracting(BidRequest::getCur)
184-
.extracting(currencies -> currencies.get(0))
185-
.containsOnly(DEFAULT_CURRENCY);
216+
.allSatisfy(cur -> assertThat(cur).isNull());
186217
}
187218

188219
@Test

0 commit comments

Comments
 (0)