]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/http_types.ml
- merged "post" branch
[helm.git] / helm / DEVEL / ocaml-http / http_types.ml
index fa09a3d5c72023d428f19b09b07bf6c410fa5a0a..276d2e3aa47048651660c5093546667a30bcddd2 100644 (file)
@@ -24,7 +24,10 @@ type version =
   | `HTTP_1_1
   ]
 
-type meth = [ `GET ]
+type meth =
+  [ `GET
+  | `POST
+  ]
 
 type daemon_mode = [ `Single | `Fork | `Thread ]
 
@@ -111,6 +114,7 @@ exception Invalid_header of string
 exception Invalid_header_name of string
 exception Invalid_header_value of string
 exception Invalid_HTTP_version of string
+exception Invalid_HTTP_method of string
 exception Invalid_code of int
 exception Invalid_status of status
 
@@ -126,10 +130,59 @@ exception Param_not_found of string
 exception Invalid_status_line of string
 exception Header_not_found of string
 
-class type response =
-  object
+class type message = object
+
     method version: version
     method setVersion: version -> unit
+
+    method body: string
+    method setBody: string -> unit
+    method bodyBuf: Buffer.t
+    method setBodyBuf: Buffer.t -> unit
+    method addBody: string -> unit
+    method addBodyBuf: Buffer.t -> unit
+
+    method addHeader: name:string -> value:string -> unit
+    method addHeaders: (string * string) list -> unit
+    method replaceHeader: name:string -> value:string -> unit
+    method replaceHeaders: (string * string) list -> unit
+    method removeHeader: name:string -> unit
+    method hasHeader: name:string -> bool
+    method header: name:string -> string
+    method headers: (string * string) list
+
+    method clientSockaddr: Unix.sockaddr
+    method clientAddr: string
+    method clientPort: int
+
+    method serverSockaddr: Unix.sockaddr
+    method serverAddr: string
+    method serverPort: int
+
+    method toString: string
+    method serialize: out_channel -> unit
+
+  end
+
+class type request = object
+
+    inherit message
+
+    method meth: meth
+    method uri: string
+    method path: string
+    method param: ?meth:meth -> string -> string
+    method paramAll: ?meth:meth -> string -> string list
+    method params: (string * string) list
+    method params_GET: (string * string) list
+    method params_POST: (string * string) list
+
+  end
+
+class type response = object
+
+    inherit message
+
     method code: int
     method setCode: int -> unit
     method status: status
@@ -138,27 +191,15 @@ class type response =
     method setReason: string -> unit
     method statusLine: string
     method setStatusLine: string -> unit
+
     method isInformational: bool
     method isSuccess: bool
     method isRedirection: bool
     method isClientError: bool
     method isServerError: bool
     method isError: bool
-    method contents: string
-    method setContents: string -> unit
-    method contentsBuf: Buffer.t
-    method setContentsBuf: Buffer.t -> unit
-    method addContents: string -> unit
-    method addContentsBuf: Buffer.t -> unit
-    method addHeader: name:string -> value:string -> unit
-    method addHeaders: (string * string) list -> unit
+
     method addBasicHeaders: unit
-    method replaceHeader: name:string -> value:string -> unit
-    method replaceHeaders: (string * string) list -> unit
-    method removeHeader: name:string -> unit
-    method hasHeader: name:string -> bool
-    method header: name:string -> string
-    method headers: (string * string) list
     method contentType: string
     method setContentType: string -> unit
     method contentEncoding: string
@@ -169,26 +210,16 @@ class type response =
     method setExpires: string -> unit
     method server: string
     method setServer: string -> unit
-    method toString: string
-    method serialize: out_channel -> unit
-  end
-class type request =
-  object
-    method uri: string
-    method path: string
-    method param: string -> string
-    method paramAll: string -> string list
-    method params: (string * string) list
-    method clientSockaddr: Unix.sockaddr
-    method clientAddr: string
-    method clientPort: int
+
   end
+
 class type connection =
   object
     method getRequest: request option
     method respond_with: response -> unit
     method close: unit
   end
+
 class type daemon =
   object
     method accept: connection