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 : 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) listReturn the parameter properties.
method cgi_https : boolHTTP if the HTTPS property is not understood.method input_header : Netmime.mime_headerFor 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_headerFor 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 -> unitYou 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