Skip to content

Commit

Permalink
Admatic: Add headers #3707
Browse files Browse the repository at this point in the history
  • Loading branch information
przemkaczmarek committed Feb 6, 2025
1 parent f978b0e commit 5c3c1ba
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.iab.openrtb.request.BidRequest;
import com.iab.openrtb.request.Device;
import com.iab.openrtb.request.Imp;
import com.iab.openrtb.response.Bid;
import com.iab.openrtb.response.BidResponse;
import com.iab.openrtb.response.SeatBid;
import io.vertx.core.MultiMap;
import org.apache.commons.collections4.CollectionUtils;
import org.prebid.server.bidder.Bidder;
import org.prebid.server.bidder.model.BidderBid;
Expand Down Expand Up @@ -55,7 +57,10 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
try {
final AdmaticImpExt impExt = parseImpExt(imp);
final BidRequest modifiedBidRequest = request.toBuilder().imp(Collections.singletonList(imp)).build();
requests.add(BidderUtil.defaultRequest(modifiedBidRequest, resolveEndpoint(impExt), mapper));
requests.add(BidderUtil.defaultRequest(
modifiedBidRequest,
headers(modifiedBidRequest.getDevice()),
resolveEndpoint(impExt), mapper));
} catch (PreBidException e) {
errors.add(BidderError.badInput(e.getMessage()));
}
Expand All @@ -76,6 +81,18 @@ private String resolveEndpoint(AdmaticImpExt impExt) {
return endpointUrl.replace(HOST_MACRO, HttpUtil.encodeUrl(impExt.getHost()));
}

private MultiMap headers(Device device) {
final MultiMap headers = HttpUtil.headers();

if (device != null) {
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIp());
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIpv6());
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, device.getUa());
}

return headers;
}

@Override
public Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.iab.openrtb.request.Audio;
import com.iab.openrtb.request.Banner;
import com.iab.openrtb.request.BidRequest;
import com.iab.openrtb.request.Device;
import com.iab.openrtb.request.Imp;
import com.iab.openrtb.request.Native;
import com.iab.openrtb.request.Video;
Expand Down Expand Up @@ -36,6 +37,8 @@
import static org.prebid.server.util.HttpUtil.ACCEPT_HEADER;
import static org.prebid.server.util.HttpUtil.APPLICATION_JSON_CONTENT_TYPE;
import static org.prebid.server.util.HttpUtil.CONTENT_TYPE_HEADER;
import static org.prebid.server.util.HttpUtil.USER_AGENT_HEADER;
import static org.prebid.server.util.HttpUtil.X_FORWARDED_FOR_HEADER;
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;

public class AdmaticBidderTest extends VertxTest {
Expand Down Expand Up @@ -102,6 +105,32 @@ public void makeHttpRequestsShouldReturnExpectedHeaders() {
assertThat(result.getErrors()).isEmpty();
}

@Test
public void makeHttpRequestsShouldReturnRequestsWithHeadersIfDeviceIsPresent() {
// given
final BidRequest bidRequest = givenBidRequest(identity())
.toBuilder()
.device(Device.builder().ua("ua").ip("ip").ipv6("ipv6").build())
.build();

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

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getValue()).hasSize(1).first()
.extracting(HttpRequest::getHeaders)
.satisfies(headers -> assertThat(headers.get(CONTENT_TYPE_HEADER))
.isEqualTo(APPLICATION_JSON_CONTENT_TYPE))
.satisfies(headers -> assertThat(headers.get(ACCEPT_HEADER))
.isEqualTo(APPLICATION_JSON_VALUE))
.satisfies(headers -> assertThat(headers.get(USER_AGENT_HEADER))
.isEqualTo("ua"))
.satisfies(headers -> assertThat(headers.get(X_FORWARDED_FOR_HEADER))
.isEqualTo("ip"));
assertThat(result.getErrors()).isEmpty();
}

@Test
public void shouldMakeOneRequestWhenOneImpIsValidAndAnotherIsNot() {
// given
Expand Down

0 comments on commit 5c3c1ba

Please sign in to comment.