HttpCodec

zio.http.codec.HttpCodec
See theHttpCodec companion object
sealed trait HttpCodec[-AtomTypes, Value]

A zio.http.codec.HttpCodec represents a codec for a part of an HTTP request. HttpCodec the HTTP protocol, these parts may be the unconsumed portion of the HTTP path (a route codec), the query string parameters (a query codec), the request headers (a header codec), or the request body (a body codec).

A HttpCodec is a purely declarative description of an input, and therefore, it can be used to generate documentation, clients, and client libraries.

HttpCodecs are a bit like invertible multi-channel parsers.

Attributes

Companion
object
Source
HttpCodec.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
HttpCodec[AtomTypes, Value]

Members list

Value members

Concrete methods

final def &[Value2](that: QueryCodec[Value2])(implicit combiner: Combiner[Value, Value2], ev: Query <:< AtomTypes): HttpCodec[Query, combiner.Out]

Append more query parameters to either a query codec, or to a pathQuery codec which is a combination of path and query

Append more query parameters to either a query codec, or to a pathQuery codec which is a combination of path and query

Attributes

Source
HttpCodec.scala
final def ++[AtomTypes1 <: AtomTypes, Value2](that: HttpCodec[AtomTypes1, Value2])(implicit combiner: Combiner[Value, Value2]): HttpCodec[AtomTypes1, combiner.Out]

Returns a new codec that is the composition of this codec and the specified codec. For codecs that include route codecs, the routes will be decoded sequentially from left to right.

Returns a new codec that is the composition of this codec and the specified codec. For codecs that include route codecs, the routes will be decoded sequentially from left to right.

Attributes

Source
HttpCodec.scala
final def ??(doc: Doc): HttpCodec[AtomTypes, Value]

Returns a new codec that is the same as this one, but has attached docs, which will render whenever docs are generated from the codec.

Returns a new codec that is the same as this one, but has attached docs, which will render whenever docs are generated from the codec.

Attributes

Source
HttpCodec.scala
final def ^?[Value2](that: QueryCodec[Value2])(implicit combiner: Combiner[Value, Value2], ev: Path <:< AtomTypes): HttpCodec[PathQuery, combiner.Out]

To end the route codec and begin with query codec, and re-interprets as PathQueryCodec

To end the route codec and begin with query codec, and re-interprets as PathQueryCodec

GET /ab/c :? paramStr("") &

Attributes

Source
HttpCodec.scala
final def alternatives: Chunk[(HttpCodec[AtomTypes, Value], Condition)]

Produces a flattened collection of alternatives. Once flattened, each codec inside the returned collection is guaranteed to contain no nested alternatives.

Produces a flattened collection of alternatives. Once flattened, each codec inside the returned collection is guaranteed to contain no nested alternatives.

Attributes

Source
HttpCodec.scala
def annotate(metadata: Metadata[Value]): HttpCodec[AtomTypes, Value]

Returns a new codec that is the same as this one, but has attached metadata, such as docs.

Returns a new codec that is the same as this one, but has attached metadata, such as docs.

Attributes

Source
HttpCodec.scala
final def asQuery(implicit ev: Query <:< AtomTypes): QueryCodec[Value]

Reinterprets this codec as a query codec assuming evidence that this interpretation is sound.

Reinterprets this codec as a query codec assuming evidence that this interpretation is sound.

Attributes

Source
HttpCodec.scala
final def const(canonical: => Value): HttpCodec[AtomTypes, Unit]

Transforms the type parameter to Unit by specifying that all possible values that can be decoded from this HttpCodec are in fact equivalent to the provided canonical value.

Transforms the type parameter to Unit by specifying that all possible values that can be decoded from this HttpCodec are in fact equivalent to the provided canonical value.

Note: You should NOT use this method on any codec which can decode semantically distinct values.

Attributes

Source
HttpCodec.scala
final def const[Value2](value2: => Value2)(implicit ev: Unit <:< Value): HttpCodec[AtomTypes, Value2]

Attributes

Source
HttpCodec.scala
final def decodeRequest(request: Request)(implicit trace: Trace): Task[Value]

Uses this codec to decode the Scala value from a request.

Uses this codec to decode the Scala value from a request.

Attributes

Source
HttpCodec.scala
final def decodeRequest(request: Request, config: CodecConfig)(implicit trace: Trace): Task[Value]

Uses this codec to decode the Scala value from a request.

Uses this codec to decode the Scala value from a request.

Attributes

Source
HttpCodec.scala
final def decodeResponse(response: Response, config: CodecConfig = ...)(implicit trace: Trace): Task[Value]

Uses this codec to decode the Scala value from a response.

Uses this codec to decode the Scala value from a response.

Attributes

Source
HttpCodec.scala
def doc: Option[Doc]

Attributes

Source
HttpCodec.scala
final def encodeRequest(value: Value): Request

Uses this codec and CodecConfig.defaultConfig to encode the Scala value into a request.

Uses this codec and CodecConfig.defaultConfig to encode the Scala value into a request.

Attributes

Source
HttpCodec.scala
final def encodeRequest(value: Value, config: CodecConfig): Request

Uses this codec to encode the Scala value into a request.

Uses this codec to encode the Scala value into a request.

Attributes

Source
HttpCodec.scala
final def encodeResponse[Z](value: Value, outputTypes: Chunk[MediaTypeWithQFactor], config: CodecConfig): Response

Uses this codec to encode the Scala value as a response.

Uses this codec to encode the Scala value as a response.

Attributes

Source
HttpCodec.scala
def examples(examples: Iterable[(String, Value)]): HttpCodec[AtomTypes, Value]

Attributes

Source
HttpCodec.scala
def examples(example1: (String, Value), examples: (String, Value)*): HttpCodec[AtomTypes, Value]

Attributes

Source
HttpCodec.scala
def examples: Map[String, Value]

Attributes

Source
HttpCodec.scala
def expect(expected: Value): HttpCodec[AtomTypes, Unit]

Returns a new codec that will expect the value to be equal to the specified value.

Returns a new codec that will expect the value to be equal to the specified value.

Attributes

Source
HttpCodec.scala
def named(name: String): HttpCodec[AtomTypes, Value]

Attributes

Source
HttpCodec.scala
def named(named: Named[Value]): HttpCodec[AtomTypes, Value]

Returns a new codec that is the same as this one, but has attached a name. This name is used for documentation generation.

Returns a new codec that is the same as this one, but has attached a name. This name is used for documentation generation.

Attributes

Source
HttpCodec.scala
def optional: HttpCodec[AtomTypes, Option[Value]]

Returns a new codec, where the value produced by this one is optional.

Returns a new codec, where the value produced by this one is optional.

Attributes

Source
HttpCodec.scala
final def orElseEither[AtomTypes1 <: AtomTypes, Value2](that: HttpCodec[AtomTypes1, Value2])(implicit alternator: Alternator[Value, Value2]): HttpCodec[AtomTypes1, alternator.Out]

Attributes

Source
HttpCodec.scala
final def toLeft[R]: HttpCodec[AtomTypes, Either[Value, R]]

Attributes

Source
HttpCodec.scala
final def toRight[L]: HttpCodec[AtomTypes, Either[L, Value]]

Attributes

Source
HttpCodec.scala
final def transform[Value2](f: Value => Value2)(g: Value2 => Value): HttpCodec[AtomTypes, Value2]

Transforms the type parameter of this HttpCodec from Value to Value2. Due to the fact that HttpCodec is invariant in its type parameter, the transformation requires not just a function from Value to Value2, but also, a function from Value2 to Value.

Transforms the type parameter of this HttpCodec from Value to Value2. Due to the fact that HttpCodec is invariant in its type parameter, the transformation requires not just a function from Value to Value2, but also, a function from Value2 to Value.

One of these functions will be used in decoding, for example, when the endpoint is invoked on the server. The other of these functions will be used in encoding, for example, when a client calls the endpoint on the server.

Attributes

Source
HttpCodec.scala
final def transformOrFail[Value2](f: Value => Either[String, Value2])(g: Value2 => Either[String, Value]): HttpCodec[AtomTypes, Value2]

Attributes

Source
HttpCodec.scala
final def transformOrFailLeft[Value2](f: Value => Either[String, Value2])(g: Value2 => Value): HttpCodec[AtomTypes, Value2]

Attributes

Source
HttpCodec.scala
final def transformOrFailRight[Value2](f: Value => Value2)(g: Value2 => Either[String, Value]): HttpCodec[AtomTypes, Value2]

Attributes

Source
HttpCodec.scala
final def |[AtomTypes1 <: AtomTypes, Value2](that: HttpCodec[AtomTypes1, Value2])(implicit alternator: Alternator[Value, Value2]): HttpCodec[AtomTypes1, alternator.Out]

Attributes

Source
HttpCodec.scala