3 OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
5 Copyright (C) <2002-2005> Stefano Zacchiroli <zack@cs.unibo.it>
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU Library General Public License as
9 published by the Free Software Foundation, version 2.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Library General Public License for more details.
16 You should have received a copy of the GNU Library General Public
17 License along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 (** Helpers and other not better classified functions which should not be
23 exposed in the final API *)
25 (** @return the current date compliant to RFC 1123, which updates RFC 822
26 zone info are retrieved from UTC *)
27 val date_822: unit -> string
29 (** @return true if 'name' is a directory on the file system, false otherwise
31 val is_directory: string -> bool
33 (** @return the filesize of fname *)
34 val filesize: string -> int
36 (** strip trailing '/', if any, from a string and @return the new string *)
37 val strip_trailing_slash: string -> string
39 (** strip heading '/', if any, from a string and @return the new string *)
40 val strip_heading_slash: string -> string
42 (** given a dir handle @return a list of entries contained *)
43 val ls: Unix.dir_handle -> string list
45 (** explode a string in a char list *)
46 val string_explode: string -> char list
48 (** implode a char list in a string *)
49 val string_implode: char list -> string
51 (** given an HTTP response code return the corresponding reason phrase *)
52 val reason_phrase_of_code: int -> string
54 (** build a Unix.sockaddr inet address from a string representation of an IP
55 address and a port number *)
56 val build_sockaddr: string * int -> Unix.sockaddr
58 (** explode an _inet_ Unix.sockaddr address in a string representation of an
59 IP address and a port number *)
60 val explode_sockaddr: Unix.sockaddr -> string * int
62 (** given an out_channel build on top of a socket, return peername related to
64 val peername_of_out_channel: out_channel -> Unix.sockaddr
66 (** as above but works on in_channels *)
67 val peername_of_in_channel: in_channel -> Unix.sockaddr
69 (** given an out_channel build on top of a socket, return sockname related to
71 val sockname_of_out_channel: out_channel -> Unix.sockaddr
73 (** as above but works on in_channels *)
74 val sockname_of_in_channel: in_channel -> Unix.sockaddr
76 (* TODO replace with Buffer.add_channel which does almost the same :-((( *)
77 (** reads from an input channel till it End_of_file and returns what has been
78 read; if limit is given returned buffer will contains at most first 'limit'
79 bytes read from input channel *)
80 val buf_of_inchan: ?limit: int -> in_channel -> Buffer.t
82 (** like List.assoc but return all bindings of a given key instead of the
84 val list_assoc_all: 'a -> ('a * 'b) list -> 'b list
86 val warn: string -> unit (** print a warning msg to stderr. Adds trailing \n *)
87 val error: string -> unit (** print an error msg to stderr. Adds trailing \n *)
89 (** @param finalizer finalization function (execution both in case of success
90 * and in case of raised exception
91 * @param f function to be invoked
92 * @param arg argument to be passed to function *)
93 val finally: (unit -> unit) -> ('a -> 'b) -> 'a -> 'b