Module Cohttp_lwt_unix.Request

include module type of struct include Cohttp.Request end

This contains the metadata for a HTTP/1.x request header, including the headers, version, meth and uri. The body is handled by the separate S module type, as it is dependent on the IO implementation.

The interface exposes a fieldslib interface which provides individual accessor functions for each of the records below. It also provides sexp serializers to convert to-and-from an Core.Std.Sexp.t.

include Cohttp.S.Request with type t = Http.Request.t
type t = Http.Request.t = {
  1. headers : Cohttp.Header.t;
    (*

    HTTP request headers

    *)
  2. meth : Cohttp.Code.meth;
    (*

    HTTP request method

    *)
  3. resource : string;
    (*

    Request path and query

    *)
  4. version : Cohttp.Code.version;
    (*

    HTTP version, usually 1.1

    *)
}
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
val headers : t -> Cohttp.Header.t
val meth : t -> Cohttp.Code.meth
val resource : t -> string
val version : t -> Cohttp.Code.version
val encoding : t -> Cohttp.Transfer.encoding
val compare : t -> t -> int
val make : ?meth:Cohttp.Code.meth -> ?version:Cohttp.Code.version -> ?encoding:Cohttp.Transfer.encoding -> ?headers:Cohttp.Header.t -> Uri.t -> t

make () is a value of t. The default values for the request, if not specified, are: status is `Ok, version is `HTTP_1_1, flush is false and headers is Header.empty. The request encoding value is determined via the Header.get_transfer_encoding function and, if not found, uses the default value Transfer.Fixed 0.

val is_keep_alive : t -> bool

Return true whether the connection should be reused

val uri : t -> Uri.t
val make_for_client : ?headers:Cohttp.Header.t -> ?chunked:bool -> ?body_length:int64 -> Cohttp.Code.meth -> Uri.t -> t
val has_body : t -> [ `No | `Unknown | `Yes ]
val pp_hum : Stdlib.Format.formatter -> t -> unit

Human-readable output, used by the toplevel printer

module Make = Cohttp.Request.Make
module Private = Cohttp.Request.Private
include sig ... end
type reader
type writer
module IO : sig ... end
val read : IO.ic -> [ `Eof | `Invalid of string | `Ok of t ] IO.t
val make_body_writer : flush:bool -> t -> IO.oc -> writer
val make_body_reader : t -> IO.ic -> reader
val read_body_chunk : reader -> Cohttp.Transfer.chunk IO.t
val write_header : t -> IO.oc -> unit IO.t
val write_body : writer -> string -> unit IO.t
val write : flush:bool -> (writer -> unit IO.t) -> t -> IO.oc -> unit IO.t