|
13 | 13 | import io.vertx.core.Future;
|
14 | 14 | import org.prebid.server.auction.model.AuctionContext;
|
15 | 15 | import org.prebid.server.exception.PreBidException;
|
| 16 | +import org.prebid.server.hooks.execution.v1.auction.AuctionRequestPayloadImpl; |
16 | 17 | import org.prebid.server.hooks.modules.greenbids.real.time.data.model.GreenbidsUserAgent;
|
17 | 18 | import org.prebid.server.hooks.modules.greenbids.real.time.data.model.OnnxModelRunner;
|
18 | 19 | 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; |
19 | 22 | import org.prebid.server.hooks.v1.InvocationResult;
|
| 23 | +import org.prebid.server.hooks.v1.InvocationStatus; |
20 | 24 | import org.prebid.server.hooks.v1.auction.AuctionInvocationContext;
|
21 | 25 | import org.prebid.server.hooks.v1.auction.AuctionRequestPayload;
|
22 | 26 | import org.prebid.server.hooks.v1.auction.ProcessedAuctionRequestHook;
|
@@ -141,7 +145,59 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
|
141 | 145 | }
|
142 | 146 | });
|
143 | 147 |
|
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; |
145 | 201 | }
|
146 | 202 |
|
147 | 203 | private List<ThrottlingMessage> extractThrottlingMessages(
|
@@ -214,38 +270,6 @@ private static String[][] convertToArray(List<ThrottlingMessage> messages) {
|
214 | 270 | return result;
|
215 | 271 | }
|
216 | 272 |
|
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 |
| - |
249 | 273 | @Override
|
250 | 274 | public String code() {
|
251 | 275 | return CODE;
|
|
0 commit comments