55import com .fasterxml .jackson .databind .JsonNode ;
66import com .iab .openrtb .request .BidRequest ;
77import com .iab .openrtb .request .Imp ;
8+ import com .iab .openrtb .request .Site ;
9+ import com .iab .openrtb .request .Publisher ;
10+ import com .iab .openrtb .request .Publisher .PublisherBuilder ;
811import com .iab .openrtb .response .Bid ;
912import com .iab .openrtb .response .BidResponse ;
1013import com .iab .openrtb .response .SeatBid ;
@@ -60,13 +63,18 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest bidRequ
6063
6164 final List <Imp > modifiedImps = new ArrayList <>();
6265 final List <BidderError > errors = new ArrayList <>();
66+ String publisherId = null ;
6367
6468 for (Imp imp : bidRequest .getImp ()) {
6569 try {
6670 final ExtImpRtbhouse impExt = parseImpExt (imp );
6771 final Price bidFloorPrice = resolveBidFloor (imp , impExt , bidRequest );
6872
6973 modifiedImps .add (modifyImp (imp , bidFloorPrice ));
74+ // Get publisherId from first valid impExt
75+ if (publisherId == null && impExt .getPublisherId () != null ) {
76+ publisherId = impExt .getPublisherId ();
77+ }
7078 } catch (PreBidException e ) {
7179 errors .add (BidderError .badInput (e .getMessage ()));
7280 }
@@ -76,11 +84,13 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest bidRequ
7684 return Result .withErrors (errors );
7785 }
7886
79- final BidRequest outgoingRequest = bidRequest .toBuilder ()
87+ BidRequest outgoingRequest = bidRequest .toBuilder ()
8088 .cur (Collections .singletonList (BIDDER_CURRENCY ))
8189 .imp (modifiedImps )
8290 .build ();
8391
92+ outgoingRequest = updateSitePublisherId (outgoingRequest , publisherId );
93+
8494 return Result .withValue (BidderUtil .defaultRequest (outgoingRequest , endpointUrl , mapper ));
8595 }
8696
@@ -175,10 +185,10 @@ private ExtImpRtbhouse parseImpExt(Imp imp) {
175185 }
176186
177187 private static Imp modifyImp (Imp imp , Price bidFloorPrice ) {
178-
179188 return imp .toBuilder ()
180189 .bidfloorcur (ObjectUtil .getIfNotNull (bidFloorPrice , Price ::getCurrency ))
181190 .bidfloor (ObjectUtil .getIfNotNull (bidFloorPrice , Price ::getValue ))
191+ .pmp (null )
182192 .build ();
183193 }
184194
@@ -223,4 +233,25 @@ private static Bid resolveMacros(Bid bid) {
223233 .build ();
224234 }
225235
236+ static BidRequest updateSitePublisherId (BidRequest bidRequest , String publisherId ) {
237+ if (bidRequest == null || publisherId == null ) {
238+ return bidRequest ;
239+ }
240+
241+ final Site site = bidRequest .getSite ();
242+ Publisher publisher = (site != null ) ? site .getPublisher () : null ;
243+
244+ final PublisherBuilder publisherBuilder = (publisher != null )
245+ ? publisher .toBuilder ()
246+ : Publisher .builder ();
247+
248+ publisherBuilder .id (publisherId );
249+ publisher = publisherBuilder .build ();
250+
251+ final Site updatedSite = (site != null )
252+ ? site .toBuilder ().publisher (publisher ).build ()
253+ : Site .builder ().publisher (publisher ).build ();
254+
255+ return bidRequest .toBuilder ().site (updatedSite ).build ();
256+ }
226257}
0 commit comments