2222import org .prebid .server .json .JacksonMapper ;
2323import org .prebid .server .proto .openrtb .ext .ExtPrebid ;
2424import org .prebid .server .proto .openrtb .ext .request .ExtRequest ;
25- import org .prebid .server .proto .openrtb .ext .request .ExtSite ;
2625import org .prebid .server .proto .openrtb .ext .request .nativery .ExtImpNativery ;
2726import org .prebid .server .proto .openrtb .ext .response .BidType ;
2827import org .prebid .server .proto .openrtb .ext .response .ExtBidPrebid ;
@@ -70,7 +69,7 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
7069 for (Imp imp : request .getImp ()) {
7170 try {
7271 final ExtImpNativery extImp = parseImpExt (imp );
73- if (widgetId == null && extImp != null && StringUtils .isNotBlank (extImp .getWidgetId ())) {
72+ if (widgetId == null && StringUtils .isNotBlank (extImp .getWidgetId ())) {
7473 widgetId = extImp .getWidgetId ();
7574 }
7675 validImps .add (imp );
@@ -83,13 +82,16 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
8382 return Result .of (Collections .emptyList (), errors );
8483 }
8584
86- final ExtRequest updatedExt = buildRequestExtWithNativery (request .getExt (), isAmp , widgetId );
85+ // 🟢 Zmienione — zamieniamy ExtRequest na ObjectNode
86+ final ObjectNode originalExt = request .getExt () != null
87+ ? mapper .mapper ().convertValue (request .getExt (), ObjectNode .class )
88+ : null ;
89+ final ExtRequest updatedExt = buildRequestExtWithNativery (originalExt , isAmp , widgetId );
8790
8891 for (Imp imp : validImps ) {
8992 final BidRequest singleImpRequest = request .toBuilder ()
9093 .imp (Collections .singletonList (imp ))
91- .ext (updatedExt )
92- .cur (Collections .singletonList (DEFAULT_CURRENCY ))
94+ .ext (updatedExt ) // ✅ teraz typ się zgadza
9395 .build ();
9496
9597 httpRequests .add (BidderUtil .defaultRequest (singleImpRequest , endpointUrl , mapper ));
@@ -98,6 +100,18 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
98100 return Result .of (httpRequests , errors );
99101 }
100102
103+ private boolean isAmpRequest (BidRequest request ) {
104+ if (request .getSite () != null && request .getSite ().getExt () != null ) {
105+ final JsonNode siteExt = mapper .mapper ().valueToTree (request .getSite ().getExt ());
106+ final JsonNode ampNode = siteExt .get ("amp" );
107+ if (ampNode != null && ampNode .asInt (0 ) == 1 ) {
108+ return true ;
109+ }
110+ }
111+
112+ return false ;
113+ }
114+
101115 private ExtImpNativery parseImpExt (Imp imp ) {
102116 try {
103117 final ExtPrebid <?, ExtImpNativery > ext =
@@ -108,11 +122,13 @@ private ExtImpNativery parseImpExt(Imp imp) {
108122 }
109123 }
110124
111- private ExtRequest buildRequestExtWithNativery (ExtRequest originalExt , boolean isAmp , String widgetId ) {
112- final ObjectNode extNode = mapper .mapper ().convertValue (originalExt , ObjectNode .class );
113- final ObjectNode root = extNode != null ? extNode : mapper .mapper ().createObjectNode ();
125+ private ExtRequest buildRequestExtWithNativery (ObjectNode originalExt , boolean isAmp , String widgetId ) {
126+ final ObjectNode root = originalExt != null
127+ ? originalExt .deepCopy ()
128+ : mapper .mapper ().createObjectNode ();
114129
115130 final ObjectNode nativeryNode = root .with ("nativery" );
131+
116132 nativeryNode .put ("isAmp" , isAmp );
117133 if (widgetId != null ) {
118134 nativeryNode .put ("widgetId" , widgetId );
@@ -121,19 +137,6 @@ private ExtRequest buildRequestExtWithNativery(ExtRequest originalExt, boolean i
121137 return mapper .mapper ().convertValue (root , ExtRequest .class );
122138 }
123139
124- private boolean isAmpRequest (BidRequest request ) {
125- if (request .getSite () == null || request .getSite ().getExt () == null ) {
126- return false ;
127- }
128- try {
129- final ExtSite extSite = mapper .mapper ().convertValue (request .getSite ().getExt (), ExtSite .class );
130- final Integer amp = extSite != null ? extSite .getAmp () : null ;
131- return amp != null && amp == 1 ;
132- } catch (Exception e ) {
133- return false ;
134- }
135- }
136-
137140 @ Override
138141 public Result <List <BidderBid >> makeBids (BidderCall <BidRequest > httpCall , BidRequest bidRequest ) {
139142 final List <BidderError > errors = new ArrayList <>();
0 commit comments