sttp.tapir.server.interceptor

Members list

Concise view

Type members

Classlikes

case class CustomiseInterceptors[F[_], O](createOptions: CustomiseInterceptors[F, O] => O, prependedInterceptors: List[Interceptor[F]], metricsInterceptor: Option[MetricsRequestInterceptor[F]], corsInterceptor: Option[CORSInterceptor[F]], rejectHandler: Option[RejectHandler[F]], exceptionHandler: Option[ExceptionHandler[F]], serverLog: Option[ServerLog[F]], notAcceptableInterceptor: Option[NotAcceptableInterceptor[F]], additionalInterceptors: List[Interceptor[F]], decodeFailureHandler: DecodeFailureHandler, appendedInterceptors: List[Interceptor[F]])

Allows customising the interceptors used by the server interpreter. Custom interceptors can be added via addInterceptor, sitting between two configurable, default interceptor groups.

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 .options to obtain the server interpreter options to use.

Attributes

additionalInterceptors

Additional interceptors, which will be called before (on request) / after (on response) the decodeFailureHandler one, e.g. performing logging, metrics, or providing alternate responses.

appendedInterceptors

Additional interceptors, which will be called last on request / first on response, e.g. handling decode failures, 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.

exceptionHandler

Whether to respond to exceptions in the server logic, or propagate them to the server.

metricsInterceptor

Whether to collect metrics.

notAcceptableInterceptor

Whether to return 406 (not acceptable) if there's no body in the endpoint's outputs, which can satisfy the constraints from the Accept header.

prependedInterceptors

Additional interceptors, which will be called first on request / last on response, e.g. performing logging, metrics, or providing alternate responses.

rejectHandler

How to respond when decoding fails for all interpreted endpoints.

serverLog

The server log using which an interceptor will be created, if any.

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
case class DecodeFailureContext(endpoint: AnyEndpoint, failingInput: EndpointInput[_], failure: Failure, request: ServerRequest)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
case class DecodeSuccessContext[F[_], A, U, I](serverEndpoint: ServerEndpoint[_, F] { type SECURITY_INPUT = A; type PRINCIPAL = U; type INPUT = I; type ERROR_OUTPUT; type OUTPUT; }, securityInput: A, principal: U, input: I, request: ServerRequest)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
trait EndpointHandler[F[_], B]

Handles the result of decoding a request using an endpoint's inputs.

Handles the result of decoding a request using an endpoint's inputs.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
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. Ultimately, when all interceptors are run, the endpoint's server logic will be run (in case of a decode success), or None will be returned (in case of decode failure).

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 None will be returned (in case of decode failure).

Instead of calling the nested behavior, alternative responses can be returned using the responder.

Attributes

Companion:
object
Graph
Supertypes
trait Interceptor[F]
class Object
trait Matchable
class Any
Known subtypes

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
sealed trait Interceptor[F[_]]

Intercepts requests, and endpoint decode events. Using interceptors it's possible to:

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.

Attributes

F

The effect type constructor.

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait RequestHandler[F[_], R, B]

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
trait RequestInterceptor[F[_]] extends Interceptor[F]

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 through requestHandler. Ultimately, when all interceptors are run, logic decoding subsequent endpoint inputs will be run.

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 through requestHandler. 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.

Attributes

F

The effect type constructor.

Companion:
object
Graph
Supertypes
trait Interceptor[F]
class Object
trait Matchable
class Any
Known subtypes

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
sealed trait RequestResult[+B]

The result of processing a request: either a response, or a list of endpoint decoding failures.

The result of processing a request: either a response, or a list of endpoint decoding failures.

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class Failure
class Response[B]

Attributes

Companion:
trait
Graph
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type
trait Responder[F[_], B]

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
case class SecurityFailureContext[F[_], A](serverEndpoint: ServerEndpoint[_, F] { type SECURITY_INPUT = A; type PRINCIPAL; type INPUT; type ERROR_OUTPUT; type OUTPUT; }, securityInput: A, request: ServerRequest)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any