Skip to content

Commit 1822c12

Browse files
authored
MobileFuse Adapter: Remove tagid_src and pub_id params (#3915)
1 parent d390d05 commit 1822c12

File tree

7 files changed

+45
-98
lines changed

7 files changed

+45
-98
lines changed

src/main/java/org/prebid/server/bidder/mobilefuse/MobilefuseBidder.java

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.prebid.server.util.BidderUtil;
2424
import org.prebid.server.util.HttpUtil;
2525

26+
import java.util.ArrayList;
2627
import java.util.Collection;
2728
import java.util.Collections;
2829
import java.util.List;
@@ -45,64 +46,62 @@ public MobilefuseBidder(String endpointUrl, JacksonMapper mapper) {
4546

4647
@Override
4748
public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request) {
48-
final String endpoint = request.getImp().stream()
49-
.map(this::parseImpExt)
50-
.filter(Objects::nonNull)
51-
.findFirst()
52-
.map(this::makeUrl)
53-
.orElse(null);
54-
55-
if (endpoint == null) {
56-
return Result.withError(BidderError.badInput("Invalid ExtImpMobilefuse value"));
49+
final List<Imp> modifiedImps = new ArrayList<>();
50+
final List<BidderError> errors = new ArrayList<>();
51+
52+
for (Imp imp : request.getImp()) {
53+
try {
54+
if (!isValidImp(imp)) {
55+
continue;
56+
}
57+
58+
final ExtImpMobilefuse extImp = parseImpExt(imp);
59+
modifiedImps.add(modifyImp(imp, extImp));
60+
} catch (PreBidException e) {
61+
errors.add(BidderError.badInput(e.getMessage()));
62+
}
5763
}
5864

59-
final List<Imp> modifiedImps = request.getImp().stream()
60-
.map(this::modifyImp)
61-
.filter(Objects::nonNull)
62-
.toList();
65+
if (!errors.isEmpty()) {
66+
return Result.withErrors(errors);
67+
}
6368

6469
if (modifiedImps.isEmpty()) {
6570
return Result.withError(BidderError.badInput("No valid imps"));
6671
}
6772

6873
final BidRequest modifiedRequest = request.toBuilder().imp(modifiedImps).build();
69-
return Result.withValue(BidderUtil.defaultRequest(modifiedRequest, endpoint, mapper));
74+
return Result.withValue(BidderUtil.defaultRequest(modifiedRequest, endpointUrl, mapper));
7075
}
7176

72-
private Imp modifyImp(Imp imp) {
73-
if (imp.getBanner() == null && imp.getVideo() == null && imp.getXNative() == null) {
74-
return null;
75-
}
76-
77-
final ExtImpMobilefuse impExt = parseImpExt(imp);
78-
final ObjectNode skadn = parseSkadn(imp.getExt());
79-
return imp.toBuilder()
80-
.tagid(Objects.toString(impExt != null ? impExt.getPlacementId() : null, "0"))
81-
.ext(skadn != null ? mapper.mapper().createObjectNode().set(SKADN_PROPERTY_NAME, skadn) : null)
82-
.build();
77+
private static boolean isValidImp(Imp imp) {
78+
return imp.getBanner() != null || imp.getVideo() != null || imp.getXNative() != null;
8379
}
8480

8581
private ExtImpMobilefuse parseImpExt(Imp imp) {
8682
try {
8783
return mapper.mapper().convertValue(imp.getExt(), MOBILEFUSE_EXT_TYPE_REFERENCE).getBidder();
8884
} catch (IllegalArgumentException e) {
89-
return null;
85+
throw new PreBidException("Error parsing ExtImpMobilefuse value: %s".formatted(e.getMessage()));
9086
}
9187
}
9288

89+
private Imp modifyImp(Imp imp, ExtImpMobilefuse extImp) {
90+
final ObjectNode skadn = parseSkadn(imp.getExt());
91+
return imp.toBuilder()
92+
.tagid(Objects.toString(extImp.getPlacementId(), "0"))
93+
.ext(skadn != null ? mapper.mapper().createObjectNode().set(SKADN_PROPERTY_NAME, skadn) : null)
94+
.build();
95+
}
96+
9397
private ObjectNode parseSkadn(ObjectNode impExt) {
9498
try {
9599
return mapper.mapper().convertValue(impExt.get(SKADN_PROPERTY_NAME), ObjectNode.class);
96100
} catch (IllegalArgumentException e) {
97-
return null;
101+
throw new PreBidException(e.getMessage());
98102
}
99103
}
100104

101-
private String makeUrl(ExtImpMobilefuse extImp) {
102-
final String baseUrl = endpointUrl + Objects.toString(extImp.getPublisherId(), "0");
103-
return "ext".equals(extImp.getTagidSrc()) ? baseUrl + "&tagid_src=ext" : baseUrl;
104-
}
105-
106105
@Override
107106
public final Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
108107
try {

src/main/java/org/prebid/server/proto/openrtb/ext/request/mobilefuse/ExtImpMobilefuse.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,4 @@ public class ExtImpMobilefuse {
1111

1212
@JsonProperty("placement_id")
1313
Integer placementId;
14-
15-
@JsonProperty("pub_id")
16-
Integer publisherId;
17-
18-
@JsonProperty("tagid_src")
19-
String tagidSrc;
2014
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
adapters:
22
mobilefuse:
3-
endpoint: http://mfx.mobilefuse.com/openrtb?pub_id=
3+
endpoint: http://mfx.mobilefuse.com/openrtb
44
ortb-version: "2.6"
55
endpoint-compression: gzip
66
# This bidder does not operate globally. Please consider setting "disabled: true" outside of the following regions:

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,9 @@
77
"placement_id": {
88
"type": "integer",
99
"description": "An ID which identifies this specific inventory placement"
10-
},
11-
"pub_id": {
12-
"type": "integer",
13-
"description": "An ID which identifies the publisher selling the inventory."
14-
},
15-
"tagid_src": {
16-
"type": "string",
17-
"description": "ext if passing publisher's ids, empty if passing MobileFuse IDs in placement_id field. Defaults to empty"
1810
}
1911
},
2012
"required": [
21-
"placement_id",
22-
"pub_id"
13+
"placement_id"
2314
]
2415
}

src/test/java/org/prebid/server/bidder/mobilefuse/MobilefuseBidderTest.java

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@
3636

3737
public class MobilefuseBidderTest extends VertxTest {
3838

39-
private static final String ENDPOINT_URL = "https://test.endpoint.com/openrtb?pub_id=";
39+
private static final String ENDPOINT_URL = "https://test.endpoint.com/openrtb";
4040

4141
private final MobilefuseBidder target = new MobilefuseBidder(ENDPOINT_URL, jacksonMapper);
4242

4343
private static Imp givenImp(Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer) {
4444
return impCustomizer.apply(Imp.builder()
4545
.id("imp_id")
4646
.ext(mapper.valueToTree(ExtPrebid.of(null,
47-
ExtImpMobilefuse.of(1, 2, "tagidSrc")))))
47+
ExtImpMobilefuse.of(1)))))
4848
.build();
4949
}
5050

@@ -84,15 +84,18 @@ public void makeHttpRequestsShouldReturnErrorIfNoValidExtFound() {
8484
// given
8585
final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder
8686
.id("456")
87-
.banner(null)
87+
.banner(Banner.builder().build())
8888
.ext(mapper.valueToTree(ExtPrebid.of(null, mapper.createArrayNode()))));
8989

9090
// when
9191
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
9292

9393
// then
94-
assertThat(result.getErrors())
95-
.containsExactly(BidderError.badInput("Invalid ExtImpMobilefuse value"));
94+
assertThat(result.getErrors()).hasSize(1)
95+
.allSatisfy(error -> {
96+
assertThat(error.getMessage()).startsWith("Error parsing ExtImpMobilefuse value:");
97+
assertThat(error.getType()).isEqualTo(BidderError.Type.bad_input);
98+
});
9699
assertThat(result.getValue()).isEmpty();
97100
}
98101

@@ -102,44 +105,6 @@ public void creationShouldFailOnInvalidEndpointUrl() {
102105
.isThrownBy(() -> new MobilefuseBidder("invalid_url", jacksonMapper));
103106
}
104107

105-
@Test
106-
public void makeHttpRequestsShouldCreateCorrectURLWhenTagidSrcEqualsExt() {
107-
// given
108-
final BidRequest bidRequest = givenBidRequest(
109-
impBuilder -> impBuilder
110-
.banner(Banner.builder().build())
111-
.ext(mapper.valueToTree(ExtPrebid.of(null,
112-
ExtImpMobilefuse.of(1, 2, "ext")))));
113-
114-
// when
115-
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
116-
117-
// then
118-
assertThat(result.getErrors()).isEmpty();
119-
assertThat(result.getValue())
120-
.extracting(HttpRequest::getUri)
121-
.containsExactly("https://test.endpoint.com/openrtb?pub_id=2&tagid_src=ext");
122-
}
123-
124-
@Test
125-
public void makeHttpRequestsShouldSetPubIdToZeroIfPublisherIdNotPresentInRequest() {
126-
// given
127-
final BidRequest bidRequest = givenBidRequest(
128-
impBuilder -> impBuilder
129-
.banner(Banner.builder().build())
130-
.ext(mapper.valueToTree(ExtPrebid.of(null,
131-
ExtImpMobilefuse.of(1, null, null)))));
132-
133-
// when
134-
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
135-
136-
// then
137-
assertThat(result.getErrors()).isEmpty();
138-
assertThat(result.getValue())
139-
.extracting(HttpRequest::getUri)
140-
.containsExactly("https://test.endpoint.com/openrtb?pub_id=0");
141-
}
142-
143108
@Test
144109
public void makeHttpRequestsShouldReturnErrorIfNoValidImpsFound() {
145110
// given
@@ -193,7 +158,7 @@ public void makeHttpRequestsShouldModifyImpTagId() {
193158
.banner(Banner.builder().build())
194159
.tagid("some tag id")
195160
.ext(mapper.valueToTree(ExtPrebid.of(null,
196-
ExtImpMobilefuse.of(1, 2, "ext")))));
161+
ExtImpMobilefuse.of(1)))));
197162

198163
// when
199164
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
@@ -212,7 +177,7 @@ public void makeHttpRequestsShouldModifyImpWithAddingSkadnWhenSkadnIsPresent() {
212177
// given
213178
final ObjectNode skadn = mapper.createObjectNode().put("something", "something");
214179
final ObjectNode impExt = mapper.createObjectNode();
215-
impExt.set("bidder", mapper.valueToTree(ExtImpMobilefuse.of(1, 2, "ext")));
180+
impExt.set("bidder", mapper.valueToTree(ExtImpMobilefuse.of(1)));
216181
impExt.set("skadn", skadn);
217182
final BidRequest bidRequest = givenBidRequest(
218183
impBuilder -> impBuilder.banner(Banner.builder().build()).ext(impExt));

src/test/java/org/prebid/server/it/MobilefuseTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class MobilefuseTest extends IntegrationTest {
1818
@Test
1919
public void openrtb2AuctionShouldRespondWithBidsFromMobilefuse() throws IOException, JSONException {
2020
// given
21-
WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/mobilefuse-exchange/1111&tagid_src=ext"))
21+
WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/mobilefuse-exchange/"))
2222
.withRequestBody(equalToJson(jsonFrom("openrtb2/mobilefuse/test-mobilefuse-bid-request.json")))
2323
.willReturn(aResponse().withBody(jsonFrom("openrtb2/mobilefuse/test-mobilefuse-bid-response.json"))));
2424

src/test/resources/org/prebid/server/it/openrtb2/mobilefuse/test-auction-mobilefuse-request.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
"tagid": "tag_id",
1111
"ext": {
1212
"mobilefuse": {
13-
"placement_id": 999999,
14-
"pub_id": 1111,
15-
"tagid_src": "ext"
13+
"placement_id": 999999
1614
}
1715
}
1816
}

0 commit comments

Comments
 (0)