sig
type row = {
src_ip : string;
remote_username : string option;
username : string option;
t : Calendar.t;
http_method : Weblogs.http_method;
full_url : string;
url : string;
qs : string option;
args : (string * string) list;
http_version : string option;
rcode : int option;
size : int option;
referer : string option;
user_agent : string option;
clickstream : string;
server_sitename : string option;
server_computername : string option;
server_ip : string option;
server_port : int option;
time_taken : int option;
proxy : string option;
original : string;
filename : string;
lineno : int;
}
and http_method = GET | POST | HEAD | OTHER of string
val string_of_row : Weblogs.row -> string
type t = Weblogs.row list
val import_file : ?filter:(Weblogs.row -> bool) -> string -> Weblogs.t
val sort : Weblogs.t -> Weblogs.t
val exclude_local : ?filename:string -> Weblogs.t -> Weblogs.t
type referer_class =
KnownSearchEngine of string * string
| KnownDirectory of string
| KnownEmailService of string
| Other
val referer_class : Weblogs.row -> Weblogs.referer_class
val is_known_bot : Weblogs.row -> (string * float) option
val is_web_browser : Weblogs.row -> string option
val normalise_query : string -> string
type visitor = Weblogs.row list
val detect_visitors : Weblogs.t -> Weblogs.visitor list
val import_rows : string -> (Weblogs.row -> unit) -> unit
type visitors_handle
val start_visitors : ?directory:string -> unit -> Weblogs.visitors_handle
val open_visitors : ?directory:string -> unit -> Weblogs.visitors_handle
val import_visitor_row : Weblogs.visitors_handle -> Weblogs.row -> unit
val finalise_visitors : Weblogs.visitors_handle -> unit
val count_visitors : Weblogs.visitors_handle -> int
val iter_visitors :
Weblogs.visitors_handle -> (Weblogs.visitor -> unit) -> unit
end