Class Netcgi_common.cgi_environment


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:


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
Raises 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
method cookie : string -> Cookie.t
method cookies : 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 * Mimestring.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
Deprecated.Use #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




SourceForge.net Logo