Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 7 additions & 216 deletions src/main/java/org/prebid/server/auction/BidResponseCreator.java

Large diffs are not rendered by default.

25 changes: 0 additions & 25 deletions src/main/java/org/prebid/server/auction/ImpAdjuster.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.prebid.server.auction;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.IntNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.iab.openrtb.request.Imp;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -17,8 +16,6 @@
public class ImpAdjuster {

private static final String IMP_EXT = "ext";
private static final String EXT_AE = "ae";
private static final String EXT_IGS = "igs";
private static final String EXT_PREBID = "prebid";
private static final String EXT_PREBID_BIDDER = "bidder";
private static final String EXT_PREBID_IMP = "imp";
Expand All @@ -37,8 +34,6 @@ public ImpAdjuster(JacksonMapper jacksonMapper,
}

public Imp adjust(Imp originalImp, String bidder, List<String> debugMessages) {
setAeParams(originalImp.getExt());

final JsonNode impExtPrebidImp = bidderParamsFromImpExtPrebidImp(originalImp.getExt());
if (impExtPrebidImp == null) {
return originalImp;
Expand Down Expand Up @@ -71,26 +66,6 @@ public Imp adjust(Imp originalImp, String bidder, List<String> debugMessages) {
}
}

private void setAeParams(ObjectNode ext) {
final int extAe = Optional.ofNullable(ext)
.map(extNode -> extNode.get(EXT_AE))
.filter(JsonNode::isInt)
.map(JsonNode::asInt)
.orElse(-1);

final boolean extIgsAePresent = Optional.ofNullable(ext)
.map(extNode -> extNode.get(EXT_IGS))
.map(igsNode -> igsNode.get(EXT_AE))
.isPresent();

if (!extIgsAePresent && (extAe == 0 || extAe == 1)) {
final ObjectNode igsNode = jacksonMapper.mapper().createObjectNode()
.set(EXT_AE, IntNode.valueOf(extAe));

ext.set(EXT_IGS, igsNode);
}
}

private static JsonNode bidderParamsFromImpExtPrebidImp(ObjectNode ext) {
return Optional.ofNullable(ext)
.map(extNode -> extNode.get(EXT_PREBID))
Expand Down
12 changes: 0 additions & 12 deletions src/main/java/org/prebid/server/auction/model/PaaFormat.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.prebid.server.auction.aliases.BidderAliases;
import org.prebid.server.auction.ImplicitParametersExtractor;
import org.prebid.server.auction.IpAddressHelper;
import org.prebid.server.auction.PriceGranularity;
import org.prebid.server.auction.SecBrowsingTopicsResolver;
import org.prebid.server.auction.TimeoutResolver;
import org.prebid.server.auction.aliases.BidderAliases;
import org.prebid.server.auction.model.AuctionContext;
import org.prebid.server.auction.model.Endpoint;
import org.prebid.server.auction.model.IpAddress;
Expand Down Expand Up @@ -89,7 +89,7 @@ public class Ortb2ImplicitParametersResolver {
private static final String BIDDER_EXT = "bidder";

private static final Set<String> IMP_EXT_NON_BIDDER_FIELDS =
Set.of(PREBID_EXT, "context", "all", "general", "skadn", "data", "gpid", "tid", "ae");
Set.of(PREBID_EXT, "context", "all", "general", "skadn", "data", "gpid", "tid");
private static final String OVERRIDE_SOURCE_ID_TEMPLATE = "{{UUID}}";

private final boolean shouldCacheOnlyWinningBids;
Expand Down Expand Up @@ -521,10 +521,10 @@ private User populateUser(User user, CaseInsensitiveMultiMap headers, boolean de

return populatedData != null
? Optional.ofNullable(user)
.map(User::toBuilder)
.orElseGet(User::builder)
.data(populatedData)
.build()
.map(User::toBuilder)
.orElseGet(User::builder)
.data(populatedData)
.build()
: null;
}

Expand Down Expand Up @@ -625,9 +625,9 @@ private static Set<String> newSegmentsIds(List<Segment> segments, Set<String> ne
? SetUtils.difference(
newIds,
CollectionUtils.emptyIfNull(segments).stream()
.filter(Objects::nonNull)
.map(Segment::getId)
.collect(Collectors.toSet()))
.filter(Objects::nonNull)
.map(Segment::getId)
.collect(Collectors.toSet()))
: newIds;
}

Expand Down Expand Up @@ -1030,10 +1030,10 @@ private Imp populateImp(Imp imp,

return ObjectUtils.anyNotNull(populatedImpId, populatedImpSecure, populatedImpExt)
? imp.toBuilder()
.id(populatedImpId != null ? populatedImpId : impId)
.secure(populatedImpSecure != null ? populatedImpSecure : impSecure)
.ext(populatedImpExt != null ? populatedImpExt : impExt)
.build()
.id(populatedImpId != null ? populatedImpId : impId)
.secure(populatedImpSecure != null ? populatedImpSecure : impSecure)
.ext(populatedImpExt != null ? populatedImpExt : impExt)
.build()
: null;
}

Expand Down
17 changes: 0 additions & 17 deletions src/main/java/org/prebid/server/bidder/Bidder.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.iab.openrtb.request.BidRequest;
import org.prebid.server.bidder.model.BidderBid;
import org.prebid.server.bidder.model.BidderCall;
import org.prebid.server.bidder.model.CompositeBidderResponse;
import org.prebid.server.bidder.model.HttpRequest;
import org.prebid.server.bidder.model.Result;

Expand Down Expand Up @@ -33,22 +32,6 @@ public interface Bidder<T> {
*/
Result<List<BidderBid>> makeBids(BidderCall<T> httpCall, BidRequest bidRequest);

/**
* Compound Bidder response with bids and other data to be passed back.
* <p>
* The errors should contain a list of errors which explain why this bidder's bids will be
* "subpar" in some way. For example: the server response didn't have the expected format.
*/
default CompositeBidderResponse makeBidderResponse(BidderCall<T> httpCall, BidRequest bidRequest) {
final var result = makeBids(httpCall, bidRequest);
return result != null
? CompositeBidderResponse.builder()
.bids(result.getValue())
.errors(result.getErrors())
.build()
: null;
}

/**
* Extracts targeting from bidder-specific extension. It is safe to assume that {@code ext} is not null.
*/
Expand Down
44 changes: 9 additions & 35 deletions src/main/java/org/prebid/server/bidder/HttpBidderRequester.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import io.vertx.core.MultiMap;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.prebid.server.auction.aliases.BidderAliases;
import org.prebid.server.auction.ExchangeService;
import org.prebid.server.auction.aliases.BidderAliases;
import org.prebid.server.auction.model.BidRejectionReason;
import org.prebid.server.auction.model.BidRejectionTracker;
import org.prebid.server.auction.model.BidderRequest;
Expand All @@ -18,7 +18,6 @@
import org.prebid.server.bidder.model.BidderCallType;
import org.prebid.server.bidder.model.BidderError;
import org.prebid.server.bidder.model.BidderSeatBid;
import org.prebid.server.bidder.model.CompositeBidderResponse;
import org.prebid.server.bidder.model.HttpRequest;
import org.prebid.server.bidder.model.HttpResponse;
import org.prebid.server.bidder.model.Result;
Expand All @@ -30,8 +29,6 @@
import org.prebid.server.log.LoggerFactory;
import org.prebid.server.model.CaseInsensitiveMultiMap;
import org.prebid.server.proto.openrtb.ext.response.ExtHttpCall;
import org.prebid.server.proto.openrtb.ext.response.ExtIgi;
import org.prebid.server.proto.openrtb.ext.response.FledgeAuctionConfig;
import org.prebid.server.util.HttpUtil;
import org.prebid.server.vertx.httpclient.HttpClient;
import org.prebid.server.vertx.httpclient.model.HttpClientResponse;
Expand Down Expand Up @@ -191,9 +188,7 @@ private Future<BidderSeatBid> emptyBidderSeatBidWithErrors(List<BidderError> bid
"The bidder failed to generate any bid requests, but also failed to generate an error"))
: bidderErrors;

return Future.succeededFuture(BidderSeatBid.builder()
.errors(errors)
.build());
return Future.succeededFuture(BidderSeatBid.builder().errors(errors).build());
}

/**
Expand Down Expand Up @@ -296,10 +291,7 @@ private <T> Void processHttpCall(Bidder<T> bidder,
return null;
}

/**
* Returns result based on response status code, list of {@link BidderBid}s and other data from bidder.
*/
private static <T> CompositeBidderResponse makeBids(Bidder<T> bidder,
private static <T> Result<List<BidderBid>> makeBids(Bidder<T> bidder,
BidderCall<T> httpCall,
BidRequest bidRequest) {

Expand All @@ -309,13 +301,13 @@ private static <T> CompositeBidderResponse makeBids(Bidder<T> bidder,

final int statusCode = httpCall.getResponse().getStatusCode();
if (statusCode == HttpResponseStatus.NO_CONTENT.code()) {
return CompositeBidderResponse.empty();
return Result.empty();
}
if (statusCode != HttpResponseStatus.OK.code()) {
return null;
}

return bidder.makeBidderResponse(toHttpCallWithSafeResponseBody(httpCall), bidRequest);
return bidder.makeBids(toHttpCallWithSafeResponseBody(httpCall), bidRequest);
}

/**
Expand Down Expand Up @@ -346,8 +338,6 @@ private static class ResultBuilder<T> {
private final Map<HttpRequest<T>, BidderCall<T>> bidderCallsRecorded = new HashMap<>();
private final List<BidderBid> bidsRecorded = new ArrayList<>();
private final List<BidderError> errorsRecorded = new ArrayList<>();
private final List<ExtIgi> igiRecorded = new ArrayList<>();
private final List<FledgeAuctionConfig> fledgeRecorded = new ArrayList<>();

ResultBuilder(List<HttpRequest<T>> httpRequests,
List<BidderError> previousErrors,
Expand All @@ -362,25 +352,23 @@ private static class ResultBuilder<T> {
this.mapper = mapper;
}

void addHttpCall(BidderCall<T> bidderCall, CompositeBidderResponse bidderResponse) {
void addHttpCall(BidderCall<T> bidderCall, Result<List<BidderBid>> bidderResponse) {
bidderCallsRecorded.put(bidderCall.getRequest(), bidderCall);
handleBids(bidderResponse);
handleBidderErrors(bidderResponse);
handleBidderCallError(bidderCall);
handleIgis(bidderResponse);
handleFledgeAuctionConfigs(bidderResponse);
}

private void handleBids(CompositeBidderResponse bidderResponse) {
final List<BidderBid> bids = bidderResponse != null ? bidderResponse.getBids() : null;
private void handleBids(Result<List<BidderBid>> bidderResponse) {
final List<BidderBid> bids = bidderResponse != null ? bidderResponse.getValue() : null;
if (bids != null) {
bidsRecorded.addAll(bids);
completionTracker.processBids(bids);
bidRejectionTracker.succeed(bids);
}
}

private void handleBidderErrors(CompositeBidderResponse bidderResponse) {
private void handleBidderErrors(Result<List<BidderBid>> bidderResponse) {
final List<BidderError> bidderErrors = bidderResponse != null ? bidderResponse.getErrors() : null;
if (bidderErrors != null) {
errorsRecorded.addAll(bidderErrors);
Expand Down Expand Up @@ -425,18 +413,6 @@ private void handleBidderCallError(BidderCall<T> bidderCall) {
bidRejectionTracker.rejectImps(requestedImpIds, reason);
}

private void handleFledgeAuctionConfigs(CompositeBidderResponse bidderResponse) {
Optional.ofNullable(bidderResponse)
.map(CompositeBidderResponse::getFledgeAuctionConfigs)
.ifPresent(fledgeRecorded::addAll);
}

private void handleIgis(CompositeBidderResponse bidderResponse) {
Optional.ofNullable(bidderResponse)
.map(CompositeBidderResponse::getIgi)
.ifPresent(igiRecorded::addAll);
}

BidderSeatBid toBidderSeatBid(boolean debugEnabled) {
final List<BidderCall<T>> httpCalls = new ArrayList<>(bidderCallsRecorded.values());
httpRequests.stream()
Expand All @@ -454,8 +430,6 @@ BidderSeatBid toBidderSeatBid(boolean debugEnabled) {
.bids(bidsRecorded)
.httpCalls(extHttpCalls)
.errors(errors)
.igi(igiRecorded)
.fledgeAuctionConfigs(fledgeRecorded)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.prebid.server.bidder.model.BidderBid;
import org.prebid.server.bidder.model.BidderCall;
import org.prebid.server.bidder.model.BidderError;
import org.prebid.server.bidder.model.CompositeBidderResponse;
import org.prebid.server.bidder.model.HttpRequest;
import org.prebid.server.bidder.model.Result;
import org.prebid.server.exception.PreBidException;
Expand Down Expand Up @@ -112,23 +111,13 @@ private static MultiMap resolveHeaders() {
}

@Override
@Deprecated(since = "Not used, since Bidder.makeBidderResponse(...) was overridden.")
public Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
return Result.withError(BidderError.generic("Invalid method call"));
}

@Override
public CompositeBidderResponse makeBidderResponse(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
try {
final BidResponse bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class);
final List<BidderError> errors = new ArrayList<>();

return CompositeBidderResponse.builder()
.bids(extractConsumableBids(bidRequest, bidResponse, errors))
.errors(errors)
.build();
final BidResponse bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class);
return Result.of(extractConsumableBids(bidRequest, bidResponse, errors), errors);
} catch (DecodeException e) {
return CompositeBidderResponse.withError(BidderError.badServerResponse(e.getMessage()));
return Result.withError(BidderError.badServerResponse(e.getMessage()));
}
}

Expand Down

This file was deleted.

Loading