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
4 changes: 2 additions & 2 deletions extra/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

<!-- Maven plugin versions -->
<maven-release-plugin.version>3.1.1</maven-release-plugin.version>
<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>${maven-surefire-plugin.version}</maven-failsafe-plugin.version>
<jacoco-maven-plugin.version>0.8.13</jacoco-maven-plugin.version>
Expand Down Expand Up @@ -60,7 +60,7 @@

<!-- Project test dependency versions -->
<wiremock.version>3.12.1</wiremock.version>
<spock.version>2.4-M5-groovy-4.0</spock.version>
<spock.version>2.4-M6-groovy-4.0</spock.version>
<!--TODO: replace with WireMock -->
<mockserver.version>5.15.0</mockserver.version>

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<download-plugin.version>2.0.0</download-plugin.version>
<git-commit-id-plugin.version>9.0.1</git-commit-id-plugin.version>

<gmavenplus-plugin.version>4.1.1</gmavenplus-plugin.version>
<gmavenplus-plugin.version>4.2.1</gmavenplus-plugin.version>
<os-maven-plugin.version>1.7.1</os-maven-plugin.version>
<build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version>
<protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
Expand Down
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 @@ -50,7 +50,7 @@ public class NextMillenniumBidder implements Bidder<BidRequest> {
new TypeReference<>() {
};

private static final String NM_ADAPTER_VERSION = "v1.0.0";
private static final String NM_ADAPTER_VERSION = "v1.0.1";

private final String endpointUrl;
private final JacksonMapper mapper;
Expand Down Expand Up @@ -101,15 +101,15 @@ private ExtImpNextMillennium convertExt(ObjectNode impExt) {
}

private BidRequest updateBidRequest(BidRequest bidRequest, ExtImpNextMillennium extImp) {
final String soredRequestId = resolveStoredRequestId(bidRequest, extImp);
final String storedRequestId = resolveStoredRequestId(bidRequest, extImp);
final ExtRequestPrebidServer extRequestPrebidServer = Optional.ofNullable(bidRequest.getExt())
.map(ExtRequest::getPrebid)
.map(ExtRequestPrebid::getServer)
.orElse(null);

return bidRequest.toBuilder()
.imp(modifyFirstImp(bidRequest.getImp(), soredRequestId))
.ext(createExtRequest(soredRequestId, extRequestPrebidServer))
.imp(modifyFirstImp(bidRequest.getImp(), storedRequestId))
.ext(createExtRequest(storedRequestId, extRequestPrebidServer, extImp))
.build();
}

Expand Down Expand Up @@ -156,7 +156,7 @@ private List<Imp> modifyFirstImp(List<Imp> imps, String storedRequestId) {
.build();

final NextMillenniumExt nextMillenniumExt = NextMillenniumExt.of(
NextMillenniumExtBidder.of(nmmFlags, null, null));
NextMillenniumExtBidder.of(nmmFlags));

final ExtRequest extRequest = ExtRequest.of(extRequestPrebid);
mapper.fillExtension(extRequest, nextMillenniumExt);
Expand All @@ -169,14 +169,21 @@ private List<Imp> modifyFirstImp(List<Imp> imps, String storedRequestId) {
return modifiedImps;
}

private ExtRequest createExtRequest(String storedRequestId, ExtRequestPrebidServer extRequestPrebidServer) {
private ExtRequest createExtRequest(String storedRequestId,
ExtRequestPrebidServer extRequestPrebidServer,
ExtImpNextMillennium extImp) {
final ExtRequestPrebid extRequestPrebid = ExtRequestPrebid.builder()
.storedrequest(ExtStoredRequest.of(storedRequestId))
.server(extRequestPrebidServer)
.build();

final NextMillenniumExt nextMillenniumExt = NextMillenniumExt.of(
NextMillenniumExtBidder.of(nmmFlags, NM_ADAPTER_VERSION, versionProvider.getNameVersionRecord()));
NextMillenniumExtBidder.of(
nmmFlags,
extImp.getAdSlots(),
extImp.getAllowedAds(),
NM_ADAPTER_VERSION,
versionProvider.getNameVersionRecord()));

final ExtRequest extRequest = ExtRequest.of(extRequestPrebid);
mapper.fillExtension(extRequest, nextMillenniumExt);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,17 @@ public class NextMillenniumExtBidder {
@JsonProperty("nmmFlags")
List<String> nmmFlags;

@JsonProperty("adSlots")
List<String> adSlots;

@JsonProperty("allowedAds")
List<String> allowedAds;

String nmVersion;

String serverVersion;

public static NextMillenniumExtBidder of(List<String> nmmFlags) {
return of(nmmFlags, null, null, null, null);
}
}
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
@@ -1,11 +1,20 @@
package org.prebid.server.proto.openrtb.ext.request.nextmillennium;

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

import java.util.List;

@Value(staticConstructor = "of")
public class ExtImpNextMillennium {

String placementId;

String groupId;

@JsonProperty("adSlots")
List<String> adSlots;

@JsonProperty("allowedAds")
List<String> allowedAds;
}
8 changes: 7 additions & 1 deletion src/main/resources/bidder-config/bidtheatre.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
adapters:
bidtheatre:
endpoint: https://prebidjs-bids.bidtheatre.net/prebidjsbid
endpoint: https://client-bids.adsby.bidtheatre.com/prebidjsbid
modifying-vast-xml-allowed: true
meta-info:
maintainer-email: operations@bidtheatre.com
Expand All @@ -12,3 +12,9 @@ adapters:
- video
supported-vendors:
vendor-id: 30
usersync:
cookie-family-name: bidtheatre
redirect:
url: https://match.adsby.bidtheatre.com/prebidmatch?gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&redir={{redirect_url}}
support-cors: false
uid-macro: '$UID'
15 changes: 15 additions & 0 deletions src/main/resources/static/bidder-params/nextmillennium.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@
"type": "string",
"minLength": 1,
"description": "An id used to identify NextMillennium placement group"
},
"adSlots": {
"type": "array",
"minItems": 1,
"description": "IDs which identifies the ad slots",
"items": {
"type": "string"
}
},
"allowedAds": {
"type": "array",
"description": "List of allowed ads",
"items": {
"type": "string"
}
}
},
"anyOf": [
Expand Down
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
Loading