Message

sealed trait Message[F[_]] extends Media[F]

Represents a HTTP Message. The interesting subclasses are Request and Response.

Companion
object
trait Media[F]
class Object
trait Matchable
class Any
class Request[F]
class Response[F]

Type members

Types

type Self = SelfF[F]
type SelfF[F2[_]] <: Message[F2] { type SelfF = [F3[_]] =>> SelfF[F3]; }

Value members

Abstract methods

def attributes: Vault
def body: EntityBody[F]

Concrete methods

def addHeader[H](h: H)(implicit evidence$1: Header[H, Recurring]): Self

Add a header to these headers. The header should be a type with a recurring Header instance to ensure that the new value can be appended to any existing values.

Add a header to these headers. The header should be a type with a recurring Header instance to ensure that the new value can be appended to any existing values.

>>> import cats.effect.IO
>>> import org.http4s.headers.Accept

>>> val req = Request[IO]().addHeader(Accept(MediaRange.`application/*`))
>>> req.headers.get[Accept]
Some(Accept(NonEmptyList(application/*)))

>>> val req2 = req.addHeader(Accept(MediaRange.`text/*`))
>>> req2.headers.get[Accept]
Some(Accept(NonEmptyList(application/*, text/*)))

////*/

override def covary[F2[x]]: SelfF[F2]

Lifts this Message's body to the specified effect type.

Lifts this Message's body to the specified effect type.

Definition Classes
def filterHeaders(f: Raw => Boolean): Self

Keep headers that satisfy the predicate

Keep headers that satisfy the predicate

Value Params
f

predicate

Returns

a new message object which has only headers that satisfy the predicate

def isChunked: Boolean
def putHeaders(headers: ToRaw*): Self

Add the provided headers to the existing headers, replacing those of the same header name

Add the provided headers to the existing headers, replacing those of the same header name

>>> import cats.effect.IO
>>> import org.http4s.headers.Accept

>>> val req = Request[IO]().putHeaders(Accept(MediaRange.`application/*`))
>>> req.headers.get[Accept]
Some(Accept(NonEmptyList(application/*)))

>>> val req2 = req.putHeaders(Accept(MediaRange.`text/*`))
>>> req2.headers.get[Accept]
Some(Accept(NonEmptyList(text/*)))

////

def removeHeader(key: CIString): Self
def removeHeader[A](implicit h: Header[A, _]): Self
def trailerHeaders(implicit F: Applicative[F]): F[Headers]

The trailer headers, as specified in Section 3.6.1 of RFC 2616. The resulting F might not complete until the entire body has been consumed.

The trailer headers, as specified in Section 3.6.1 of RFC 2616. The resulting F might not complete until the entire body has been consumed.

def withAttribute[A](key: Key[A], value: A): Self

Generates a new message object with the specified key/value pair appended to the attributes.

Generates a new message object with the specified key/value pair appended to the attributes.

Type Params
A

type of the value to store

Value Params
key

io.chrisdavenport.vault.Key with which to associate the value

value

value associated with the key

Returns

a new message object with the key/value pair appended

def withAttributes(attributes: Vault): Self

Sets the entity body without affecting headers such as Transfer-Encoding or Content-Length. Most use cases are better served by withEntity, which uses an EntityEncoder to maintain the headers.

Sets the entity body without affecting headers such as Transfer-Encoding or Content-Length. Most use cases are better served by withEntity, which uses an EntityEncoder to maintain the headers.

def withContentType(contentType: Content-Type): Self
def withContentTypeOption(contentTypeO: Option[Content-Type]): Self

Set an empty entity body on this message, and remove all payload headers that make no sense with an empty body.

Set an empty entity body on this message, and remove all payload headers that make no sense with an empty body.

def withEntity[T](b: T)(implicit w: EntityEncoder[F, T]): Self

Replace the body of this message with a new body

Replace the body of this message with a new body

Type Params
T

type of the Body

Value Params
b

body to attach to this method

w

EntityEncoder with which to convert the body to an EntityBody

Returns

a new message with the new body

def withHeaders(headers: Headers): Self
def withHeaders(headers: ToRaw*): Self
def withHttpVersion(httpVersion: HttpVersion): Self
def withTrailerHeaders(trailerHeaders: F[Headers]): Self
def withoutAttribute(key: Key[_]): Self

Returns a new message object without the specified key in the attributes.

Returns a new message object without the specified key in the attributes.

Value Params
key

io.chrisdavenport.vault.Key to remove

Returns

a new message object without the key

Inherited methods

final def as[A](implicit F: MonadThrow[F], decoder: EntityDecoder[F, A]): F[A]

Decode the Media to the specified type

Decode the Media to the specified type

If no valid Status has been described, allow Ok

Type Params
A

type of the result

Value Params
decoder

EntityDecoder used to decode the Media

Returns

the effect which will generate the A

Inherited from
Media
final def attemptAs[T](implicit decoder: EntityDecoder[F, T]): DecodeResult[F, T]

Decode the Media to the specified type

Decode the Media to the specified type

Type Params
T

type of the result

Value Params
decoder

EntityDecoder used to decode the Media

Returns

the effect which will generate the DecodeResult[T]

Inherited from
Media
final def bodyText(implicit RT: RaiseThrowable[F], defaultCharset: Charset): Stream[F, String]
Inherited from
Media
final def charset: Option[Charset]
Inherited from
Media
final def contentLength: Option[Long]
Inherited from
Media
final def contentType: Option[Content-Type]
Inherited from
Media