sealed
A transput is EITHER an input, or an output (see: https://ell.stackexchange.com/questions/21405/hypernym-for-input-and-output). The transput traits contain common functionality, shared by all inputs and outputs.
Note that implementations of EndpointIO
can be used both as inputs and outputs.
The hierarchy is as follows:
/---> `EndpointInput` >---\
`EndpointTransput` >--- ---> `EndpointIO`
\---> `EndpointOutput` >---/
Inputs and outputs additionally form another hierarchy:
/--> `Single` >--> `Basic` >--> `Atom`
`EndpointInput` / `EndpointOutput` >--
\--> `Pair`
where the intuition behind the traits is:
single
: represents a single value, as opposed to a pair (tuple); a pair, but transformed using.map
is also a single valuebasic
: corresponds to an input/output which is encoded/decoded in one step; alwayssingle
atom
: corresponds to a single component of a request or response. Such inputs/outputs contain a Codec and Info meta-data, and are alwaysbasic
- Companion
- object
trait EndpointInput[T]
trait EndpointIO[T]
trait Single[I]
trait Basic[I]
trait Atom[I]
class Empty[T]
class FixedHeader[T]
class Header[T]
class Headers[T]
trait Single[T]
trait Basic[T]
trait Atom[T]
class Cookie[T]
class ExtractFromRequest[T]
class FixedMethod[T]
class FixedPath[T]
class PathCapture[T]
class PathsCapture[T]
class Query[T]
class QueryParams[T]
trait EndpointOutput[T]
trait Single[T]
trait Basic[T]
trait Atom[T]
class FixedStatusCode[T]
class StatusCode[T]
class Void[T]
trait Basic[T]
trait Atom[T]
trait Pair[T]