]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/examples/dump_args.ml
added ocaml-http 0.0.1
[helm.git] / helm / DEVEL / ocaml-http / examples / dump_args.ml
diff --git a/helm/DEVEL/ocaml-http/examples/dump_args.ml b/helm/DEVEL/ocaml-http/examples/dump_args.ml
new file mode 100644 (file)
index 0000000..ba8e4f5
--- /dev/null
@@ -0,0 +1,49 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+let dump_args path args =
+  Printf.sprintf
+    "PATH: %s\nARGS:\n%s"
+    path
+    (String.concat
+      ""
+      (List.map
+        (fun (name, value) -> "\tNAME: " ^ name ^ ", VALUE: " ^ value ^ "\n")
+        args))
+in
+let callback path args outchan =
+  match path with
+  | "/gone" ->
+      Http.Daemon.respond_redirect
+        ~location:"/foo" ~body:"REDIRECT" ~code:302 outchan
+  | "/error" ->
+      Http.Daemon.respond_error ~body:"ERROR" ~code:500 outchan
+  | _ ->
+      begin
+        Http.Daemon.send_basic_headers ~code:200 outchan;
+        Http.Daemon.send_CRLF outchan;
+        output_string outchan (dump_args path args)
+      end
+in
+print_endline "Starting custom Http.Daemon ...";
+flush stdout;
+Http.Daemon.start ~addr:"127.0.0.1" ~port:9999 callback
+