3 OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
5 Copyright (C) <2002> 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 General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 (** Helpers and other not better classified functions which should not be
23 visible to the final user *)
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
47 (** implode a char list in a string *)
48 val string_implode: char list -> string
50 (** given an HTTP response code return the corresponding reason phrase *)
51 val reason_phrase_of_code: int -> string
53 (** build a Unix.sockaddr inet address from a string representation of an IP
54 address and a port number *)
55 val build_sockaddr: string * int -> Unix.sockaddr
56 (** explode an _inet_ Unix.sockaddr address in a string representation of an
57 IP address and a port number *)
58 val explode_sockaddr: Unix.sockaddr -> string * int
60 (** given an out_channel build on top of a socket, return peername related to
62 val peername_of_out_channel: out_channel -> Unix.sockaddr
63 (** as above but works on in_channels *)
64 val peername_of_in_channel: in_channel -> Unix.sockaddr
65 (** given an out_channel build on top of a socket, return sockname related to
67 val sockname_of_out_channel: out_channel -> Unix.sockaddr
68 (** as above but works on in_channels *)
69 val sockname_of_in_channel: in_channel -> Unix.sockaddr
71 (* TODO replace with Buffer.add_channel which does almost the same :-((( *)
72 (** reads from an input channel till it End_of_file and returns what has been
73 read; if limit is given returned buffer will contains at most first 'limit'
74 bytes read from input channel *)
75 val buf_of_inchan: ?limit: int -> in_channel -> Buffer.t
77 (** like List.assoc but return all bindings of a given key instead of the
79 val list_assoc_all: 'a -> ('a * 'b) list -> 'b list