]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/http_types.ml
ported to ocaml 3.08
[helm.git] / helm / DEVEL / ocaml-http / http_types.ml
index cae9998b3f83a7f10d695c0998315846bd658a76..2175576b77c0507c05406621506c82080cd7a855 100644 (file)
@@ -2,7 +2,7 @@
 (*
   OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
 
-  Copyright (C) <2002> Stefano Zacchiroli <zack@cs.unibo.it>
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
 
   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
@@ -54,6 +54,12 @@ type tcp_server =
   (in_channel -> out_channel -> unit) ->
     unit
 
+  (** authentication information *)
+type auth_info =
+  [ `Basic of string * string (* username, password *)
+(*   | `Digest of ...  (* TODO digest authentication *) *)
+  ]
+
   (** informational HTTP status, see RFC2616 *)
 type informational_substatus =
   [ `Continue
@@ -134,6 +140,13 @@ type status =
   | server_error_status
   ]
 
+type status_code = [ `Code of int | `Status of status ]
+
+  (** File sources *)
+type file_source =
+  | FileSrc of string           (** filename *)
+  | InChanSrc of in_channel     (** input channel *)
+
   (** {2 Exceptions} *)
 
   (** invalid header encountered *)
@@ -170,6 +183,9 @@ exception Malformed_request_URI of string
   (** malformed request received *)
 exception Malformed_request of string
 
+  (** malformed response received, argument is response's first line *)
+exception Malformed_response of string
+
   (** a parameter you were looking for was not found *)
 exception Param_not_found of string
 
@@ -179,10 +195,16 @@ exception Invalid_status_line of string
   (** an header you were looking for was not found *)
 exception Header_not_found of string
 
-  (** raisable by callback functions to make main daemon quit, this is the only
+  (** raisable by callbacks to make main daemon quit, this is the only
   'clean' way to make start functions return *)
 exception Quit
 
+  (** raisable by callbacks to force a 401 (unauthorized) HTTP answer.
+  * This exception should be raised _before_ sending any data over given out
+  * channel.
+  * @param realm authentication realm (usually needed to prompt user) *)
+exception Unauthorized of string
+
   (** {2 OO representation of HTTP messages} *)
 
   (** HTTP generic messages. See {! Http_message.message} *)
@@ -261,6 +283,9 @@ class type request = object
       (** @return the list of all parameter received via POST *)
     method params_POST: (string * string) list
 
+      (** @return authorization information, if given by the client *)
+    method authorization: auth_info option
+
   end
 
   (** HTTP responses *)