Skip to content

Commit 8d691c4

Browse files
author
QuentinGallard
committed
SmileWanted endpoint now supports dynamic zoneId and integrates prebid server technology
1 parent 27d6364 commit 8d691c4

File tree

7 files changed

+244
-27
lines changed

7 files changed

+244
-27
lines changed

src/main/java/org/prebid/server/bidder/smilewanted/SmileWantedBidder.java

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
package org.prebid.server.bidder.smilewanted;
22

3+
import com.fasterxml.jackson.core.type.TypeReference;
34
import com.iab.openrtb.request.BidRequest;
45
import com.iab.openrtb.request.Imp;
56
import com.iab.openrtb.response.BidResponse;
67
import com.iab.openrtb.response.SeatBid;
78
import io.vertx.core.MultiMap;
8-
import io.vertx.core.http.HttpMethod;
99
import org.apache.commons.collections4.CollectionUtils;
1010
import org.prebid.server.bidder.Bidder;
1111
import org.prebid.server.bidder.model.BidderBid;
1212
import org.prebid.server.bidder.model.BidderCall;
1313
import org.prebid.server.bidder.model.BidderError;
1414
import org.prebid.server.bidder.model.HttpRequest;
1515
import org.prebid.server.bidder.model.Result;
16+
import org.prebid.server.exception.PreBidException;
1617
import org.prebid.server.json.DecodeException;
1718
import org.prebid.server.json.JacksonMapper;
19+
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
20+
import org.prebid.server.proto.openrtb.ext.request.smilewanted.ExtImpSmilewanted;
1821
import org.prebid.server.proto.openrtb.ext.response.BidType;
22+
import org.prebid.server.util.BidderUtil;
1923
import org.prebid.server.util.HttpUtil;
2024

2125
import java.util.Collections;
@@ -27,6 +31,11 @@ public class SmileWantedBidder implements Bidder<BidRequest> {
2731
private static final String SW_INTEGRATION_TYPE = "prebid_server";
2832
private static final String X_OPENRTB_VERSION = "2.5";
2933
private static final int DEFAULT_AT = 1;
34+
private static final String ZONE_ID_MACRO = "{{ZoneId}}";
35+
36+
private static final TypeReference<ExtPrebid<?, ExtImpSmilewanted>> SMILEWANTED_EXT_TYPE_REFERENCE =
37+
new TypeReference<>() {
38+
};
3039

3140
private final String endpointUrl;
3241
private final JacksonMapper mapper;
@@ -38,15 +47,30 @@ public SmileWantedBidder(String endpointUrl, JacksonMapper mapper) {
3847

3948
@Override
4049
public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request) {
50+
final ExtImpSmilewanted extImpSmilewanted;
51+
52+
try {
53+
extImpSmilewanted = parseImpExt(request.getImp().getFirst());
54+
} catch (PreBidException e) {
55+
return Result.withError(BidderError.badInput(e.getMessage()));
56+
}
57+
4158
final BidRequest outgoingRequest = request.toBuilder().at(DEFAULT_AT).build();
59+
final String url = endpointUrl.replace(ZONE_ID_MACRO, extImpSmilewanted.getZoneId());
4260

43-
return Result.withValue(HttpRequest.<BidRequest>builder()
44-
.method(HttpMethod.POST)
45-
.uri(endpointUrl)
46-
.headers(createHeaders())
47-
.payload(outgoingRequest)
48-
.body(mapper.encodeToBytes(outgoingRequest))
49-
.build());
61+
return Result.withValue(BidderUtil.defaultRequest(
62+
outgoingRequest,
63+
createHeaders(),
64+
url,
65+
mapper));
66+
}
67+
68+
private ExtImpSmilewanted parseImpExt(Imp imp) {
69+
try {
70+
return mapper.mapper().convertValue(imp.getExt(), SMILEWANTED_EXT_TYPE_REFERENCE).getBidder();
71+
} catch (IllegalArgumentException e) {
72+
throw new PreBidException("Missing bidder ext in impression with id: " + imp.getId());
73+
}
5074
}
5175

5276
private static MultiMap createHeaders() {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.prebid.server.proto.openrtb.ext.request.smilewanted;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.Value;
5+
6+
@Value(staticConstructor = "of")
7+
public class ExtImpSmilewanted {
8+
9+
@JsonProperty("zoneId")
10+
String zoneId;
11+
}

src/main/java/org/prebid/server/spring/config/bidder/SimpleWantedConfiguration.java renamed to src/main/java/org/prebid/server/spring/config/bidder/SmileWantedConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
@Configuration
1919
@PropertySource(value = "classpath:/bidder-config/smilewanted.yaml", factory = YamlPropertySourceFactory.class)
20-
public class SimpleWantedConfiguration {
20+
public class SmileWantedConfiguration {
2121

2222
private static final String BIDDER_NAME = "smilewanted";
2323

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
adapters:
22
smilewanted:
3-
endpoint: https://prebid-server.smilewanted.com
3+
endpoint: https://prebid-server.smilewanted.com/java/{{ZoneId}}
44
meta-info:
55
maintainer-email: [email protected]
66
app-media-types:

0 commit comments

Comments
 (0)