28 Func<TResult, TApiModel> resultTransformer,
30 where TApiModel : notnull
32 if (authorityResponse.IsNoContent!.Value)
33 return controller.NoContent();
35 var successResponse = authorityResponse.SuccessResponse;
36 var result = resultTransformer(authorityResponse.Result!);
37 return successResponse
switch
39 HttpSuccessResponse.Ok => controller.Json(result),
40 HttpSuccessResponse.Created => controller.Created(result),
41 HttpSuccessResponse.Accepted => controller.Accepted(result),
42 _ =>
throw new InvalidOperationException($
"Invalid {nameof(HttpSuccessResponse)}: {successResponse}"),
56 if (authorityResponse ==
null)
57 return controller.Forbid();
64 return failureResponse
switch
66 HttpFailureResponse.BadRequest => controller.BadRequest(errorMessage),
67 HttpFailureResponse.Unauthorized => controller.Unauthorized(),
68 HttpFailureResponse.Forbidden => controller.Forbid(),
69 HttpFailureResponse.NotFound => controller.
NotFound(errorMessage),
70 HttpFailureResponse.NotAcceptable => controller.
StatusCode(HttpStatusCode.NotAcceptable, errorMessage),
71 HttpFailureResponse.Conflict => controller.Conflict(errorMessage),
72 HttpFailureResponse.Gone => controller.
StatusCode(HttpStatusCode.Gone, errorMessage),
73 HttpFailureResponse.UnprocessableEntity => controller.UnprocessableEntity(errorMessage),
74 HttpFailureResponse.FailedDependency => controller.
StatusCode(HttpStatusCode.FailedDependency, errorMessage),
75 HttpFailureResponse.RateLimited => controller.
StatusCode(HttpStatusCode.TooManyRequests, errorMessage),
76 HttpFailureResponse.NotImplemented => controller.
StatusCode(HttpStatusCode.NotImplemented, errorMessage),
77 HttpFailureResponse.ServiceUnavailable => controller.
StatusCode(HttpStatusCode.ServiceUnavailable, errorMessage),
78 _ =>
throw new InvalidOperationException($
"Invalid {nameof(HttpFailureResponse)}: {failureResponse}"),
95 ArgumentNullException.ThrowIfNull(controller);
96 ArgumentNullException.ThrowIfNull(authorityInvoker);
98 var requirementsGate = authorityInvoker(
Authority);
99 var authorityResponse = await ExecuteIfRequirementsSatisfied(requirementsGate);
106 ArgumentNullException.ThrowIfNull(controller);
107 ArgumentNullException.ThrowIfNull(authorityInvoker);
109 var requirementsGate = authorityInvoker(
Authority);
110 var authorityResponse = await ExecuteIfRequirementsSatisfied(requirementsGate);
112 if (erroredResult !=
null)
113 return erroredResult;
115 return CreateSuccessfulActionResult(controller, result => result, authorityResponse!);
121 ArgumentNullException.ThrowIfNull(controller);
122 ArgumentNullException.ThrowIfNull(authorityInvoker);
124 var requirementsGate = authorityInvoker(
Authority);
125 var authorityResponse = await ExecuteIfRequirementsSatisfied(requirementsGate);
127 if (erroredResult !=
null)
128 return erroredResult;
130 return CreateSuccessfulActionResult(controller, result => result.ToApi(), authorityResponse!);