From 01b6b4ac25266beeb500693d00b65b73aeb91329 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Tue, 16 Dec 2003 16:49:38 +0000 Subject: [PATCH] added parse_response_fst_line --- helm/DEVEL/ocaml-http/http_parser.ml | 13 +++++++++++++ helm/DEVEL/ocaml-http/http_parser.mli | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/helm/DEVEL/ocaml-http/http_parser.ml b/helm/DEVEL/ocaml-http/http_parser.ml index 7ab21be7f..6f556527a 100644 --- a/helm/DEVEL/ocaml-http/http_parser.ml +++ b/helm/DEVEL/ocaml-http/http_parser.ml @@ -106,6 +106,19 @@ let parse_request_fst_line ic = | _ -> raise (Malformed_request request_line)) with Malformed_URL url -> raise (Malformed_request_URI url) +let parse_response_fst_line ic = + let response_line = generic_input_line ~sep:crlf ~ic in + debug_print (sprintf "HTTP response line (not yet parsed): %s" response_line); + try + (match Pcre.split ~rex:pieces_sep response_line with + | [ version_raw; code_raw; _ ] -> + (version_of_string version_raw, (* method *) + status_of_code (int_of_string code_raw)) (* status *) + | _ -> raise (Malformed_response response_line)) + with + | Malformed_URL _ | Invalid_code _ | Failure "int_of_string" -> + raise (Malformed_response response_line) + let parse_path uri = patch_empty_path (String.concat "/" (Neturl.url_path uri)) let parse_query_get_params uri = try (* act on HTTP encoded URIs *) diff --git a/helm/DEVEL/ocaml-http/http_parser.mli b/helm/DEVEL/ocaml-http/http_parser.mli index e2f9287c8..d95977df9 100644 --- a/helm/DEVEL/ocaml-http/http_parser.mli +++ b/helm/DEVEL/ocaml-http/http_parser.mli @@ -39,6 +39,12 @@ val split_query_params: string -> (string * string) list @raise Malformed_request_URI if requested URI isn't well formed *) val parse_request_fst_line: in_channel -> meth * Neturl.url * version option + (** parse 1st line of an HTTP response + * @param inchan input channel from which parse response + * @raise Malformed_response + *) +val parse_response_fst_line: in_channel -> version * status + (** parse HTTP GET parameters from an URL; paramater which were passed with no value (like 'x' in "/foo.cgi?a=10&x=&c=9") are returned associated with the empty ("") string. -- 2.39.2