]> matita.cs.unibo.it Git - helm.git/commitdiff
added head_callback to access response status and headers in requests
authorStefano Zacchiroli <zack@upsilon.cc>
Thu, 3 Feb 2005 22:06:01 +0000 (22:06 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Thu, 3 Feb 2005 22:06:01 +0000 (22:06 +0000)
helm/DEVEL/ocaml-http/http_user_agent.ml
helm/DEVEL/ocaml-http/http_user_agent.mli

index 5e74fbfafed50c2b5adc0a5841a69418dbd91f63..ebc09804a692d9c86d924c3f695130f29845b9ce 100644 (file)
@@ -71,14 +71,15 @@ let head url =
   close_in inchan; (* close also outchan, same fd *)
   Buffer.contents buf
 
-let get_iter callback url =
+let get_iter ?(head_callback = fun _ _ -> ()) callback url =
   let (inchan, outchan) = submit_request `GET url in
   let buf = String.create tcp_bufsiz in
   let (_, status) = Http_parser.parse_response_fst_line inchan in
   (match code_of_status status with
   | 200 -> ()
   | code -> raise (Http_error (code, "")));
-  ignore (Http_parser.parse_headers inchan);
+  let headers = Http_parser.parse_headers inchan in
+  head_callback status headers;
   (try
     while true do
       match input inchan buf 0 tcp_bufsiz with
@@ -93,8 +94,8 @@ let get_iter callback url =
   with End_of_file -> ());
   close_in inchan (* close also outchan, same fd *)
 
-let get url =
+let get ?head_callback url =
   let buf = Buffer.create 10240 in
-  get_iter (Buffer.add_string buf) url;
+  get_iter ?head_callback (Buffer.add_string buf) url;
   Buffer.contents buf
 
index 58032467718c21b01c14ec39e4045c7fefaaf6af..b3e91b3c006f5cb799742c2b7bb16dad8951e607 100644 (file)
  * this module is for performances and incremental elaboration of response's
  * bodies *)
 
+open Http_types
+
 exception Http_error of (int * string)  (* code, body *)
 
-  (** @param url an HTTP url
+  (** @param head_callback optional calllback invoked on response's status and
+   * headers. If not provided no callback will be invoked
+   * @param url an HTTP url
    * @return HTTP response's body
    * @raise Http_error when response code <> 200 *)
-val get: string -> string
+val get:
+  ?head_callback:(status -> (string * string) list -> unit) ->
+  string ->
+    string
 
   (** as above but iter callback function on HTTP response's body instead of
    * returning it as a string *)
-val get_iter: (string -> unit) -> string -> unit
+val get_iter:
+  ?head_callback:(status -> (string * string) list -> unit) ->
+  (string -> unit) -> string ->
+    unit
 
   (** @param url an HTTP url
    * @return HTTP HEAD raw response