Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Server
contains the methods needed to build a Yurt
server
include Cohttp_lwt.S.Server with module IO = Cohttp_lwt_unix.IO
module IO = Cohttp_lwt_unix.IO
type conn = IO.conn * Cohttp.Connection.t
type response_action = [
| `Expert of Cohttp.Response.t * (IO.ic -> IO.oc -> unit Lwt.t)
| `Response of Cohttp.Response.t * Cohttp_lwt.Body.t
]
A request handler can respond in two ways:
`Response
, with a Response.t
and a Body.t
.`Expert
, with a Response.t
and an IO function that is expected to write the response body. The IO function has access to the underlying IO.ic
and IO.oc
, which allows writing a response body more efficiently, stream a response or to switch protocols entirely (e.g. websockets). Processing of pipelined requests continue after the unitLwt.t
is resolved. The connection can be closed by closing the IO.ic
.val make_response_action :
?conn_closed:(conn -> unit) ->
callback:
(conn -> Cohttp.Request.t -> Cohttp_lwt.Body.t -> response_action Lwt.t) ->
unit ->
t
val make_expert :
?conn_closed:(conn -> unit) ->
callback:
(conn ->
Cohttp.Request.t ->
Cohttp_lwt.Body.t ->
(Cohttp.Response.t * (IO.ic -> IO.oc -> unit Lwt.t)) Lwt.t) ->
unit ->
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
Resolve a URI and a docroot into a concrete local filename.
Deprecated. Please use Cohttp.Path.resolve_local_file.
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
type server = {
host : string;
port : int;
mutable routes : (string * Route.route * endpoint) list;
mutable tls_config : Conduit_lwt_unix.server_tls_config option;
mutable logger : Lwt_log.logger;
}
val server :
?tls_config:Conduit_lwt_unix.server_tls_config ->
?logger:Lwt_log.logger ->
string ->
int ->
server
Create a new server
val server_from_config : string -> server
Create a new server from an existing configuration file
val log_debug : server -> string -> string -> unit
val log_info : server -> string -> string -> unit
val log_notice : server -> string -> string -> unit
val log_error : server -> string -> string -> unit
val log_fatal : server -> string -> string -> unit
val configure_tls :
?password:[ `Password of bool -> string | `No_password ] ->
server ->
string ->
string ->
server
Configure TLS after the server has been created
val stream :
?flush:bool ->
?headers:Header.t ->
?status:int ->
string Lwt_stream.t ->
(Response.t * Body.t) Lwt.t
Respond with a stream
val json :
?flush:bool ->
?headers:Header.t ->
?status:int ->
Ezjsonm.t ->
(Response.t * Body.t) Lwt.t
Respond with JSON data
val html :
?flush:bool ->
?headers:Header.t ->
?status:int ->
Yurt_html.t ->
(Response.t * Body.t) Lwt.t
Respond with HTML data
val string :
?flush:bool ->
?headers:Header.t ->
?status:int ->
string ->
(Response.t * Body.t) Lwt.t
Respond with string data
val redirect : ?headers:Header.t -> string -> (Response.t * Body.t) Lwt.t
Redirect client
val file : ?headers:Header.t -> string -> (Response.t * Body.t) Lwt.t
Respond with datas from file
val register : server -> (string * Route.route * endpoint) list -> server
Register a list of routes with the server
val register_route : server -> string -> Route.route -> endpoint -> server
Register a single route with the server
Register a single route, formatted as a string, with the server
Regster endpoint that returns a single static file for all requests
Reqister endpoint that will serve files from a firectory
val daemonize : ?directory:string -> ?syslog:bool -> server -> unit
Daemonize the server
val start : server -> unit Lwt.t
val run : server -> unit