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