X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Focaml-http%2Fhttp_daemon.mli;h=ba20a0b424fbfa8c005ac05f7910bdf2ba5a8406;hb=0c6a5aadb1a7746681a8e26fc0b009f847c10557;hp=784cc8eb982ad3a4d6db3915b8df535af4dd93c9;hpb=87d44a80101fe624927423b2ab2f1e7586443c07;p=helm.git diff --git a/helm/DEVEL/ocaml-http/http_daemon.mli b/helm/DEVEL/ocaml-http/http_daemon.mli index 784cc8eb9..ba20a0b42 100644 --- a/helm/DEVEL/ocaml-http/http_daemon.mli +++ b/helm/DEVEL/ocaml-http/http_daemon.mli @@ -2,7 +2,7 @@ (* OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - Copyright (C) <2002> Stefano Zacchiroli + Copyright (C) <2002-2004> Stefano Zacchiroli This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,14 +32,14 @@ val send_CRLF: out_channel -> unit either code or status must be given (not both, not none) which represent the HTTP response code, outchan is the output channel to which send status line *) val send_status_line: - ?version: Http_types.version -> ?code: int -> ?status: Http_types.status -> + ?version:Http_types.version -> code:Http_types.status_code -> out_channel -> unit (** like send_status_line but additionally will also send "Date" and "Server" standard headers *) val send_basic_headers: - ?version: Http_types.version -> ?code: int -> ?status: Http_types.status -> + ?version: Http_types.version -> code:Http_types.status_code -> out_channel -> unit @@ -49,9 +49,13 @@ val send_header: header: string -> value: string -> out_channel -> unit (** as send_header, but for a list of pairs *) val send_headers: headers:(string * string) list -> out_channel -> unit +(* (** send a file through an out_channel, file can be passed as an in_channel (if 'file' is given) or as a file name (if 'name' is given) *) val send_file: ?name:string -> ?file:in_channel -> out_channel -> unit +*) + (** send a file through an out_channel *) +val send_file: src:Http_types.file_source -> out_channel -> unit (** high level response function, respond on outchan sending: basic headers (including Content-Length computed using 'body' argument), headers probided @@ -59,7 +63,7 @@ val send_file: ?name:string -> ?file:in_channel -> out_channel -> unit status is 200, default response HTTP version is Http_common.http_version *) val respond: ?body:string -> ?headers:(string * string) list -> - ?version:Http_types.version -> ?code:int -> ?status:Http_types.status -> + ?version:Http_types.version -> ?code:Http_types.status_code -> out_channel -> unit @@ -73,23 +77,26 @@ val respond_forbidden: (** send a "redirection" class response, optional body argument contains data that will be displayed in the body of the response, default response status is - 302 (moved permanently), only redirection status are accepted by this + 301 (moved permanently), only redirection status are accepted by this function, other values will raise Failure *) val respond_redirect: location:string -> ?body:string -> - ?version: Http_types.version -> - ?code: int -> ?status: Http_types.redirection_status -> + ?version: Http_types.version -> ?code:Http_types.status_code -> out_channel -> unit + (** respond with a 401 (Unauthorized) response asking for authentication + * against given realm (default is the server name) *) +val respond_unauthorized: + ?version: Http_types.version -> ?realm:string -> out_channel -> unit + (** send an "error" response (i.e. 400 <= status < 600), optional body argument as per send_redirect, default response status is 400 (bad request), only error status are accepted by this function, other values will raise Failure *) val respond_error: ?body:string -> - ?version: Http_types.version -> - ?code: int -> ?status: Http_types.error_status -> + ?version: Http_types.version -> ?code:Http_types.status_code -> out_channel -> unit @@ -101,20 +108,28 @@ val respond_file: (** respond using a prebuilt Http_types.response object *) val respond_with: Http_types.response -> out_channel -> unit - (** create an HTTP daemon listening on 'addr':'port' (defaults are - addr:"0.0.0.0" and port:80), callback is the user supplied function which - receive as a first parameter the path required by the the HTTP client as a - string, and a list of pair representing parameters passed - via GET. The last argument of the callback is an output_channel connected to - the HTTP client to which the user can write directly. 'timeout' parameter sets - a timeout for each request processed by the daemon, if it's set to None, - daemon waits forever for completed requests (use with care!), default is 5 - minute. 'mode' parameter has 3 possible values: `Single means that all request - are handled by the same process, `Fork means that each request is handled by a - separate process, `Thread means that each request is handled by a separate - thread, default is `Fork; 'root' (mnemonic "document root") is the directory - where the daemon chdir before starting up, default is current working - directory *) + (** starts an HTTP daemon listening + * @param addr adress on which daemon will be listening, can be both a numeric + * address (e.g. "127.0.0.1") and an hostname (e.g. "localhost"). Default is + * the wildcard address "0.0.0.0" + * @param port TCP port on which the daemon will be listening. Default is the + * HTTP port 80 + * @param timeout timeout in seconds after which an incoming HTTP request will + * be terminated closing the corresponding TCP connection. Passing None will + * disable the timeout. Default is 5 minutes (300 seconds) + * @param mode requests handling mode, it can have three different values. + * `Single -> all requests will be handled by the same process, + * `Fork -> each request will be handled by a separate process + * `Thread -> each request will be handled by a separate thread + * Default is `Fork + * @param root document root (i.e. directory to which ocaml http will chdir + * before starting handling requests). Default is current working directory + * @param callback function which will be called each time a correct HTTP + * request will be received. 1st callback argument is the path requested by + * the HTTP client; 2nd argument is a list of pairs + * representing decoded query string; 3rd argument is an output channel + * connected with the client + *) val start: ?addr: string -> ?port: int -> ?timeout: int option -> ?mode: Http_types.daemon_mode -> ?root: string ->