]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Request.hs
Supplession of unneeded imports
[Lucu.git] / Network / HTTP / Lucu / Request.hs
index 3c235eb6e6888e55d088312cedcc3f25a6e59b98..b316730d1112174b26e8aec564b20dd4c38c2ea0 100644 (file)
@@ -1,38 +1,43 @@
+-- #prune
+
+-- |Definition of things related on HTTP request.
+--
+-- In general you don't have to use this module directly.
 module Network.HTTP.Lucu.Request
     ( Method(..)
-    , Request
-    , requestP -- Parser Request
+    , Request(..)
+    , requestP
     )
     where
 
-import qualified Data.ByteString.Lazy.Char8 as B
-import           Data.ByteString.Lazy.Char8 (ByteString)
 import           Network.HTTP.Lucu.Headers
 import           Network.HTTP.Lucu.HttpVersion
 import           Network.HTTP.Lucu.Parser
 import           Network.HTTP.Lucu.Parser.Http
 import           Network.URI
 
+-- |This is the definition of HTTP request methods, which shouldn't
+-- require any description.
 data Method = OPTIONS
             | GET
             | HEAD
+            | POST
             | PUT
             | DELETE
             | TRACE
             | CONNECT
-            | ExtensionMethod String
+            | ExtensionMethod !String
               deriving (Eq, Show)
 
-
+-- |This is the definition of HTTP reqest.
 data Request
     = Request {
-        reqMethod  :: Method
-      , reqURI     :: URI
-      , reqVersion :: HttpVersion
-      , reqHeaders :: Headers
-      , reqBody    :: Maybe ByteString
+        reqMethod  :: !Method
+      , reqURI     :: !URI
+      , reqVersion :: !HttpVersion
+      , reqHeaders :: !Headers
       }
-    deriving (Show)
+    deriving (Show, Eq)
 
 instance HasHeaders Request where
     getHeaders = reqHeaders
@@ -42,14 +47,13 @@ instance HasHeaders Request where
 requestP :: Parser Request
 requestP = do many crlf
               (method, uri, version) <- requestLineP
-              let req = Request {
-                          reqMethod  = method
-                        , reqURI     = uri
-                        , reqVersion = version
-                        , reqHeaders = emptyHeaders -- FIXME
-                        , reqBody    = Nothing      -- FIXME
-                        }
-              return req
+              headers                <- headersP
+              return Request {
+                           reqMethod  = method
+                         , reqURI     = uri
+                         , reqVersion = version
+                         , reqHeaders = headers
+                         }
 
 
 requestLineP :: Parser (Method, URI, HttpVersion)
@@ -66,6 +70,7 @@ methodP :: Parser Method
 methodP = (let methods = [ ("OPTIONS", OPTIONS)
                          , ("GET"    , GET    )
                          , ("HEAD"   , HEAD   )
+                         , ("POST"   , POST   )
                          , ("PUT"    , PUT    )
                          , ("DELETE" , DELETE )
                          , ("TRACE"  , TRACE  )
@@ -74,7 +79,7 @@ methodP = (let methods = [ ("OPTIONS", OPTIONS)
            in foldl (<|>) (fail "") $ map (\ (str, mth)
                                            -> string str >> return mth) methods)
           <|>
-          many1 token >>= return . ExtensionMethod
+          token >>= return . ExtensionMethod
 
 
 uriP :: Parser URI