]> matita.cs.unibo.it Git - helm.git/blobdiff - DEVEL/ocaml-http/http_parser.ml
preliminary cookie support
[helm.git] / DEVEL / ocaml-http / http_parser.ml
index af371bb1ebd613c0bab0db53d3b68fd75dceafba..b92a844e3cfd1a230e33c6b0a27c98deb2bea71e 100644 (file)
@@ -151,6 +151,28 @@ let parse_headers ic =
   in
   parse_headers' []
 
+let parse_cookies raw_cookies =
+  prerr_endline ("raw cookies: '" ^ raw_cookies ^ "'");
+  let tokens =
+    let lexbuf = Lexing.from_string raw_cookies in
+    let rec aux acc =
+      match Cookie_lexer.token lexbuf with
+      | `EOF -> acc
+      | token -> aux (token :: acc)
+    in
+    List.rev (aux [])
+  in
+  let rec aux = function
+    | [ `TOKEN n ; `ASSIGN ; (`TOKEN v | `QSTRING v) ] ->
+        prerr_endline ("found cookie " ^ n ^ " " ^ v);
+        [ (n,v) ]
+    | `TOKEN n :: `ASSIGN :: (`TOKEN v | `QSTRING v) :: `SEP :: tl ->
+        prerr_endline ("found cookie " ^ n ^ " " ^ v);
+        (n,v) :: aux tl
+    | _ -> raise (Malformed_cookies raw_cookies)
+  in
+  aux tokens
+
 let parse_request ic =
   let (meth, uri, version) = parse_request_fst_line ic in
   let path = parse_path uri in