package interceptor
- Alphabetic
- Public
- Protected
Package Members
Type Members
- case class CustomiseInterceptors[F[_], O](createOptions: (CustomiseInterceptors[F, O]) => O, prependedInterceptors: List[Interceptor[F]] = Nil, metricsInterceptor: Option[MetricsRequestInterceptor[F]] = None, corsInterceptor: Option[CORSInterceptor[F]] = None, rejectHandler: Option[RejectHandler[F]] = Some(DefaultRejectHandler[F]), exceptionHandler: Option[ExceptionHandler[F]] = Some(DefaultExceptionHandler[F]), serverLog: Option[ServerLog[F]] = None, notAcceptableInterceptor: Option[NotAcceptableInterceptor[F]] = Some(new NotAcceptableInterceptor[F]()), additionalInterceptors: List[Interceptor[F]] = Nil, decodeFailureHandler: DecodeFailureHandler = DefaultDecodeFailureHandler.default, appendedInterceptors: List[Interceptor[F]] = Nil) extends Product with Serializable
Allows customising the interceptors used by the server interpreter.
Allows customising the interceptors used by the server interpreter. Custom interceptors can be added via
addInterceptor, sitting between two configurable, default interceptor groups.The order of the interceptors corresponds to the ordering of the parameters.
Moreover, built-in interceptors can be customised or disabled. Once done, use
.optionsto obtain the server interpreter options to use.- prependedInterceptors
Additional interceptors, which will be called first on request / last on response, e.g. performing logging, metrics, or providing alternate responses.
- metricsInterceptor
Whether to collect metrics.
- rejectHandler
How to respond when decoding fails for all interpreted endpoints.
- exceptionHandler
Whether to respond to exceptions in the server logic, or propagate them to the server.
- serverLog
The server log using which an interceptor will be created, if any.
- notAcceptableInterceptor
Whether to return 406 (not acceptable) if there's no body in the endpoint's outputs, which can satisfy the constraints from the
Acceptheader.- additionalInterceptors
Additional interceptors, which will be called before (on request) / after (on response) the
decodeFailureHandlerone, e.g. performing logging, metrics, or providing alternate responses.- decodeFailureHandler
The decode failure handler, from which an interceptor will be created. Determines whether to respond when an input fails to decode.
- appendedInterceptors
Additional interceptors, which will be called last on request / first on response, e.g. handling decode failures, or providing alternate responses.
- case class DecodeFailureContext(endpoint: AnyEndpoint, failingInput: EndpointInput[_], failure: Failure, request: ServerRequest) extends Product with Serializable
- case class DecodeSuccessContext[F[_], A, U, I](serverEndpoint: Full[A, U, I, _, _, _, F], securityInput: A, principal: U, input: I, request: ServerRequest) extends Product with Serializable
- trait EndpointHandler[F[_], B] extends AnyRef
Handles the result of decoding a request using an endpoint's inputs.
- trait EndpointInterceptor[F[_]] extends Interceptor[F]
Allows intercepting the handling of a request by an endpoint, when either the endpoint's inputs have been decoded successfully, or when decoding has failed.
Allows intercepting the handling of a request by an endpoint, when either the endpoint's inputs have been decoded successfully, or when decoding has failed. Ultimately, when all interceptors are run, the endpoint's server logic will be run (in case of a decode success), or
Nonewill be returned (in case of decode failure).Instead of calling the nested behavior, alternative responses can be returned using the
responder. - sealed trait Interceptor[F[_]] extends AnyRef
Intercepts requests, and endpoint decode events.
Intercepts requests, and endpoint decode events. Using interceptors it's possible to:
- customise the request that is passed downstream
- short-circuit further processing and provide an alternate (or no) response
- replace or modify the response that is sent back to the client
Interceptors can be called when the request is started to be processed (use RequestInterceptor in this case), or for each endpoint, with either input success of failure decoding events (see EndpointInterceptor).
To add an interceptors, modify the server options of the server interpreter.
- F
The effect type constructor.
- trait RequestHandler[F[_], R, B] extends AnyRef
- trait RequestInterceptor[F[_]] extends Interceptor[F]
Allows intercepting the handling of
request, before decoding using any of the endpoints is done.Allows intercepting the handling of
request, before decoding using any of the endpoints is done. The request can be modified, before invoking further behavior, passed throughrequestHandler. Ultimately, when all interceptors are run, logic decoding subsequent endpoint inputs will be run.A request interceptor is called once for a request.
Instead of calling the nested behavior, alternative responses can be returned using the
responder.Moreover, when calling
requestHandler, an EndpointInterceptor can be provided, which will be added to the list of endpoint interceptors to call. The order in which the endpoint interceptors will be called will correspond to their order in the interceptors list in the server options. An "empty" interceptor can be provided using EndpointInterceptor.noop.- F
The effect type constructor.
- sealed trait RequestResult[+B] extends AnyRef
The result of processing a request: either a response, or a list of endpoint decoding failures.
- trait Responder[F[_], B] extends AnyRef
- case class SecurityFailureContext[F[_], A](serverEndpoint: Full[A, _, _, _, _, _, F], securityInput: A, request: ServerRequest) extends Product with Serializable
Value Members
- object EndpointInterceptor
- object RequestHandler
- object RequestInterceptor
- object RequestResult