Packages

final class Request[F[_]] extends Message[F] with Product with Serializable

Representation of an incoming HTTP message

A Request encapsulates the entirety of the incoming HTTP request including the status line, headers, and a possible request body.

Source
Message.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Request
  2. Serializable
  3. Product
  4. Equals
  5. Message
  6. Media
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type Self = SelfF[F]
    Definition Classes
    Message
  2. type SelfF[F0[_]] = Request[F0]
    Definition Classes
    RequestMessage

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def addCookie(name: String, content: String): Request[F]

    Add a Cookie header with the provided values

  5. def addCookie(cookie: RequestCookie): Request[F]

    Add a Cookie header for the provided org.http4s.headers.Cookie

  6. def addHeader[H](h: H)(implicit arg0: Header[H, Recurring]): Self

    Add a header to these headers.

    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/*)))

    */*/*/*/*/

    Definition Classes
    Message
  7. 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

    A

    type of the result

    decoder

    EntityDecoder used to decode the Media

    returns

    the effect which will generate the A

    Definition Classes
    Media
  8. def asCurl(redactHeadersWhen: (CIString) => Boolean = Headers.SensitiveHeaders.contains): String

    cURL representation of the request.

    cURL representation of the request.

    Supported cURL-Parameters are: --request, --url, --header. Note that asCurl will not print the request body.

  9. def asCurlWithBody(redactHeadersWhen: (CIString) => Boolean = Headers.SensitiveHeaders.contains)(implicit concurrent: Concurrent[F], defaultCharset: Charset = Charset.`UTF-8`): F[(String, Request[F])]

    cURL representation of the request and a new request

    cURL representation of the request and a new request

    Supported cURL-Parameters are: --request, --url, --header --data. Note that asCurlWith will print the request body, which may have privacy implications.

    This method will consume the body create a new request with the cached body to avoid issues this may cause, which may consume large amounts of memory to cache a request that streams a large amount of data.

  10. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  11. 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

    T

    type of the result

    decoder

    EntityDecoder used to decode the Media

    returns

    the effect which will generate the DecodeResult[T]

    Definition Classes
    Media
  12. val attributes: Vault
    Definition Classes
    RequestMessage
  13. def authType: Option[AuthScheme]
  14. val body: EntityBody[F]
    Definition Classes
    RequestMessageMedia
  15. final def bodyText(implicit RT: RaiseThrowable[F], defaultCharset: Charset = `UTF-8`): Stream[F, String]
    Definition Classes
    Media
  16. def canEqual(that: Any): Boolean
    Definition Classes
    Request → Equals
  17. def change(httpVersion: HttpVersion, body: EntityBody[F], headers: Headers, attributes: Vault): Request[F]
    Attributes
    protected
    Definition Classes
    RequestMessage
  18. final def charset: Option[Charset]
    Definition Classes
    Media
  19. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  20. final def contentLength: Option[Long]
    Definition Classes
    Media
  21. final def contentType: Option[Content-Type]
    Definition Classes
    Media
  22. def cookies: List[RequestCookie]

    Parses all available org.http4s.headers.Cookie headers into a list of RequestCookie objects.

    Parses all available org.http4s.headers.Cookie headers into a list of RequestCookie objects. This implementation is compatible with cookie headers formatted per HTTP/1 and HTTP/2, or even both at the same time.

  23. def covary[F2[x] >: F[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
    MessageMedia
  24. def decode[A](f: (A) => F[Response[F]])(implicit F: Monad[F], decoder: EntityDecoder[F, A]): F[Response[F]]

    Helper method for decoding Requests

    Helper method for decoding Requests

    Attempt to decode the Request and, if successful, execute the continuation to get a Response. If decoding fails, an UnprocessableEntity Response is generated.

  25. def decodeStrict[A](f: (A) => F[Response[F]])(implicit F: Monad[F], decoder: EntityDecoder[F, A]): F[Response[F]]

    Helper method for decoding Requests

    Helper method for decoding Requests

    Attempt to decode the Request and, if successful, execute the continuation to get a Response. If decoding fails, an UnprocessableEntity Response is generated. If the decoder does not support the MediaType of the Request, a UnsupportedMediaType Response is generated instead.

  26. def decodeWith[A](decoder: EntityDecoder[F, A], strict: Boolean)(f: (A) => F[Response[F]])(implicit F: Monad[F]): F[Response[F]]
  27. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  28. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  29. def filterHeaders(f: (Raw) => Boolean): Self

    Keep headers that satisfy the predicate

    Keep headers that satisfy the predicate

    f

    predicate

    returns

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

    Definition Classes
    Message
  30. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  31. def from: Option[IpAddress]

    Returns the the X-Forwarded-For value if present, else the remote address.

  32. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  33. def hashCode(): Int
    Definition Classes
    Request → AnyRef → Any
  34. val headers: Headers
    Definition Classes
    RequestMessageMedia
  35. val httpVersion: HttpVersion
    Definition Classes
    RequestMessage
  36. def isChunked: Boolean
    Definition Classes
    Message
  37. def isIdempotent: Boolean

    A request is idempotent if its method is idempotent or it contains an Idempotency-Key header.

  38. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  39. def isSecure: Option[Boolean]

    Whether the Request was received over a secure medium

  40. def mapK[G[_]](f: ~>[F, G]): Request[G]
  41. val method: Method
  42. def multiParams: Map[String, Seq[String]]

    Representation of the query string as a map

    Representation of the query string as a map

    In case a parameter is available in query string but no value is there the sequence will be empty. If the value is empty the the sequence contains an empty string.

    Examples

    Query StringMap
    ?param=vMap("param" -> Seq("v"))
    ?param=Map("param" -> Seq(""))
    ?paramMap("param" -> Seq())
    ?=valueMap("" -> Seq("value"))
    ?p1=v1&p1=v2&p2=v3&p2=v4Map("p1" -> Seq("v1","v2"), "p2" -> Seq("v3","v4"))

    The query string is lazily parsed. If an error occurs during parsing an empty Map is returned.

  43. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  44. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  45. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  46. def params: Map[String, String]

    View of the head elements of the URI parameters in query string.

    View of the head elements of the URI parameters in query string.

    In case a parameter has no value the map returns an empty string.

    See also

    multiParams

  47. lazy val pathInfo: Path
  48. def pathTranslated: Option[File]
  49. def productArity: Int
    Definition Classes
    Request → Product
  50. def productElement(n: Int): Any
    Definition Classes
    Request → Product
  51. def productElementName(n: Int): String
    Definition Classes
    Product
  52. def productElementNames: Iterator[String]
    Definition Classes
    Product
  53. def productIterator: Iterator[Any]
    Definition Classes
    Product
  54. def productPrefix: String
    Definition Classes
    Product
  55. 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/*)))

    */*/*/*/

    Definition Classes
    Message
  56. def queryString: String
  57. def remote: Option[SocketAddress[IpAddress]]
  58. def remoteAddr: Option[IpAddress]
  59. def remoteHost(implicit F: Monad[F], dns: Dns[F]): F[Option[Hostname]]
  60. def remotePort: Option[Port]
  61. def remoteUser: Option[String]
  62. def removeHeader[A](implicit h: Header[A, _]): Self
    Definition Classes
    Message
  63. def removeHeader(key: CIString): Self
    Definition Classes
    Message
  64. def requestPrelude: RequestPrelude

    A projection of this request without the body.

  65. lazy val scriptName: Path
  66. def server: Option[SocketAddress[IpAddress]]
  67. def serverAddr: Option[IpAddress]
  68. def serverPort: Option[Port]
  69. def serverSoftware: ServerSoftware
  70. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  71. def toStrict(maxBytes: Option[Long])(implicit F: Concurrent[F]): F[Self]

    Compiles the body stream to a single chunk and sets it as the body.

    Compiles the body stream to a single chunk and sets it as the body. Replaces any Transfer-Encoding: chunked with a Content-Length header. It is the caller's responsibility to assure there is enough memory to materialize the entity body and control the time limits of that materialization.

    maxBytes

    maximum length of the entity stream. If the stream exceeds the limit then processing fails with the Message.EntityStreamException. Pass the scala.None if you don't want to limit the entity body.

    Definition Classes
    Message
  72. def toString(): String
    Definition Classes
    Request → AnyRef → Any
  73. def trailerHeaders(implicit F: Applicative[F]): F[Headers]

    The trailer headers, as specified in Section 3.6.1 of RFC 2616.

    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.

    Definition Classes
    Message
  74. def transformHeaders(f: (Headers) => Headers): Self
    Definition Classes
    Message
  75. val uri: Uri
  76. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  77. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  78. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  79. 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.

    A

    type of the value to store

    key

    org.typelevel.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

    Definition Classes
    Message
  80. def withAttributes(attributes: Vault): Self
    Definition Classes
    Message
  81. def withBodyStream(body: EntityBody[F]): Self

    Sets the entity body without affecting headers such as Transfer-Encoding or Content-Length.

    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.

    WARNING: this method does not modify the headers of the message, and as a consequence headers may be incoherent with the body.

    Definition Classes
    Message
  82. def withContentType(contentType: Content-Type): Self
    Definition Classes
    Message
  83. def withContentTypeOption(contentTypeO: Option[Content-Type]): Self
    Definition Classes
    Message
  84. def withEmptyBody: 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.

    Definition Classes
    Message
  85. 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

    T

    type of the Body

    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

    Definition Classes
    Message
  86. def withHeaders(headers: ToRaw*): Self
    Definition Classes
    Message
  87. def withHeaders(headers: Headers): Self
    Definition Classes
    Message
  88. def withHttpVersion(httpVersion: HttpVersion): Self
    Definition Classes
    Message
  89. def withMethod(method: Method): Request[F]
  90. def withPathInfo(pi: Path): Request[F]
  91. def withTrailerHeaders(trailerHeaders: F[Headers]): Self
    Definition Classes
    Message
  92. def withUri(uri: Uri): Request[F]
  93. 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.

    key

    org.typelevel.vault.Key to remove

    returns

    a new message object without the key

    Definition Classes
    Message
  94. def withoutContentType: Self
    Definition Classes
    Message
  95. def withoutTrailerHeaders: Self
    Definition Classes
    Message

Deprecated Value Members

  1. def remoteHost(F: Sync[F]): F[Option[Hostname]]
    Annotations
    @deprecated
    Deprecated

    (Since version 0.23.7) Use the variant requiring ip4s.Dns[F]

  2. def withPathInfo(pi: String): Request[F]
    Annotations
    @deprecated
    Deprecated

    (Since version 0.22.0-M1) Use {withPathInfo(Uri.Path)} instead

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from Message[F]

Inherited from Media[F]

Inherited from AnyRef

Inherited from Any

Ungrouped