Skip to content

Commit c61b60b

Browse files
Admatic: Update headers for adapter (#3732)
1 parent 8dbce72 commit c61b60b

File tree

2 files changed

+50
-5
lines changed

2 files changed

+50
-5
lines changed

src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.fasterxml.jackson.core.type.TypeReference;
44
import com.iab.openrtb.request.BidRequest;
5+
import com.iab.openrtb.request.Device;
56
import com.iab.openrtb.request.Imp;
67
import com.iab.openrtb.response.Bid;
78
import com.iab.openrtb.response.BidResponse;
89
import com.iab.openrtb.response.SeatBid;
10+
import io.vertx.core.MultiMap;
911
import org.apache.commons.collections4.CollectionUtils;
1012
import org.prebid.server.bidder.Bidder;
1113
import org.prebid.server.bidder.model.BidderBid;
@@ -55,7 +57,11 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
5557
try {
5658
final AdmaticImpExt impExt = parseImpExt(imp);
5759
final BidRequest modifiedBidRequest = request.toBuilder().imp(Collections.singletonList(imp)).build();
58-
requests.add(BidderUtil.defaultRequest(modifiedBidRequest, resolveEndpoint(impExt), mapper));
60+
requests.add(BidderUtil.defaultRequest(
61+
modifiedBidRequest,
62+
headers(modifiedBidRequest.getDevice()),
63+
resolveEndpoint(impExt),
64+
mapper));
5965
} catch (PreBidException e) {
6066
errors.add(BidderError.badInput(e.getMessage()));
6167
}
@@ -76,6 +82,18 @@ private String resolveEndpoint(AdmaticImpExt impExt) {
7682
return endpointUrl.replace(HOST_MACRO, HttpUtil.encodeUrl(impExt.getHost()));
7783
}
7884

85+
private MultiMap headers(Device device) {
86+
final MultiMap headers = HttpUtil.headers();
87+
88+
if (device != null) {
89+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIpv6());
90+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIp());
91+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, device.getUa());
92+
}
93+
94+
return headers;
95+
}
96+
7997
@Override
8098
public Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
8199
try {

src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.iab.openrtb.request.Audio;
55
import com.iab.openrtb.request.Banner;
66
import com.iab.openrtb.request.BidRequest;
7+
import com.iab.openrtb.request.Device;
78
import com.iab.openrtb.request.Imp;
89
import com.iab.openrtb.request.Native;
910
import com.iab.openrtb.request.Video;
@@ -36,6 +37,8 @@
3637
import static org.prebid.server.util.HttpUtil.ACCEPT_HEADER;
3738
import static org.prebid.server.util.HttpUtil.APPLICATION_JSON_CONTENT_TYPE;
3839
import static org.prebid.server.util.HttpUtil.CONTENT_TYPE_HEADER;
40+
import static org.prebid.server.util.HttpUtil.USER_AGENT_HEADER;
41+
import static org.prebid.server.util.HttpUtil.X_FORWARDED_FOR_HEADER;
3942
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
4043

4144
public class AdmaticBidderTest extends VertxTest {
@@ -95,10 +98,34 @@ public void makeHttpRequestsShouldReturnExpectedHeaders() {
9598
// then
9699
assertThat(result.getValue()).hasSize(1).first()
97100
.extracting(HttpRequest::getHeaders)
98-
.satisfies(headers -> assertThat(headers.get(CONTENT_TYPE_HEADER))
99-
.isEqualTo(APPLICATION_JSON_CONTENT_TYPE))
100-
.satisfies(headers -> assertThat(headers.get(ACCEPT_HEADER))
101-
.isEqualTo(APPLICATION_JSON_VALUE));
101+
.satisfies(headers -> {
102+
assertThat(headers.get(CONTENT_TYPE_HEADER)).isEqualTo(APPLICATION_JSON_CONTENT_TYPE);
103+
assertThat(headers.get(ACCEPT_HEADER)).isEqualTo(APPLICATION_JSON_VALUE);
104+
});
105+
assertThat(result.getErrors()).isEmpty();
106+
}
107+
108+
@Test
109+
public void makeHttpRequestsShouldReturnRequestsWithHeadersIfDeviceIsPresent() {
110+
// given
111+
final BidRequest bidRequest = givenBidRequest(identity())
112+
.toBuilder()
113+
.device(Device.builder().ua("ua").ip("ip").ipv6("ipv6").build())
114+
.build();
115+
116+
// when
117+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
118+
119+
// then
120+
assertThat(result.getErrors()).isEmpty();
121+
assertThat(result.getValue()).hasSize(1).first()
122+
.extracting(HttpRequest::getHeaders)
123+
.satisfies(headers -> {
124+
assertThat(headers.get(CONTENT_TYPE_HEADER)).isEqualTo(APPLICATION_JSON_CONTENT_TYPE);
125+
assertThat(headers.get(ACCEPT_HEADER)).isEqualTo(APPLICATION_JSON_VALUE);
126+
assertThat(headers.get(USER_AGENT_HEADER)).isEqualTo("ua");
127+
assertThat(headers.get(X_FORWARDED_FOR_HEADER)).isEqualTo("ipv6");
128+
});
102129
assertThat(result.getErrors()).isEmpty();
103130
}
104131

0 commit comments

Comments
 (0)