2424import org .apache .commons .lang3 .ObjectUtils ;
2525import org .apache .commons .lang3 .StringUtils ;
2626import org .prebid .server .auction .DebugResolver ;
27+ import org .prebid .server .auction .FpdResolver ;
2728import org .prebid .server .auction .GeoLocationServiceWrapper ;
2829import org .prebid .server .auction .ImplicitParametersExtractor ;
2930import org .prebid .server .auction .InterstitialProcessor ;
3031import org .prebid .server .auction .IpAddressHelper ;
32+ import org .prebid .server .auction .OrtbTypesResolver ;
3133import org .prebid .server .auction .externalortb .ProfilesProcessor ;
3234import org .prebid .server .auction .externalortb .StoredRequestProcessor ;
3335import 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