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,26 @@ 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+
88+ private static List <Rejection > toRejections (SeatNonBid seatNonBid ) {
89+ return seatNonBid .getNonBid ().stream ()
90+ .map (nonBid -> (Rejection ) ImpRejection .of (nonBid .getImpId (), nonBid .getStatusCode ()))
91+ .toList ();
92+ }
93+
94+ private static Map <String , List <Rejection >> toRejections (List <SeatNonBid > seatNonBids ) {
95+ return seatNonBids .stream ()
96+ .collect (Collectors .toMap (SeatNonBid ::getSeat , PbRuleEngineProcessedAuctionRequestHook ::toRejections ));
97+ }
98+
7299 private static Future <InvocationResult <AuctionRequestPayload >> failure (Throwable error ) {
73100 return Future .succeededFuture (
74101 InvocationResultImpl .<AuctionRequestPayload >builder ()
@@ -78,14 +105,6 @@ private static Future<InvocationResult<AuctionRequestPayload>> failure(Throwable
78105 .build ());
79106 }
80107
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-
89108 @ Override
90109 public String code () {
91110 return CODE ;
0 commit comments