class cgi_environment :config:config -> properties:(string * string) list -> input_header:(string * string) list -> Netchannels.out_obj_channel ->
object
..end
new cgi_environment ~config ~properties ~input_header out_obj
generates a Netcgi.cgi_environment
object, from the arguments.
The creation of such an object does not raise any exception.
The method #out_channel
of the created environment returns
out_obj
.
config
: give the configuration options. Of particular
interest here is config.workarounds
. If
`MSIE_Content_type_bug
is present, a fix will be applied to
input_header
.properties
: CGI-like properties as (name, value) pairs.
Examples: ("REQUEST_METHOD", "POST")
, ("SERVER_PROTOCOL",
"HTTP/1.1")
. Note that "CONTENT_TYPE" and "CONTENT_LENGTH" are
part of the input header. It is highly recommended to use
Netcgi_common.update_props_inheader
to build this list.input_header
: is a list of (field, value) pairs of the HTTP
input request. It is ASSUMED that field names in input_header
are lowercase in order to apply a fix to the MSIE Content-Type
bug. Also remember that the separator is '-', not '_'. Both
requirements will be stafisfied if you use
Netcgi_common.update_props_inheader
to build input_header
.
Notes: The header is kept into variables and
#send_output_header
sents it directly to out_obj
. This has
several advantages:
environment
object can process the header; for example
it can fix header fields.val mutable header_not_sent : bool
true
iff the output headers have not been sent.
#send_output_header
must set it to false once it did its
job.
method cgi_gateway_interface : string
method cgi_server_name : string
method cgi_server_port : int option
method cgi_server_protocol : string
method cgi_server_software : string
method cgi_request_method : string
method cgi_script_name : string
method cgi_path_info : string
method cgi_path_translated : string
method cgi_auth_type : string
method cgi_remote_addr : string
method cgi_remote_host : string
method cgi_remote_user : string
method cgi_remote_ident : string
method cgi_query_string : string
method protocol : Nethttp.protocol
method cgi_property : ?default:string -> string -> string
method cgi_properties : (string * string) list
Return the parameter properties
.
method cgi_https : bool
HTTP
if the HTTPS property is not understood.method input_header : Netmime.mime_header
For special header structures, just override this method.
method input_header_field : ?default:string -> string -> string
method multiple_input_header_field : string -> string list
method input_header_fields : (string * string) list
string -> Cookie.t
: Cookie.t list
: method user_agent : string
method input_content_length : int
method input_content_type_string : string
method input_content_type : unit -> string * (string * Netmime_string.s_param) list
method output_header : Netmime.mime_header
For special header structures, override this method and
maybe #send_output_header
.
method output_header_field : ?default:string -> string -> string
method multiple_output_header_field : string -> string list
method output_header_fields : (string * string) list
method set_output_header_field : string -> string -> unit
method set_multiple_output_header_field : string -> string list -> unit
method set_output_header_fields : (string * string) list -> unit
method set_status : Nethttp.http_status -> unit
method send_output_header : unit -> unit
method output_ch : Netchannels.out_obj_channel
#out_channel
instead.method out_channel : Netchannels.out_obj_channel
method log_error : string -> unit
You may want to override this with your custom logging method.
By default, #log_error msg
adds a timestamp to msg
and
sends th result to stderr
.
method config : config