Skip to content

Commit 49e774c

Browse files
author
Serhii Nahornyi
committed
Refactor
1 parent d5d292b commit 49e774c

File tree

2 files changed

+30
-23
lines changed

2 files changed

+30
-23
lines changed

src/main/java/org/prebid/server/bidder/ix/IxBidder.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -206,37 +206,36 @@ private List<BidderBid> extractBids(BidResponse bidResponse, BidRequest bidReque
206206

207207
private List<BidderBid> bidsFromResponse(BidResponse bidResponse, BidRequest bidRequest) {
208208
return bidResponse.getSeatbid().stream()
209+
.filter(Objects::nonNull)
209210
.map(SeatBid::getBid)
211+
.filter(Objects::nonNull)
210212
.flatMap(Collection::stream)
211213
.map(bid -> toBidderBid(bid, bidRequest, bidResponse))
212214
.collect(Collectors.toList());
213215
}
214216

215217
private BidderBid toBidderBid(Bid bid, BidRequest bidRequest, BidResponse bidResponse) {
216218
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;
219222
final boolean bidHasNoSizes = bid.getH() == null || bid.getW() == null;
220223
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)) {
222226
final Bid.BidBuilder bidBuilder = bid.toBuilder();
223227

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();
231233
}
232234

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();
240239
}
241240
}
242241
bid = bidBuilder.build();
@@ -264,14 +263,15 @@ private static BidType getBidType(String impId, List<Imp> imps) {
264263

265264
private ExtBidPrebid parseBidExt(ObjectNode bidExt) {
266265
try {
267-
return bidExt == null ? null : mapper.mapper().treeToValue(bidExt, ExtBidPrebid.class);
266+
return mapper.mapper().treeToValue(bidExt, ExtBidPrebid.class);
268267
} catch (JsonProcessingException e) {
269268
throw new PreBidException(e.getMessage());
270269
}
271270
}
272271

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());
275276
}
276-
277277
}

src/test/java/org/prebid/server/bidder/ix/IxBidderTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
2424
import org.prebid.server.proto.openrtb.ext.request.ix.ExtImpIx;
2525
import org.prebid.server.proto.openrtb.ext.response.BidType;
26+
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid;
2627
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidVideo;
2728

2829
import java.util.ArrayList;
@@ -34,6 +35,7 @@
3435
import static java.util.function.Function.identity;
3536
import static org.assertj.core.api.Assertions.assertThat;
3637
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
38+
import static org.assertj.core.api.Assertions.tuple;
3739

3840
public class IxBidderTest extends VertxTest {
3941

@@ -387,7 +389,9 @@ public void makeBidsShouldReturnBidWithVideoExt() throws JsonProcessingException
387389
givenBidResponse(
388390
bidBuilder -> bidBuilder
389391
.impid("123")
390-
.ext(mapper.valueToTree(ExtPrebid.of(null, ExtBidPrebidVideo.of(1, "cat")))))));
392+
.ext(mapper.valueToTree(ExtBidPrebid.builder()
393+
.video(ExtBidPrebidVideo.of(1, "cat"))
394+
.build())))));
391395

392396
// when
393397
final Result<List<BidderBid>> result = ixBidder.makeBids(httpCall, null);
@@ -397,7 +401,10 @@ public void makeBidsShouldReturnBidWithVideoExt() throws JsonProcessingException
397401
assertThat(result.getValue())
398402
.extracting(BidderBid::getBid)
399403
.extracting(Bid::getExt)
400-
.containsExactly(mapper.valueToTree(ExtPrebid.of(null, ExtBidPrebidVideo.of(1, "cat"))));
404+
.extracting(node -> mapper.treeToValue(node, ExtBidPrebid.class))
405+
.extracting(ExtBidPrebid::getVideo)
406+
.extracting(ExtBidPrebidVideo::getDuration, ExtBidPrebidVideo::getPrimaryCategory)
407+
.containsExactly(tuple(1, null));
401408
}
402409

403410
private static BidRequest givenBidRequest(

0 commit comments

Comments
 (0)