package cohttp-mirage
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
module IO : Cohttp_lwt.S.IO
include Cohttp.Generic.Server.S
with type body = Cohttp_lwt.Body.t
and module IO := IO
and type response = Http.Response.t * Cohttp_lwt.Body.t
type body = Cohttp_lwt.Body.t
type conn = IO.conn * Cohttp.Connection.t
type response = Http.Response.t * Cohttp_lwt.Body.t
type response_action = [
| `Expert of Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)
| `Response of response
]
A request handler can respond in two ways:
- Using
`Response
, with aResponse.t
and abody
. - Using
`Expert
, with aResponse.t
and an IO function that is expected to write the response body. The IO function has access to the underlyingIO.ic
andIO.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 theunit IO.t
is resolved. The connection can be closed by closing theIO.ic
.
val make_response_action :
?conn_closed:(conn -> unit) ->
callback:(conn -> Http.Request.t -> body -> response_action IO.t) ->
unit ->
t
val make_expert :
?conn_closed:(conn -> unit) ->
callback:
(conn ->
Http.Request.t ->
body ->
(Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)) IO.t) ->
unit ->
t
val respond :
?headers:Http.Header.t ->
status:Http.Status.t ->
body:body ->
unit ->
response IO.t
respond ?headers ~status ~body
will respond to an HTTP request with the given status
code and response body
. 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 :
?headers:Http.Header.t ->
status:Http.Status.t ->
body:string ->
unit ->
response IO.t
val resolve_local_file : docroot:string -> uri:Uri.t -> string
Resolve a URI and a docroot into a concrete local filename.
val respond_error :
?headers:Http.Header.t ->
?status:Http.Status.t ->
body:string ->
unit ->
(Http.Response.t * body) IO.t
val respond_redirect :
?headers:Http.Header.t ->
uri:Uri.t ->
unit ->
(Http.Response.t * body) IO.t
val respond_need_auth :
?headers:Http.Header.t ->
auth:Cohttp.Auth.challenge ->
unit ->
(Http.Response.t * body) IO.t
val respond_not_found : ?uri:Uri.t -> unit -> (Http.Response.t * body) IO.t
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>