Skip to content

Commit f483f33

Browse files
author
EvgeniiMunin
committed
filtering: fix update imp ext
1 parent 412e9f6 commit f483f33

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
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: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import java.util.List;
3737
import java.util.Map;
3838
import java.util.Objects;
39-
import java.util.Optional;
4039
import java.util.stream.Collectors;
4140
import java.util.stream.StreamSupport;
4241

@@ -114,7 +113,8 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
114113
long duration = (endTime - startTime); // in nanoseconds
115114
System.out.println("Inference time: " + duration / 1000000.0 + " ms");
116115

117-
double threshold = 0.15;
116+
//double threshold = 0.5;
117+
List<Double> threshold = Arrays.asList(0.1, 0.9, 0.2);
118118
Map<String, Map<String, Boolean>> impsBiddersFilterMap = new HashMap<>();
119119

120120
StreamSupport.stream(results.spliterator(), false)
@@ -135,7 +135,7 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
135135
ThrottlingMessage message = throttlingMessages.get(i);
136136
String impId = message.getAdUnitCode();
137137
String bidder = message.getBidder();
138-
boolean isKeptInAuction = probas[i][1] > threshold;
138+
boolean isKeptInAuction = probas[i][1] > threshold.get(i);
139139

140140
impsBiddersFilterMap.computeIfAbsent(impId, k -> new HashMap<>())
141141
.put(bidder, isKeptInAuction);
@@ -149,6 +149,7 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
149149
List<Imp> impsWithFilteredBidders = updateImps(bidRequest, impsBiddersFilterMap);
150150
BidRequest updatedBidRequest = bidRequest.toBuilder().imp(impsWithFilteredBidders).build();
151151

152+
152153
// update invocation result
153154
InvocationResult<AuctionRequestPayload> invocationResult = InvocationResultImpl.<AuctionRequestPayload>builder()
154155
.status(InvocationStatus.success)
@@ -159,6 +160,14 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
159160
.payloadUpdate(payload -> AuctionRequestPayloadImpl.of(updatedBidRequest))
160161
.build();
161162

163+
System.out.println(
164+
"GreenbidsRealTimeDataProcessedAuctionRequestHook/call" + "\n" +
165+
"impsBiddersFilterMap: " + impsBiddersFilterMap + "\n" +
166+
"impsWithFilteredBidders: " + impsWithFilteredBidders + "\n" +
167+
"updatedBidRequest: " + updatedBidRequest + "\n" +
168+
"invocationResult: " + invocationResult
169+
);
170+
162171
return Future.succeededFuture(invocationResult);
163172
}
164173

@@ -175,29 +184,23 @@ private Imp updateImp(Imp imp, Map<String, Boolean> bidderFilterMap) {
175184
}
176185

177186
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);
187+
ObjectNode updatedExt = impExt.deepCopy();
188+
ObjectNode prebidNode = (ObjectNode) updatedExt.get("prebid");
189+
if (prebidNode != null) {
190+
ObjectNode bidderNode = (ObjectNode) prebidNode.get("bidder");
191+
if (bidderNode != null) {
192+
for(Map.Entry<String, Boolean> entry: bidderFilterMap.entrySet()) {
193+
String bidderName = entry.getKey();
194+
Boolean isKeptInAuction = entry.getValue();
195+
196+
if (!isKeptInAuction) {
197+
bidderNode.remove(bidderName);
198+
}
199+
}
198200
}
199201
}
200-
return bidderNode;
202+
203+
return updatedExt;
201204
}
202205

203206
private List<ThrottlingMessage> extractThrottlingMessages(

0 commit comments

Comments
 (0)