Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*)
+(** Main OCaml HTTP module.
+ Here you can find two set of functions:
+ - functions which let you start an HTTP Daemon (start* functions)
+ - facility functions which let you sent responses back to clients *)
+
(** send a CRLF sequence on the given output channel, this is mandatory after
the last header was sent and before start sending the response body *)
val send_CRLF: out_channel -> unit
(** as send_header, but for a list of pairs <header, value> *)
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,
- headers probided via 'headers' argument, body given via 'body' argument.
- Default response status is 200, default response HTTP version is
- Http_common.http_version *)
+ (** high level response function, respond on outchan sending: basic headers
+ (including Content-Length computed using 'body' argument), headers probided
+ via 'headers' argument, body given via 'body' argument. Default response
+ 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 ->
(Http_types.request -> out_channel -> unit) ->
unit
- (** Trivial static pages HTTP daemon *)
+ (** Object oriented interface to HTTP daemons.
+ @param addr address on which daemon will listen for connections
+ @param port port which daemon will bind
+ see {! Http_types.daemon} *)
+class daemon:
+ ?addr: string -> ?port: int ->
+ unit ->
+ Http_types.daemon
+
+ (** Trivial static pages HTTP daemon.
+ Daemons created using this module will serve directory indexes and files found
+ starting from the working directory *)
module Trivial :
sig
+ (** callback function, exposed if you like to use it as a basis to define
+ a more powerful daemon *)
val callback : string -> 'a -> out_channel -> unit
+
+ (** start the "trivial" HTTP daemon *)
val start : ?addr:string -> ?port:int -> unit -> unit
end
-class daemon: ?addr: string -> ?port: int -> unit -> Http_types.daemon
-