X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Focaml-http%2Fhttp_types.ml;h=5c88b212ed010990015a936355824685f6d737d8;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=ebbcbcc3519b6ef746f2e3580ad275fe1744f7af;hpb=b135ff929bdf58c2e076a6462ab03e6ed1067654;p=helm.git diff --git a/helm/DEVEL/ocaml-http/http_types.ml b/helm/DEVEL/ocaml-http/http_types.ml index ebbcbcc35..5c88b212e 100644 --- a/helm/DEVEL/ocaml-http/http_types.ml +++ b/helm/DEVEL/ocaml-http/http_types.ml @@ -2,30 +2,27 @@ (* OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - Copyright (C) <2002> Stefano Zacchiroli + Copyright (C) <2002-2005> 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + it under the terms of the GNU Library General Public License as + published by the Free Software Foundation, version 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA *) -type version = - [ `HTTP_1_0 - | `HTTP_1_1 - ] - -type meth = [ `GET ] +(** Type definitions *) +type version = [ `HTTP_1_0 | `HTTP_1_1 ] +type meth = [ `GET | `POST ] type daemon_mode = [ `Single | `Fork | `Thread ] type tcp_server = @@ -33,11 +30,14 @@ type tcp_server = (in_channel -> out_channel -> unit) -> unit +type auth_info = + [ `Basic of string * string (* username, password *) + ] + type informational_substatus = [ `Continue | `Switching_protocols ] - type success_substatus = [ `OK | `Created @@ -47,7 +47,6 @@ type success_substatus = | `Reset_content | `Partial_content ] - type redirection_substatus = [ `Multiple_choices | `Moved_permanently @@ -57,7 +56,6 @@ type redirection_substatus = | `Use_proxy | `Temporary_redirect ] - type client_error_substatus = [ `Bad_request | `Unauthorized @@ -78,7 +76,6 @@ type client_error_substatus = | `Requested_range_not_satisfiable | `Expectation_failed ] - type server_error_substatus = [ `Internal_server_error | `Not_implemented @@ -87,18 +84,15 @@ type server_error_substatus = | `Gateway_time_out | `HTTP_version_not_supported ] - type informational_status = [ `Informational of informational_substatus ] type success_status = [ `Success of success_substatus ] type redirection_status = [ `Redirection of redirection_substatus ] type client_error_status = [ `Client_error of client_error_substatus ] type server_error_status = [ `Server_error of server_error_substatus ] - type error_status = [ client_error_status | server_error_status ] - type status = [ informational_status | success_status @@ -107,29 +101,72 @@ type status = | server_error_status ] +type status_code = [ `Code of int | `Status of status ] + +type file_source = + | FileSrc of string + | InChanSrc of in_channel + exception Invalid_header of string exception Invalid_header_name of string exception Invalid_header_value of string exception Invalid_HTTP_version of string +exception Invalid_HTTP_method of string exception Invalid_code of int -exception Invalid_status of status - +exception Malformed_URL of string exception Malformed_query of string exception Malformed_query_part of string * string -exception Unsupported_method of string -exception Unsupported_HTTP_version of string exception Malformed_request_URI of string exception Malformed_request of string - +exception Malformed_response of string exception Param_not_found of string - exception Invalid_status_line of string exception Header_not_found of string +exception Quit +exception Unauthorized of string -class type response = - object - method version: version +class type message = object + method version: version option method setVersion: version -> unit + method body: string + method setBody: string -> unit + method bodyBuf: Buffer.t + method setBodyBuf: Buffer.t -> unit + method addBody: string -> unit + method addBodyBuf: Buffer.t -> unit + method addHeader: name:string -> value:string -> unit + method addHeaders: (string * string) list -> unit + method replaceHeader: name:string -> value:string -> unit + method replaceHeaders: (string * string) list -> unit + method removeHeader: name:string -> unit + method hasHeader: name:string -> bool + method header: name:string -> string + method headers: (string * string) list + method clientSockaddr: Unix.sockaddr + method clientAddr: string + method clientPort: int + method serverSockaddr: Unix.sockaddr + method serverAddr: string + method serverPort: int + method toString: string + method serialize: out_channel -> unit + end + +class type request = object + inherit message + method meth: meth + method uri: string + method path: string + method param: ?meth:meth -> ?default:string -> string -> string + method paramAll: ?meth:meth -> string -> string list + method params: (string * string) list + method params_GET: (string * string) list + method params_POST: (string * string) list + method authorization: auth_info option + end + +class type response = object + inherit message method code: int method setCode: int -> unit method status: status @@ -144,21 +181,7 @@ class type response = method isClientError: bool method isServerError: bool method isError: bool - method contents: string - method setContents: string -> unit - method contentsBuf: Buffer.t - method setContentsBuf: Buffer.t -> unit - method addContents: string -> unit - method addContentsBuf: Buffer.t -> unit - method addHeader: name:string -> value:string -> unit - method addHeaders: (string * string) list -> unit method addBasicHeaders: unit - method replaceHeader: name:string -> value:string -> unit - method replaceHeaders: (string * string) list -> unit - method removeHeader: name:string -> unit - method hasHeader: name:string -> bool - method header: name:string -> string - method headers: (string * string) list method contentType: string method setContentType: string -> unit method contentEncoding: string @@ -169,17 +192,8 @@ class type response = method setExpires: string -> unit method server: string method setServer: string -> unit - method toString: string - method serialize: out_channel -> unit - end -class type request = - object - method uri: string - method path: string - method param: string -> string - method paramAll: string -> string list - method params: (string * string) list end + class type connection = object method getRequest: request option @@ -192,3 +206,14 @@ class type daemon = method getRequest: request * connection end +type daemon_spec = { + address: string; + auth: (string * auth_info) option; + callback: request -> out_channel -> unit; + mode: daemon_mode; + port: int; + root_dir: string option; + exn_handler: (exn -> out_channel -> unit) option; + timeout: int option; +} +