Skip to content

Commit

Permalink
Refactoring code related to site and hasId
Browse files Browse the repository at this point in the history
  • Loading branch information
AndriyPavlyuk committed Sep 22, 2020
1 parent c2e737c commit c412805
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 53 deletions.
96 changes: 47 additions & 49 deletions src/main/java/org/prebid/server/bidder/dmx/DmxBidder.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.iab.openrtb.request.App;
import com.iab.openrtb.request.Banner;
import com.iab.openrtb.request.BidRequest;
import com.iab.openrtb.request.Imp;
Expand Down Expand Up @@ -47,7 +48,6 @@ public class DmxBidder implements Bidder<BidRequest> {
new TypeReference<ExtPrebid<?, ExtImpDmx>>() {
};

private static final String DEFAULT_BID_CURRENCY = "USD";
private static final int INT_VALUE = 1;
private static final String IMP = "</Impression><Impression><![CDATA[%s]]></Impression>";
private static final String SEARCH = "</Impression>";
Expand Down Expand Up @@ -76,63 +76,31 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
try {
final ExtImpDmx extImp = parseImpExt(imps.get(0));
final String publisherId = extImp.getPublisherId();
updatedPublisherId = StringUtils.isBlank(publisherId)
? publisherId
: extImp.getMemberId();
updatedPublisherId = StringUtils.isNotBlank(publisherId) ? publisherId : extImp.getMemberId();
updatedSellerId = extImp.getSellerId();
for (Imp imp : request.getImp()) {
final Imp validImp = validateAndModifyImp(imp, parseImpExt(imp));
if (validImp != null) {
validImps.add(validImp);
}
}
} catch (PreBidException e) {
errors.add(BidderError.badInput(e.getMessage()));
}

boolean anyHasId = false;
if (request.getApp() != null) {
if (StringUtils.isNotBlank(request.getApp().getId())) {
anyHasId = true;
}
}

final Site site = request.getSite();
if (site != null) {
final Publisher publisher = site.getPublisher();
if (site.getPublisher() != null) {
request.toBuilder()
.site(site.toBuilder().publisher(publisher.toBuilder().id(updatedPublisherId).build()).build())
.build();
} else {
request.toBuilder()
.site(site.toBuilder().publisher(Publisher.builder().id(updatedPublisherId).build()).build())
.build();
}
}

final User user = request.getUser();
if (user != null) {
if (StringUtils.isNotBlank(user.getId())) {
anyHasId = true;
}
final ExtUser userExt = user.getExt();
if (userExt != null) {
final ExtUserDigiTrust digitrust = userExt.getDigitrust();
if (CollectionUtils.isNotEmpty(userExt.getEids()) || (digitrust != null
&& StringUtils.isNotBlank(digitrust.getId()))) {
anyHasId = true;
for (Imp imp : request.getImp()) {
try {
final Imp validImp = validateAndModifyImp(imp, parseImpExt(imp));
if (validImp != null) {
validImps.add(validImp);
}
} catch (PreBidException e) {
errors.add(BidderError.badInput(e.getMessage()));
}
}

final Site modifiedSite = modifySite(request.getSite(), updatedPublisherId);
try {
checkIfHasId(anyHasId);
checkIfHasId(request.getApp(), request.getUser());
} catch (PreBidException e) {
return Result.emptyWithError(BidderError.badInput("This request contained no identifier"));
}

final BidRequest outgoingRequest = request.toBuilder().imp(validImps).build();
final BidRequest outgoingRequest = request.toBuilder().imp(validImps).site(modifiedSite).build();
final String body = mapper.encode(outgoingRequest);
final String urlParameter = StringUtils.isNotBlank(updatedSellerId)
? "?sellerid=" + HttpUtil.encodeUrl(updatedSellerId)
Expand Down Expand Up @@ -208,12 +176,42 @@ private Imp fetchParams(Imp imp, ExtImpDmx extImp) {
.build();
}

return updatedImp != null && StringUtils.isBlank(updatedImp.getTagid()) && StringUtils.isBlank(imp.getTagid())
? null
: updatedImp;
return updatedImp;
}

private Site modifySite(Site site, String updatedPublisherId) {
Publisher updatedPublisher = null;
if (site != null) {
final Publisher publisher = site.getPublisher();
updatedPublisher = publisher == null
? Publisher.builder().id(updatedPublisherId).build()
: publisher.toBuilder().id(updatedPublisherId).build();
}
return site != null ? site.toBuilder().publisher(updatedPublisher).build() : null;
}

private void checkIfHasId(boolean anyHasId) {
private void checkIfHasId(App app, User user) {
boolean anyHasId = false;
if (app != null) {
if (StringUtils.isNotBlank(app.getId())) {
anyHasId = true;
}
}

if (user != null) {
if (StringUtils.isNotBlank(user.getId())) {
anyHasId = true;
}
final ExtUser userExt = user.getExt();
if (userExt != null) {
final ExtUserDigiTrust digitrust = userExt.getDigitrust();
if (CollectionUtils.isNotEmpty(userExt.getEids()) || (digitrust != null
&& StringUtils.isNotBlank(digitrust.getId()))) {
anyHasId = true;
}
}
}

if (!anyHasId) {
throw new PreBidException("This request contained no identifier");
}
Expand Down Expand Up @@ -247,7 +245,7 @@ public Result<List<BidderBid>> makeBids(HttpCall<BidRequest> httpCall, BidReques
final Bid updatedBid = bidType == BidType.video
? bid.toBuilder().adm(getAdm(bid)).build()
: bid;
final BidderBid bidderBid = BidderBid.of(updatedBid, bidType, DEFAULT_BID_CURRENCY);
final BidderBid bidderBid = BidderBid.of(updatedBid, bidType, bidResponse.getCur());
bidderBids.add(bidderBid);
} catch (PreBidException e) {
errors.add(BidderError.badInput(e.getMessage()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed() {
final Result<List<HttpRequest<BidRequest>>> result = dmxBidder.makeHttpRequests(bidRequest);

// then
assertThat(result.getErrors()).hasSize(1);
assertThat(result.getErrors()).hasSize(2);
assertThat(result.getErrors().get(0).getMessage()).startsWith("Cannot deserialize instance");
}

Expand Down Expand Up @@ -352,6 +352,7 @@ private static Imp givenImp(Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomiz

private static BidResponse givenBidResponse(Function<Bid.BidBuilder, Bid.BidBuilder> bidCustomizer) {
return BidResponse.builder()
.cur("USD")
.seatbid(singletonList(SeatBid.builder().bid(singletonList(bidCustomizer.apply(Bid.builder()).build()))
.build()))
.build();
Expand Down
3 changes: 1 addition & 2 deletions src/test/java/org/prebid/server/it/DmxTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public void openrtb2AuctionShouldRespondWithBidsFromDmx() throws IOException, JS
"openrtb2/dmx/test-auction-dmx-response.json",
response, singletonList("dmx"));

final String actualStr = response.asString();
JSONAssert.assertEquals(expectedAuctionResponse, actualStr, JSONCompareMode.NON_EXTENSIBLE);
JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.NON_EXTENSIBLE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"domain": "example.com",
"page": "http://www.example.com",
"publisher": {
"id": "publisherId"
"id": "10400"
},
"ext": {
"amp": 0
Expand Down

0 comments on commit c412805

Please sign in to comment.