module Netcgi_types: sig .. end
Basic types for CGI and related protocols
exception Resources_exceeded
Raised when the CGI input is longer than the configured maximum
class type simple_message = Netmime.mime_body
A simple_message stores the value of the CGI argument as an
unstructured string value.
type store = [ `File of string | `Memory ]
Determines where the data of the CGI argument are actually stored.
`Memory: In an O'Caml string
`File name: In the file name. The file contains the value of
the argument after all transfer-related encodings have been
removed (i.e. URL-encoding, and MIME transfer encodings).
type representation = [ `MIME of Netmime.mime_message | `Simple of simple_message ]
Representations of CGI arguments:
`Simple msg: The argument is unstructured
`MIME msg: The argument has a MIME header in addition to the value
class type cgi_argument = object .. end
The interface of CGI argument objects
type cgi_cookie = Nethttp.cookie = {
|
cookie_name : string; |
|
cookie_value : string; |
|
cookie_expires : float option; |
|
cookie_domain : string option; |
|
cookie_path : string option; |
|
cookie_secure : bool; |
}
type status = Nethttp.http_status
type request_method = [ `DELETE | `GET | `HEAD | `POST | `PUT of cgi_argument ]
The supported request methods:
`GET: Side effect-free request of a web resource
`POST: Request with side effects
`HEAD: Only the header of the corresponding `GET are requested
`DELETE: Request to delete the web resource
`PUT arg: Request to upload the web resource
type cache_control = [ `Max_age of int | `No_cache | `Unspecified ]
This is only a small subset of the HTTP 1.1 cache control features,
but they are usually sufficient, and they work for HTTP/1.0 as well.
The directives mean:
`No_cache:
Caches are disabled. The following headers are sent:
Cache-control: no-cache, Pragma: no-cache, Expires: (now - 1 second)
`Max_age n:
Caches are allowed to store a copy of the response for n seconds.
After that, the response must be revalidated.
Cache-control: max-age n, Cache-control: must-revalidate,
Expires: (now + n seconds)
`Unspecified:
No cache control header is added to the response.
Notes:
- Cache control directives only apply to GET requests; POST requests
are never cached
- Not only proxies are considered as cache, but also the local disk
cache of the browser
- HTTP/1.0 did not specify cache behaviour as strictly as HTTP/1.1
does. Because of this the
Pragma and Expires headers are sent, too.
These fields are not interpreted by HTTP/1.1 clients because
Cache-control has higher precedence.
type query_string_spec = [ `Args of cgi_argument list | `Current | `Initial | `None ]
Determines how the query part of URLs is generated:
`Initial: The query string is created from the initial
CGI arguments
`Current: The query string is created from the current
CGI arguments
`Args l: The query string is created from the specified argument list
`None: The query string is omitted
type other_url_spec = [ `Env | `None | `This of string ]
Determines how an URL part is generated:
`Env: Take the value from the environment
`This v: Use this value v. It must already be URL-encoded.
`None: Do not include this part into the URL
class type cgi_activation = object .. end
The common interface of CGI activation objects