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 : booltrue 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 : stringmethod cgi_server_name : stringmethod cgi_server_port : int optionmethod cgi_server_protocol : stringmethod cgi_server_software : stringmethod cgi_request_method : stringmethod cgi_script_name : stringmethod cgi_path_info : stringmethod cgi_path_translated : stringmethod cgi_auth_type : stringmethod cgi_remote_addr : stringmethod cgi_remote_host : stringmethod cgi_remote_user : stringmethod cgi_remote_ident : stringmethod cgi_query_string : stringmethod protocol : Nethttp.protocolmethod cgi_property : ?default:string -> string -> stringmethod cgi_properties : (string * string) listproperties.method cgi_https : boolHTTP if the HTTPS property is not understood.method input_header : Netmime.mime_headermethod input_header_field : ?default:string -> string -> stringmethod multiple_input_header_field : string -> string listmethod input_header_fields : (string * string) listmethod cookie : string -> Cookie.tmethod cookies : Cookie.t listmethod user_agent : stringmethod input_content_length : intmethod input_content_type_string : stringmethod input_content_type : unit -> string * (string * Mimestring.s_param) listmethod output_header : Netmime.mime_header#send_output_header.method output_header_field : ?default:string -> string -> stringmethod multiple_output_header_field : string -> string listmethod output_header_fields : (string * string) listmethod set_output_header_field : string -> string -> unitmethod set_multiple_output_header_field : string -> string list -> unitmethod set_output_header_fields : (string * string) list -> unitmethod set_status : Nethttp.http_status -> unitmethod send_output_header : unit -> unitmethod output_ch : Netchannels.out_obj_channel#out_channel instead.method out_channel : Netchannels.out_obj_channelmethod log_error : string -> unit#log_error msg adds a timestamp to msg and
sends th result to stderr.method config : config