package cohttp

  1. Overview
  2. Docs

The Make_server functor glues together a Cohttp.S.IO implementation to send requests down a connection that is established by the Net module. The resulting module satisfies the Server module type.

Parameters

module IO : Cohttp_lwt_s.IO

Signature

module IO = IO
type conn = IO.conn * Cohttp.Connection.t
type t
val make : ?conn_closed:(conn -> unit) -> callback: (conn -> Cohttp.Request.t -> Cohttp_lwt_body.t -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t) -> unit -> t
val resolve_local_file : docroot:string -> uri:Uri.t -> string

Resolve a URI and a docroot into a concrete local filename.

val respond : ?headers:Cohttp.Header.t -> ?flush:bool -> status:Cohttp.Code.status_code -> body:Cohttp_lwt_body.t -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t

respond ?headers ?flush ~status ~body will respond to an HTTP request with the given status code and response body. If flush is true, then every response chunk will be flushed to the network rather than being buffered. flush is true by default. The transfer encoding will be detected from the body value and set to chunked encoding if it cannot be determined immediately. You can override the encoding by supplying an appropriate Content-length or Transfer-encoding in the headers parameter.

val respond_string : ?flush:bool -> ?headers:Cohttp.Header.t -> status:Cohttp.Code.status_code -> body:string -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t
val respond_error : ?headers:Cohttp.Header.t -> ?status:Cohttp.Code.status_code -> body:string -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t
val respond_redirect : ?headers:Cohttp.Header.t -> uri:Uri.t -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t
val respond_need_auth : ?headers:Cohttp.Header.t -> auth:Cohttp.Auth.challenge -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t
val respond_not_found : ?uri:Uri.t -> unit -> (Cohttp.Response.t * Cohttp_lwt_body.t) Lwt.t
val callback : t -> IO.conn -> IO.ic -> IO.oc -> unit Lwt.t