mapRouteResultWithPF • Akka HTTP (original) (raw)

Signature

def mapRouteResultWithPF(f: PartialFunction[RouteResult, Future[RouteResult]]): Directive0

Description

Asynchronous variant of mapRouteResultPF.

Changes the message the inner route sends to the responder.

The mapRouteResult directive is used as a building block for Custom Directives to transform the RouteResult coming back from the inner route.

See Result Transformation Directives for similar directives.

Example

Scala

source`case object MyCustomRejection extends Rejection val rejectRejections = // not particularly useful directive mapRouteResultWithPF { case Rejected(_) => Future(Rejected(List(AuthorizationFailedRejection))) } val route = rejectRejections { reject(MyCustomRejection) }

// tests: Get("/") ~> route ~> check { rejection shouldEqual AuthorizationFailedRejection }`

Java

source`import static akka.http.javadsl.server.Directives.mapRouteResultWithPF;

import static akka.http.javadsl.server.Directives.mapRouteResultWithPF; import static akka.http.javadsl.server.Directives.reject;

final Route route = mapRouteResultWithPF( new PFBuilder<RouteResult, CompletionStage>() .match(Rejected.class, rejected -> CompletableFuture.supplyAsync(() -> { final Iterable rejections = Collections.singletonList(Rejections.authorizationFailed()); return RouteResults.rejected(rejections); }) ).build(), () -> reject(new MyCustomRejection()));

// tests: runRouteUnSealed(route, HttpRequest.GET("/")) .assertRejections(Rejections.authorizationFailed());`

Found an error in this documentation? The source code for this page can be found here. Please feel free to edit and contribute a pull request.