@@ -206,37 +206,36 @@ private List<BidderBid> extractBids(BidResponse bidResponse, BidRequest bidReque
206
206
207
207
private List <BidderBid > bidsFromResponse (BidResponse bidResponse , BidRequest bidRequest ) {
208
208
return bidResponse .getSeatbid ().stream ()
209
+ .filter (Objects ::nonNull )
209
210
.map (SeatBid ::getBid )
211
+ .filter (Objects ::nonNull )
210
212
.flatMap (Collection ::stream )
211
213
.map (bid -> toBidderBid (bid , bidRequest , bidResponse ))
212
214
.collect (Collectors .toList ());
213
215
}
214
216
215
217
private BidderBid toBidderBid (Bid bid , BidRequest bidRequest , BidResponse bidResponse ) {
216
218
final BidType bidType = getBidType (bid .getImpid (), bidRequest .getImp ());
217
-
218
- final ExtBidPrebid bidExt = parseBidExt (bid .getExt ());
219
+ final ObjectNode bidExt = bid .getExt ();
220
+ final ExtBidPrebid extPrebid = bidExt != null ? parseBidExt (bidExt ) : null ;
221
+ final ExtBidPrebidVideo extVideo = extPrebid != null ? extPrebid .getVideo () : null ;
219
222
final boolean bidHasNoSizes = bid .getH () == null || bid .getW () == null ;
220
223
final Banner banner = bidRequest .getImp ().get (0 ).getBanner ();
221
- if ((bidHasNoSizes && banner != null ) || (bidExt != null && bidExt .getVideo () != null )) {
224
+
225
+ if ((bidHasNoSizes && banner != null ) || (extVideo != null )) {
222
226
final Bid .BidBuilder bidBuilder = bid .toBuilder ();
223
227
224
- if (bidType == BidType .banner ) {
225
- if (bidHasNoSizes && banner != null ) {
226
- bidBuilder
227
- .w (banner .getW ())
228
- .h (banner .getH ())
229
- .build ();
230
- }
228
+ if (bidType == BidType .banner && bidHasNoSizes && banner != null ) {
229
+ bidBuilder
230
+ .w (banner .getW ())
231
+ .h (banner .getH ())
232
+ .build ();
231
233
}
232
234
233
- if (bidType == BidType .video ) {
234
- if (bidExt != null && bidExt .getVideo () != null ) {
235
- final ExtBidPrebidVideo video = bidExt .getVideo ();
236
- bidBuilder .ext (toBidExt (video ));
237
- if (CollectionUtils .isEmpty (bid .getCat ())) {
238
- bidBuilder .cat (Collections .singletonList (video .getPrimaryCategory ())).build ();
239
- }
235
+ if (bidType == BidType .video && extVideo != null ) {
236
+ bidBuilder .ext (resolveBidExt (extVideo .getDuration ()));
237
+ if (CollectionUtils .isEmpty (bid .getCat ())) {
238
+ bidBuilder .cat (Collections .singletonList (extVideo .getPrimaryCategory ())).build ();
240
239
}
241
240
}
242
241
bid = bidBuilder .build ();
@@ -264,14 +263,15 @@ private static BidType getBidType(String impId, List<Imp> imps) {
264
263
265
264
private ExtBidPrebid parseBidExt (ObjectNode bidExt ) {
266
265
try {
267
- return bidExt == null ? null : mapper .mapper ().treeToValue (bidExt , ExtBidPrebid .class );
266
+ return mapper .mapper ().treeToValue (bidExt , ExtBidPrebid .class );
268
267
} catch (JsonProcessingException e ) {
269
268
throw new PreBidException (e .getMessage ());
270
269
}
271
270
}
272
271
273
- private ObjectNode toBidExt (ExtBidPrebidVideo extBidVideo ) {
274
- return mapper .mapper ().valueToTree (ExtBidPrebidVideo .of (extBidVideo .getDuration (), null ));
272
+ private ObjectNode resolveBidExt (Integer duration ) {
273
+ return mapper .mapper ().valueToTree (ExtBidPrebid .builder ()
274
+ .video (ExtBidPrebidVideo .of (duration , null ))
275
+ .build ());
275
276
}
276
-
277
277
}
0 commit comments