Codec

@implicitNotFound(msg = "Cannot find a codec between types: ${L} and ${H}, formatted as: ${CF}.\nDid you define a codec for: ${H}?\nDid you import the codecs for: ${CF}?\n") trait Codec[L, H, +CF <: CodecFormat]

A bi-directional mapping between low-level values of type L and high-level values of type H. Low level values are formatted as CF.

The mapping consists of a pair of functions, one to decode (L => H), and one to encode (H => L) Decoding can fail, and this is represented as a result of type DecodeResult.

A codec also contains optional meta-data on the schema of the high-level value, as well as an instance of the format (which determines the media type of the low-level value).

Codec instances are used as implicit values, and are looked up when defining endpoint inputs/outputs. Depending on a particular endpoint input/output, it might require a codec which uses a specific format, or a specific low-level value.

Codec instances can be derived basing on other values (e.g. such as json encoders/decoders when integrating with json libraries). Or, they can be defined by hand for custom types, usually customising an existing, simpler codec.

Codecs can be chained with Mappings using the map function.

Type Params
CF

The format of encoded values. Corresponds to the media type.

H

The type of the high-level value.

L

The type of the low-level value.

Companion
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def encode(h: H): L
Implicitly added by textWebSocketFrameCodec
def encode(h: H): L
Implicitly added by textOrCloseWebSocketFrameCodec
def encode(h: H): L
Implicitly added by binaryWebSocketFrameCodec
def encode(h: H): L
def encode(h: H): L
Implicitly added by list
def encode(h: H): L
Implicitly added by set
def encode(h: H): L
Implicitly added by vector
def encode(h: H): L
Implicitly added by listHead
def encode(h: H): L
Implicitly added by listHeadOption
def encode(h: H): L
Implicitly added by optionHead
def encode(h: H): L
Implicitly added by option
def encode(h: H): L
def format: CF
Implicitly added by textWebSocketFrameCodec
def format: CF
Implicitly added by textOrCloseWebSocketFrameCodec
def format: CF
Implicitly added by binaryWebSocketFrameCodec
def format: CF
def format: CF
Implicitly added by list
def format: CF
Implicitly added by set
def format: CF
Implicitly added by vector
def format: CF
Implicitly added by listHead
def format: CF
Implicitly added by listHeadOption
def format: CF
Implicitly added by optionHead
def format: CF
Implicitly added by option
def format: CF
def rawDecode(l: L): DecodeResult[H]
Implicitly added by textWebSocketFrameCodec
def rawDecode(l: L): DecodeResult[H]
Implicitly added by textOrCloseWebSocketFrameCodec
def rawDecode(l: L): DecodeResult[H]
Implicitly added by binaryWebSocketFrameCodec
def rawDecode(l: L): DecodeResult[H]
def rawDecode(l: L): DecodeResult[H]
Implicitly added by list
def rawDecode(l: L): DecodeResult[H]
Implicitly added by set
def rawDecode(l: L): DecodeResult[H]
Implicitly added by vector
def rawDecode(l: L): DecodeResult[H]
Implicitly added by listHead
def rawDecode(l: L): DecodeResult[H]
Implicitly added by listHeadOption
def rawDecode(l: L): DecodeResult[H]
Implicitly added by optionHead
def rawDecode(l: L): DecodeResult[H]
Implicitly added by option
def rawDecode(l: L): DecodeResult[H]
def schema: Schema[H]
Implicitly added by textWebSocketFrameCodec
def schema: Schema[H]
Implicitly added by textOrCloseWebSocketFrameCodec
def schema: Schema[H]
Implicitly added by binaryWebSocketFrameCodec
def schema: Schema[H]
def schema: Schema[H]
Implicitly added by list
def schema: Schema[H]
Implicitly added by set
def schema: Schema[H]
Implicitly added by vector
def schema: Schema[H]
Implicitly added by listHead
def schema: Schema[H]
Implicitly added by listHeadOption
def schema: Schema[H]
Implicitly added by optionHead
def schema: Schema[H]
Implicitly added by option
def schema: Schema[H]

Concrete methods

def decode(l: L): DecodeResult[H]
Implicitly added by textWebSocketFrameCodec
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by textOrCloseWebSocketFrameCodec
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by binaryWebSocketFrameCodec
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by list
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by set
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by vector
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by listHead
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by listHeadOption
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by optionHead
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
Implicitly added by option
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def decode(l: L): DecodeResult[H]
  • calls rawDecode
  • catches any exceptions that might occur, converting them to decode failures
  • validates the result
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by textWebSocketFrameCodec
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by textOrCloseWebSocketFrameCodec
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by binaryWebSocketFrameCodec
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by list
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by set
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by vector
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by listHead
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by listHeadOption
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by optionHead
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
Implicitly added by option
def format[CF2 <: CodecFormat](f: CF2): Codec[L, H, CF2]
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by textWebSocketFrameCodec
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by textWebSocketFrameCodec
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by binaryWebSocketFrameCodec
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by binaryWebSocketFrameCodec
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by list
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by list
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by set
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by set
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by vector
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by vector
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by listHead
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by listHead
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by listHeadOption
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by listHeadOption
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by optionHead
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by optionHead
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
Implicitly added by option
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
Implicitly added by option
def map[HH](mapping: Mapping[H, HH]): Codec[L, HH, CF]
def map[HH](f: H => HH)(g: HH => H): Codec[L, HH, CF]
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by textWebSocketFrameCodec
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by binaryWebSocketFrameCodec
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by list
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by set
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by vector
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by listHead
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by listHeadOption
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by optionHead
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
Implicitly added by option
def mapDecode[HH](f: H => DecodeResult[HH])(g: HH => H): Codec[L, HH, CF]
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def schema(s2: Schema[H]): Codec[L, H, CF]
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by list
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by list
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by list
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by set
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by set
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by set
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by vector
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by vector
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by vector
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by listHead
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by listHead
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by listHead
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by listHeadOption
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by listHeadOption
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by listHeadOption
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by optionHead
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by optionHead
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by optionHead
def schema(s2: Schema[H]): Codec[L, H, CF]
Implicitly added by option
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
Implicitly added by option
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
Implicitly added by option
def schema(s2: Schema[H]): Codec[L, H, CF]
def schema(s2: Option[Schema[H]]): Codec[L, H, CF]
def schema(modify: Schema[H] => Schema[H]): Codec[L, H, CF]
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def validate(v: Validator[H]): Codec[L, H, CF]
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by list
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by set
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by vector
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by listHead
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by listHeadOption
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by optionHead
def validate(v: Validator[H]): Codec[L, H, CF]
Implicitly added by option
def validate(v: Validator[H]): Codec[L, H, CF]
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by list
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by set
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by vector
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by listHead
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by listHeadOption
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by optionHead
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
Implicitly added by option
def validateIterable[C <: ([X] =>> Iterable[X]), U](v: Validator[U])(implicit hIsCU: H =:= C[U]): Codec[L, H, CF]
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by textWebSocketFrameCodec
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by textOrCloseWebSocketFrameCodec
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by binaryWebSocketFrameCodec
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by list
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by set
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by vector
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by listHead
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by listHeadOption
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by optionHead
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]
Implicitly added by option
def validateOption[U](v: Validator[U])(implicit hIsOptionU: H =:= Option[U]): Codec[L, H, CF]