Skip to content

Commit 412e9f6

Browse files
author
EvgeniiMunin
committed
invocation result: update bid request
1 parent 172d9c9 commit 412e9f6

File tree

2 files changed

+93
-33
lines changed

2 files changed

+93
-33
lines changed

extra/modules/greenbids-real-time-data/src/main/java/org/prebid/server/hooks/modules/greenbids/real/time/data/v1/GreenbidsRealTimeDataProcessedAuctionRequestHook.java

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@
1313
import io.vertx.core.Future;
1414
import org.prebid.server.auction.model.AuctionContext;
1515
import org.prebid.server.exception.PreBidException;
16+
import org.prebid.server.hooks.execution.v1.auction.AuctionRequestPayloadImpl;
1617
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.GreenbidsUserAgent;
1718
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.OnnxModelRunner;
1819
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.ThrottlingMessage;
20+
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.InvocationResultImpl;
21+
import org.prebid.server.hooks.v1.InvocationAction;
1922
import org.prebid.server.hooks.v1.InvocationResult;
23+
import org.prebid.server.hooks.v1.InvocationStatus;
2024
import org.prebid.server.hooks.v1.auction.AuctionInvocationContext;
2125
import org.prebid.server.hooks.v1.auction.AuctionRequestPayload;
2226
import org.prebid.server.hooks.v1.auction.ProcessedAuctionRequestHook;
@@ -141,7 +145,59 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
141145
}
142146
});
143147

144-
return Future.succeededFuture();
148+
// update Bid Request with filtered bidders
149+
List<Imp> impsWithFilteredBidders = updateImps(bidRequest, impsBiddersFilterMap);
150+
BidRequest updatedBidRequest = bidRequest.toBuilder().imp(impsWithFilteredBidders).build();
151+
152+
// update invocation result
153+
InvocationResult<AuctionRequestPayload> invocationResult = InvocationResultImpl.<AuctionRequestPayload>builder()
154+
.status(InvocationStatus.success)
155+
.action(InvocationAction.update)
156+
.errors(null)
157+
.debugMessages(null)
158+
.analyticsTags(null)
159+
.payloadUpdate(payload -> AuctionRequestPayloadImpl.of(updatedBidRequest))
160+
.build();
161+
162+
return Future.succeededFuture(invocationResult);
163+
}
164+
165+
private List<Imp> updateImps(BidRequest bidRequest, Map<String, Map<String, Boolean>> impsBiddersFilterMap) {
166+
return bidRequest.getImp().stream()
167+
.map(imp -> updateImp(imp, impsBiddersFilterMap.get(imp.getId())))
168+
.toList();
169+
}
170+
171+
private Imp updateImp(Imp imp, Map<String, Boolean> bidderFilterMap) {
172+
return imp.toBuilder()
173+
.ext(updateImpExt(imp.getExt(), bidderFilterMap))
174+
.build();
175+
}
176+
177+
private ObjectNode updateImpExt(ObjectNode impExt, Map<String, Boolean> bidderFilterMap) {
178+
179+
ObjectNode bidderNode = Optional.ofNullable(impExt)
180+
.map(ext -> extImpPrebid(ext.get("prebid")))
181+
.map(ExtImpPrebid::getBidder)
182+
.orElse(null);
183+
184+
//final JsonNode extPrebid = ext.path("prebid");
185+
//final JsonNode impExtNode = imp.getExt();
186+
//final JsonNode bidderExtNode = isNotEmptyOrMissedNode(impExtNode) ? impExtNode.get("bidder") : null;
187+
//JsonNode bidderNode = extImpPrebid(impExt.get("prebid")).getBidder();
188+
189+
//final JsonNode extPrebid = ext.path("prebid");
190+
//JsonNode bidderNode = extImpPrebid(ext.get("prebid")).getBidder();
191+
192+
for(Map.Entry<String, Boolean> entry: bidderFilterMap.entrySet()) {
193+
String bidderName = entry.getKey();
194+
Boolean isKeptInAuction = entry.getValue();
195+
196+
if (!isKeptInAuction & bidderNode != null) {
197+
bidderNode.remove(bidderName);
198+
}
199+
}
200+
return bidderNode;
145201
}
146202

147203
private List<ThrottlingMessage> extractThrottlingMessages(
@@ -214,38 +270,6 @@ private static String[][] convertToArray(List<ThrottlingMessage> messages) {
214270
return result;
215271
}
216272

217-
private Imp updateImp(Imp imp, Map<String, Boolean> bidderFilterMap) {
218-
return imp.toBuilder()
219-
.ext(updateImpExt(imp.getExt(), bidderFilterMap))
220-
.build();
221-
}
222-
223-
private ObjectNode updateImpExt(ObjectNode impExt, Map<String, Boolean> bidderFilterMap) {
224-
225-
ObjectNode bidderNode = Optional.ofNullable(impExt)
226-
.map(ext -> extImpPrebid(ext.get("prebid")))
227-
.map(ExtImpPrebid::getBidder)
228-
.orElse(null);
229-
230-
//final JsonNode extPrebid = ext.path("prebid");
231-
//final JsonNode impExtNode = imp.getExt();
232-
//final JsonNode bidderExtNode = isNotEmptyOrMissedNode(impExtNode) ? impExtNode.get("bidder") : null;
233-
//JsonNode bidderNode = extImpPrebid(impExt.get("prebid")).getBidder();
234-
235-
//final JsonNode extPrebid = ext.path("prebid");
236-
//JsonNode bidderNode = extImpPrebid(ext.get("prebid")).getBidder();
237-
238-
for(Map.Entry<String, Boolean> entry: bidderFilterMap.entrySet()) {
239-
String bidderName = entry.getKey();
240-
Boolean isKeptInAUction = entry.getValue();
241-
242-
if (!isKeptInAUction & bidderNode != null) {
243-
bidderNode.remove(bidderName);
244-
}
245-
}
246-
return bidderNode;
247-
}
248-
249273
@Override
250274
public String code() {
251275
return CODE;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model;
2+
3+
import lombok.Builder;
4+
import lombok.Value;
5+
import lombok.experimental.Accessors;
6+
import org.prebid.server.hooks.v1.InvocationAction;
7+
import org.prebid.server.hooks.v1.InvocationResult;
8+
import org.prebid.server.hooks.v1.InvocationStatus;
9+
import org.prebid.server.hooks.v1.PayloadUpdate;
10+
import org.prebid.server.hooks.v1.analytics.Tags;
11+
12+
import java.util.List;
13+
14+
@Accessors(fluent = true)
15+
@Builder
16+
@Value
17+
public class InvocationResultImpl<PAYLOAD> implements InvocationResult<PAYLOAD> {
18+
19+
InvocationStatus status;
20+
21+
String message;
22+
23+
InvocationAction action;
24+
25+
PayloadUpdate<PAYLOAD> payloadUpdate;
26+
27+
List<String> errors;
28+
29+
List<String> warnings;
30+
31+
List<String> debugMessages;
32+
33+
Object moduleContext;
34+
35+
Tags analyticsTags;
36+
}

0 commit comments

Comments
 (0)