(*
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
(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
| 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 *)
(** 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
(** 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} *)
(** @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 *)