Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntius;
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntiusTargeting;
import org.prebid.server.proto.openrtb.ext.response.BidType;
import org.prebid.server.proto.openrtb.ext.response.ExtBidDsa;
import org.prebid.server.util.BidderUtil;
Expand Down Expand Up @@ -158,12 +159,8 @@ private static String resolveNetwork(ExtImpAdnuntius extImpAdnuntius) {
}

private static AdnuntiusRequestAdUnit makeBannerAdUnit(Imp imp, ExtImpAdnuntius extImpAdnuntius) {
final String auId = extImpAdnuntius.getAuId();
return AdnuntiusRequestAdUnit.builder()
.auId(auId)
.targetId(targetId(auId, imp.getId(), "banner"))
return makeAdUnitBuilder(imp, extImpAdnuntius, "banner")
.dimensions(createDimensions(imp.getBanner()))
.maxDeals(resolveMaxDeals(extImpAdnuntius))
.build();
}

Expand Down Expand Up @@ -197,13 +194,9 @@ private static List<List<Integer>> createDimensions(Banner banner) {
}

private AdnuntiusRequestAdUnit makeNativeAdUnit(Imp imp, ExtImpAdnuntius extImpAdnuntius) {
final String auId = extImpAdnuntius.getAuId();
return AdnuntiusRequestAdUnit.builder()
.auId(auId)
.adType("NATIVE")
.targetId(targetId(auId, imp.getId(), "native"))
.maxDeals(resolveMaxDeals(extImpAdnuntius))
return makeAdUnitBuilder(imp, extImpAdnuntius, "native")
.nativeRequest(AdnuntiusNativeRequest.of(parseNativeRequest(imp)))
.adType("NATIVE")
.build();
}

Expand All @@ -215,6 +208,26 @@ private ObjectNode parseNativeRequest(Imp imp) {
}
}

private static AdnuntiusRequestAdUnit.AdnuntiusRequestAdUnitBuilder makeAdUnitBuilder(
Imp imp,
ExtImpAdnuntius extImpAdnuntius,
String bidType) {

final String auId = extImpAdnuntius.getAuId();
final ExtImpAdnuntiusTargeting targeting = ObjectUtils.defaultIfNull(
extImpAdnuntius.getTargeting(),
ExtImpAdnuntiusTargeting.builder().build());
return AdnuntiusRequestAdUnit.builder()
.auId(auId)
.targetId(targetId(auId, imp.getId(), bidType))
.maxDeals(resolveMaxDeals(extImpAdnuntius))
.category(targeting.getCategory())
.segments(targeting.getSegments())
.keywords(targeting.getKeywords())
.keyValues(targeting.getKeyValues())
.adUnitMatchingLabel(targeting.getAdUnitMatchingLabel());
}

private static Integer resolveMaxDeals(ExtImpAdnuntius extImpAdnuntius) {
final Integer maxDeals = extImpAdnuntius.getMaxDeals();
return maxDeals != null && maxDeals > 0 ? maxDeals : null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.Value;

import java.util.List;
import java.util.Map;

@Builder(toBuilder = true)
@Value
Expand All @@ -26,4 +27,17 @@ public class AdnuntiusRequestAdUnit {

@JsonProperty("adType")
String adType;

@JsonProperty("c")
List<String> category;

List<String> segments;

List<String> keywords;

@JsonProperty("kv")
Map<String, List<String>> keyValues;

@JsonProperty("auml")
List<String> adUnitMatchingLabel;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ public class ExtImpAdnuntius {

@JsonProperty("bidType")
String bidType;

ExtImpAdnuntiusTargeting targeting;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.prebid.server.proto.openrtb.ext.request.adnuntius;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Value;

import java.util.List;
import java.util.Map;

@Value
@Builder
public class ExtImpAdnuntiusTargeting {

@JsonProperty("c")
List<String> category;

List<String> segments;

List<String> keywords;

@JsonProperty("kv")
Map<String, List<String>> keyValues;

@JsonProperty("auml")
List<String> adUnitMatchingLabel;


}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntius;
import org.prebid.server.proto.openrtb.ext.request.adnuntius.ExtImpAdnuntiusTargeting;
import org.prebid.server.proto.openrtb.ext.response.BidType;
import org.prebid.server.util.HttpUtil;

Expand Down Expand Up @@ -201,6 +202,49 @@ public void makeHttpRequestsShouldNotReturnAdTypeForBannerImp() {
.containsNull();
}

@Test
public void makeHttpRequestsShouldReturnTargetingFieldsWhenTargetingIsPresent() {
// given
final ExtImpAdnuntiusTargeting targeting = ExtImpAdnuntiusTargeting.builder()
.category(List.of("1", "2"))
.keywords(List.of("3", "4"))
.segments(List.of("5", "6"))
.adUnitMatchingLabel(List.of("7", "8"))
.keyValues(Map.of("9", List.of("10", "11")))
.build();
final BidRequest bidRequest = givenBidRequest(givenBannerAndNativeImp(
ExtImpAdnuntius.builder().targeting(targeting).build(),
identity()));

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

// then
assertThat(result.getErrors()).isEmpty();
assertThat(result.getValue())
.extracting(HttpRequest::getPayload)
.flatExtracting(AdnuntiusRequest::getAdUnits)
.extracting(
AdnuntiusRequestAdUnit::getCategory,
AdnuntiusRequestAdUnit::getKeywords,
AdnuntiusRequestAdUnit::getSegments,
AdnuntiusRequestAdUnit::getKeyValues,
AdnuntiusRequestAdUnit::getAdUnitMatchingLabel)
.containsExactly(
tuple(
List.of("1", "2"),
List.of("3", "4"),
List.of("5", "6"),
Map.of("9", List.of("10", "11")),
List.of("7", "8")),
tuple(
List.of("1", "2"),
List.of("3", "4"),
List.of("5", "6"),
Map.of("9", List.of("10", "11")),
List.of("7", "8")));
}

@Test
public void makeHttpRequestsShouldReturnRequestsWithDimensionsIfBannerHighAndWidthArePresent() {
// given
Expand Down
Loading