Module Ocsigen_http_frame
module Ocsigen_http_frame: sig..end
This table is to store cookie values for each path.
The key has type url_path option:
it is for the path (default: root of the site),
type etag = string
type url_path = string list
module Cookies:
Map.S
with type key = url_path
This table is to store cookie values for each path.
type cookie =
| | OSet of float option * string * bool |
| | OUnset |
Type used for cookies to set.
The float option is the timestamp for the expiration date.
The string is the value.
If the bool is true and the protocol is https, the cookie will be secure
(will ask the browser to send it only through secure connections).
type cookieset =
cookie Ocsigen_lib.String_Table.t
Cookies.t
add_cookie c cookie_table adds the cookie c to the table cookie_table.
If the cookie is already bound, the previous binding disappear.
val add_cookies :
cookie Ocsigen_lib.String_Table.t
Cookies.t ->
cookie Ocsigen_lib.String_Table.t
Cookies.t ->
cookie Ocsigen_lib.String_Table.t
Cookies.t
add_cookies newcookies oldcookies adds the cookies from newcookies
to oldcookies. If cookies are already bound in oldcookies,
the previous binding disappear.
val compute_new_ri_cookies :
float ->
string list ->
string Ocsigen_lib.String_Table.t ->
cookie Ocsigen_lib.String_Table.t
Cookies.t -> string Ocsigen_lib.String_Table.t
compute_new_ri_cookies now path ri_cookies cookies_to_set
adds the cookies from cookies_to_set
to ri_cookies, as if the cookies
add been send to the browser and the browser
was doing a new request to the url path.
Only the cookies that match path (current path) are added.
type result = {
res_cookies : cookieset; | (* | cookies to set | *) | |
res_lastmodified : float option; | (* | Default: None | *) | |
res_etag : etag option; | ||||
res_code : int; | (* | HTTP code, if not 200 | *) | |
res_stream : string Ocsigen_stream.t * (string Ocsigen_stream.t -> int64 -> string Ocsigen_stream.step Lwt.t) option; | (* | Default: empty stream. The second field is (optionaly) the function used to skip a part of the stream, if you do not you want to use a basic reading of the stream. For example, for static files, you can optimize it by using a seek function. | *) | |
res_stop_stream : unit -> unit Lwt.t; | (* | A function that will be called if sending the stream fails. It is called before the stream finalizer, only in case of error. Use it if you want a different behaviour if sending succeeds or not. Default is do nothing (Lwt.return). | *) | |
res_content_length : int64 option; | (* | None means Transfer-encoding: chunked | *) | |
res_content_type : string option; | ||||
res_headers : Http_headers.t; | (* | The headers you want to add | *) | |
res_charset : string option; | (* | Default: None | *) | |
res_location : string option; | (* | Default: None | *) |
}
The type of answers to send
val default_result : unit -> result
Default result to use as a base for constructing others.
val empty_result : unit -> result
result for an empty page.
module type HTTP_CONTENT = sig..end
module Http_header: sig..end
module Http_error: sig..end
type t = {
frame_header : Http_header.http_header; | |
frame_content : string Ocsigen_stream.t option; | |
frame_abort : unit -> unit Lwt.t; |
}
The type of HTTP frames.
The content may be void (no body) or a stream.
While sending, a stream will be sent with chunked encoding if no
content-length is supplied.
abort is the function to be called if you want to cancel the stream
reading (closes the connection).