Skip to content

Commit 914c839

Browse files
committed
Add targeting
1 parent 434e137 commit 914c839

2 files changed

Lines changed: 32 additions & 5 deletions

File tree

src/main/java/org/prebid/server/auction/requestfactory/AmpRequestFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ private BidRequest fillExplicitParameters(BidRequest bidRequest, Account account
525525
*/
526526
private BidRequest overrideParameters(BidRequest bidRequest, HttpRequestContext httpRequest, List<String> errors) {
527527
final String requestTargeting = httpRequest.getQueryParams().get(TARGETING_REQUEST_PARAM);
528-
final ObjectNode targetingNode = readTargeting(requestTargeting);
528+
final ObjectNode targetingNode = readTargeting(requestTargeting, mapper);
529529
final String referer = implicitParametersExtractor.refererFrom(httpRequest);
530530
ortbTypesResolver.normalizeTargeting(targetingNode, errors, referer);
531531

@@ -542,7 +542,7 @@ private BidRequest overrideParameters(BidRequest bidRequest, HttpRequestContext
542542
return bidRequest;
543543
}
544544

545-
private ObjectNode readTargeting(String jsonTargeting) {
545+
public static ObjectNode readTargeting(String jsonTargeting, JacksonMapper mapper) {
546546
try {
547547
final String decodedJsonTargeting = HttpUtil.decodeUrl(jsonTargeting);
548548
final JsonNode jsonNodeTargeting = decodedJsonTargeting != null
@@ -554,7 +554,7 @@ private ObjectNode readTargeting(String jsonTargeting) {
554554
}
555555
}
556556

557-
private ObjectNode validateAndGetTargeting(JsonNode jsonNodeTargeting) {
557+
private static ObjectNode validateAndGetTargeting(JsonNode jsonNodeTargeting) {
558558
if (jsonNodeTargeting.isObject()) {
559559
return (ObjectNode) jsonNodeTargeting;
560560
} else {

src/main/java/org/prebid/server/auction/requestfactory/GetInterfaceRequestFactory.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
import org.apache.commons.lang3.ObjectUtils;
2525
import org.apache.commons.lang3.StringUtils;
2626
import org.prebid.server.auction.DebugResolver;
27+
import org.prebid.server.auction.FpdResolver;
2728
import org.prebid.server.auction.GeoLocationServiceWrapper;
2829
import org.prebid.server.auction.ImplicitParametersExtractor;
2930
import org.prebid.server.auction.InterstitialProcessor;
3031
import org.prebid.server.auction.IpAddressHelper;
32+
import org.prebid.server.auction.OrtbTypesResolver;
3133
import org.prebid.server.auction.externalortb.ProfilesProcessor;
3234
import org.prebid.server.auction.externalortb.StoredRequestProcessor;
3335
import org.prebid.server.auction.gpp.AuctionGppService;
@@ -72,8 +74,10 @@ public class GetInterfaceRequestFactory {
7274
private final AuctionGppService gppService;
7375
private final CookieDeprecationService cookieDeprecationService;
7476
private final ImplicitParametersExtractor paramsExtractor;
77+
private final OrtbTypesResolver ortbTypesResolver;
7578
private final IpAddressHelper ipAddressHelper;
7679
private final Ortb2ImplicitParametersResolver paramsResolver;
80+
private final FpdResolver fpdResolver;
7781
private final InterstitialProcessor interstitialProcessor;
7882
private final AuctionPrivacyContextFactory auctionPrivacyContextFactory;
7983
private final DebugResolver debugResolver;
@@ -88,8 +92,10 @@ public GetInterfaceRequestFactory(Ortb2RequestFactory ortb2RequestFactory,
8892
AuctionGppService gppService,
8993
CookieDeprecationService cookieDeprecationService,
9094
ImplicitParametersExtractor paramsExtractor,
95+
OrtbTypesResolver ortbTypesResolver,
9196
IpAddressHelper ipAddressHelper,
9297
Ortb2ImplicitParametersResolver paramsResolver,
98+
FpdResolver fpdResolver,
9399
InterstitialProcessor interstitialProcessor,
94100
AuctionPrivacyContextFactory auctionPrivacyContextFactory,
95101
DebugResolver debugResolver,
@@ -104,8 +110,10 @@ public GetInterfaceRequestFactory(Ortb2RequestFactory ortb2RequestFactory,
104110
this.gppService = Objects.requireNonNull(gppService);
105111
this.cookieDeprecationService = Objects.requireNonNull(cookieDeprecationService);
106112
this.paramsExtractor = Objects.requireNonNull(paramsExtractor);
113+
this.ortbTypesResolver = Objects.requireNonNull(ortbTypesResolver);
107114
this.ipAddressHelper = Objects.requireNonNull(ipAddressHelper);
108115
this.paramsResolver = Objects.requireNonNull(paramsResolver);
116+
this.fpdResolver = Objects.requireNonNull(fpdResolver);
109117
this.interstitialProcessor = Objects.requireNonNull(interstitialProcessor);
110118
this.auctionPrivacyContextFactory = Objects.requireNonNull(auctionPrivacyContextFactory);
111119
this.debugResolver = Objects.requireNonNull(debugResolver);
@@ -301,6 +309,19 @@ private Imp completeImp(Imp imp, GetInterfaceParams params) {
301309
}
302310

303311
private ObjectNode completeImpExt(ObjectNode ext, GetInterfaceParams params) {
312+
final ObjectNode extWithTargeting = enrichImpExtWithTargeting(ext, params);
313+
return enrichImpExtWithProfiles(extWithTargeting, params);
314+
}
315+
316+
private ObjectNode enrichImpExtWithTargeting(ObjectNode ext, GetInterfaceParams params) {
317+
final ObjectNode targetingNode = params.targeting();
318+
319+
return targetingNode != null
320+
? fpdResolver.resolveImpExt(ext, targetingNode)
321+
: ext;
322+
}
323+
324+
private ObjectNode enrichImpExtWithProfiles(ObjectNode ext, GetInterfaceParams params) {
304325
final List<String> impProfiles = params.impProfiles();
305326
if (CollectionUtils.isEmpty(impProfiles)) {
306327
return ext;
@@ -503,6 +524,8 @@ private class GetInterfaceParams {
503524

504525
HttpRequestContext httpRequestContext;
505526

527+
List<String> errors = new ArrayList<>();
528+
506529
GetInterfaceParams(HttpRequestContext httpRequestContext) {
507530
this.httpRequestContext = Objects.requireNonNull(httpRequestContext);
508531
}
@@ -735,8 +758,12 @@ public Integer topFrame() {
735758
return getInteger("topframe");
736759
}
737760

738-
public Integer targeting() {
739-
return null; // TODO: GET
761+
public ObjectNode targeting() {
762+
final ObjectNode targetingNode = AmpRequestFactory.readTargeting(getString("targeting"), mapper);
763+
final String referer = paramsExtractor.refererFrom(httpRequestContext);
764+
ortbTypesResolver.normalizeTargeting(targetingNode, errors, referer);
765+
766+
return targetingNode;
740767
}
741768

742769
public Consent consent() {

0 commit comments

Comments
 (0)