]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/http_user_agent.ml
added head_callback to access response status and headers in requests
[helm.git] / helm / DEVEL / ocaml-http / http_user_agent.ml
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