55import io .vertx .core .Future ;
66import org .apache .commons .lang3 .StringUtils ;
77import org .prebid .server .auction .model .AuctionContext ;
8+ import org .prebid .server .auction .model .ImpRejection ;
9+ import org .prebid .server .auction .model .Rejection ;
810import org .prebid .server .hooks .execution .v1 .InvocationResultImpl ;
911import org .prebid .server .hooks .execution .v1 .auction .AuctionRequestPayloadImpl ;
1012import org .prebid .server .hooks .modules .rule .engine .core .config .RuleParser ;
1921import org .prebid .server .hooks .v1 .auction .AuctionInvocationContext ;
2022import org .prebid .server .hooks .v1 .auction .AuctionRequestPayload ;
2123import org .prebid .server .hooks .v1 .auction .ProcessedAuctionRequestHook ;
24+ import org .prebid .server .proto .openrtb .ext .response .seatnonbid .SeatNonBid ;
2225
26+ import java .util .List ;
27+ import java .util .Map ;
2328import java .util .Objects ;
29+ import java .util .stream .Collectors ;
2430
2531public class PbRuleEngineProcessedAuctionRequestHook implements ProcessedAuctionRequestHook {
2632
@@ -60,6 +66,7 @@ private static Future<InvocationResult<AuctionRequestPayload>> succeeded(RuleRes
6066 InvocationResultImpl .<AuctionRequestPayload >builder ()
6167 .status (InvocationStatus .success )
6268 .action (toInvocationAction (result .getAction ()))
69+ .rejections (toRejections (result .getSeatNonBid ()))
6370 .analyticsTags (result .getAnalyticsTags ());
6471
6572 if (result .isUpdate ()) {
@@ -69,6 +76,25 @@ private static Future<InvocationResult<AuctionRequestPayload>> succeeded(RuleRes
6976 return Future .succeededFuture (resultBuilder .build ());
7077 }
7178
79+ private static InvocationAction toInvocationAction (RuleAction ruleAction ) {
80+ return switch (ruleAction ) {
81+ case NO_ACTION -> InvocationAction .no_action ;
82+ case UPDATE -> InvocationAction .update ;
83+ case REJECT -> InvocationAction .reject ;
84+ };
85+ }
86+
87+ private static List <Rejection > toRejections (SeatNonBid seatNonBid ) {
88+ return seatNonBid .getNonBid ().stream ()
89+ .map (nonBid -> (Rejection ) ImpRejection .of (nonBid .getImpId (), nonBid .getStatusCode ()))
90+ .toList ();
91+ }
92+
93+ private static Map <String , List <Rejection >> toRejections (List <SeatNonBid > seatNonBids ) {
94+ return seatNonBids .stream ()
95+ .collect (Collectors .toMap (SeatNonBid ::getSeat , PbRuleEngineProcessedAuctionRequestHook ::toRejections ));
96+ }
97+
7298 private static Future <InvocationResult <AuctionRequestPayload >> failure (Throwable error ) {
7399 return Future .succeededFuture (
74100 InvocationResultImpl .<AuctionRequestPayload >builder ()
@@ -78,14 +104,6 @@ private static Future<InvocationResult<AuctionRequestPayload>> failure(Throwable
78104 .build ());
79105 }
80106
81- private static InvocationAction toInvocationAction (RuleAction ruleAction ) {
82- return switch (ruleAction ) {
83- case NO_ACTION -> InvocationAction .no_action ;
84- case UPDATE -> InvocationAction .update ;
85- case REJECT -> InvocationAction .reject ;
86- };
87- }
88-
89107 @ Override
90108 public String code () {
91109 return CODE ;
0 commit comments