+{-# OPTIONS_HADDOCK 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
+ , 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
| 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
+ reqMethod :: !Method
+ , reqURI :: !URI
+ , reqVersion :: !HttpVersion
+ , reqHeaders :: !Headers
}
deriving (Show, Eq)
, ("TRACE" , TRACE )
, ("CONNECT", CONNECT)
]
- in foldl (<|>) (fail "") $ map (\ (str, mth)
+ in foldl (<|>) failP $ map (\ (str, mth)
-> string str >> return mth) methods)
<|>
token >>= return . ExtensionMethod
uriP :: Parser URI
uriP = do str <- many1 $ satisfy (\ c -> not (isCtl c || c == ' '))
case parseURIReference str of
- Nothing -> fail ""
+ Nothing -> failP
Just uri -> return uri
\ No newline at end of file