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.
module Cookievalues: Map.S 
  with type key = string
This table is to store one cookie value for each cookie name.

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 Cookievalues.t
Cookies.t
val add_cookie : url_path ->
string ->
cookie ->
cookieset -> cookieset
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 Cookievalues.t
Cookies.t ->
cookie Cookievalues.t
Cookies.t ->
cookie Cookievalues.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 Cookievalues.t ->
cookie Cookievalues.t
Cookies.t -> string Cookievalues.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 = {
   header : Http_header.http_header;
   content : string Ocsigen_stream.t option;
   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).