Skip to content

Commit d16f440

Browse files
author
zhihuiye
committed
added integration_type field to mobkoi bidder requests
1 parent ea32800 commit d16f440

File tree

5 files changed

+67
-8
lines changed

5 files changed

+67
-8
lines changed

src/main/java/org/prebid/server/bidder/mobkoi/MobkoiBidder.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import org.prebid.server.json.DecodeException;
1919
import org.prebid.server.json.JacksonMapper;
2020
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
21+
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
2122
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
2223
import org.prebid.server.proto.openrtb.ext.request.mobkoi.ExtImpMobkoi;
2324
import org.prebid.server.proto.openrtb.ext.response.BidType;
25+
import org.prebid.server.bidder.mobkoi.proto.MobkoiBidRequestExt;
2426
import org.prebid.server.util.BidderUtil;
2527
import org.prebid.server.util.HttpUtil;
2628

@@ -39,6 +41,9 @@ public class MobkoiBidder implements Bidder<BidRequest> {
3941
new TypeReference<>() {
4042
};
4143

44+
/**
45+
* The integration endpoint that will be used to send the bid requests to. Managed by the adapter configuration.
46+
*/
4247
private final String endpointUrl;
4348
private final JacksonMapper mapper;
4449

@@ -60,7 +65,7 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest bidRequ
6065
return Result.withError(BidderError.badInput(e.getMessage()));
6166
}
6267

63-
final String selectedEndpointUrl = resolveEndpoint(extImpMobkoi.getAdServerBaseUrl());
68+
final String selectedEndpointUrl = resolveEndpoint(extImpMobkoi.getIntegrationEndpoint());
6469

6570
return Result.withValue(BidderUtil.defaultRequest(
6671
modifyBidRequest(bidRequest, modifiedFirstImp),
@@ -104,10 +109,16 @@ private String resolveEndpoint(String customUri) {
104109
}
105110
}
106111

107-
private static BidRequest modifyBidRequest(BidRequest bidRequest, Imp modifiedFirstImp) {
112+
private BidRequest modifyBidRequest(BidRequest bidRequest, Imp modifiedFirstImp) {
108113
final User user = modifyUser(bidRequest.getUser());
109114
final List<Imp> imps = updateFirstImpWith(bidRequest.getImp(), modifiedFirstImp);
110-
return bidRequest.toBuilder().user(user).imp(imps).build();
115+
final ExtRequest requestExt = modifyReqExt(bidRequest.getExt());
116+
return bidRequest.toBuilder().user(user).imp(imps).ext(requestExt).build();
117+
}
118+
119+
private ExtRequest modifyReqExt(ExtRequest existingRequestExt) {
120+
final ExtRequest target = existingRequestExt != null ? existingRequestExt : ExtRequest.empty();
121+
return mapper.fillExtension(target, MobkoiBidRequestExt.of());
111122
}
112123

113124
private static User modifyUser(User user) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.prebid.server.bidder.mobkoi.proto;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.Value;
5+
6+
@Value(staticConstructor = "of")
7+
public class MobkoiBidRequestExt {
8+
9+
@JsonProperty("mobkoi")
10+
final Mobkoi mobkoi;
11+
12+
public static MobkoiBidRequestExt of() {
13+
return new MobkoiBidRequestExt(Mobkoi.of());
14+
}
15+
16+
@Value(staticConstructor = "of")
17+
public static class Mobkoi {
18+
19+
@JsonProperty("integration_type")
20+
final String integrationType = "pbs";
21+
}
22+
}

src/main/java/org/prebid/server/proto/openrtb/ext/request/mobkoi/ExtImpMobkoi.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ public class ExtImpMobkoi {
99
@JsonProperty("placementId")
1010
String placementId;
1111

12-
@JsonProperty("adServerBaseUrl")
13-
String adServerBaseUrl;
12+
/**
13+
* The integration endpoint that the bid requests will be sent to. For example, https://pbs.mobkoi.com/bid.
14+
*/
15+
@JsonProperty("integrationEndpoint")
16+
String integrationEndpoint;
1417
}

src/main/resources/static/bidder-params/mobkoi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"adServerBaseUrl": {
1212
"type": "string",
1313
"description": "Mobkoi's ad server url",
14-
"pattern": "^https?://[^.]+\\.mobkoi\\.com$"
14+
"pattern": "^https?://[^.]+\\.mobkoi\\.com(/.*)?$"
1515
}
1616
}
1717
}

src/test/java/org/prebid/server/bidder/mobkoi/MobkoiBidderTest.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,24 @@ public void makeHttpRequestsShouldOverrideUserExtAndSetConsent() {
160160
assertThat(result.getErrors()).isEmpty();
161161
}
162162

163+
@Test
164+
public void makeHttpRequestsShouldHasMobkoiExtSet() {
165+
// given
166+
final BidRequest bidRequest = givenBidRequest(identity());
167+
168+
// when
169+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
170+
171+
// then
172+
assertThat(result.getValue())
173+
.extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class))
174+
.extracting(request -> request.getExt())
175+
.extracting(ext -> ext.getProperty("mobkoi"))
176+
.extracting(mobkoi -> mobkoi.get("integration_type").asText())
177+
.hasSize(1).element(0)
178+
.isEqualTo("pbs");
179+
}
180+
163181
@Test
164182
public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProcessingException {
165183
// given
@@ -238,8 +256,13 @@ private static Imp givenImp(UnaryOperator<Imp.ImpBuilder> impCustomizer) {
238256
return impCustomizer.apply(Imp.builder().id("imp_id").ext(impExt("placementIdValue", null))).build();
239257
}
240258

241-
private static ObjectNode impExt(String placementId, String adServerBaseUrl) {
242-
return mapper.valueToTree(ExtPrebid.of(null, ExtImpMobkoi.of(placementId, adServerBaseUrl)));
259+
/**
260+
* @param placementId The placement id provided by Mobkoi.
261+
* @param integrationEndpoint The integration endpoint that will be used to send the bid requests to.
262+
* @return The imp ext.
263+
*/
264+
private static ObjectNode impExt(String placementId, String integrationEndpoint) {
265+
return mapper.valueToTree(ExtPrebid.of(null, ExtImpMobkoi.of(placementId, integrationEndpoint)));
243266
}
244267

245268
private static BidResponse givenBidResponse(UnaryOperator<Bid.BidBuilder> bidCustomizer) {

0 commit comments

Comments
 (0)