X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FRequest.hs;fp=Network%2FHTTP%2FLucu%2FRequest.hs;h=13ccf9c9420b8265fa244934ed2d98cebc1a497f;hp=b6ffedbdb11ccf2ef0bfa2701998d0183e82c808;hb=90fca0675b1694e69b8e431c989343855cbd125d;hpb=742b0cae221f12eafbf1379b91c473b059efa7d8 diff --git a/Network/HTTP/Lucu/Request.hs b/Network/HTTP/Lucu/Request.hs index b6ffedb..13ccf9c 100644 --- a/Network/HTTP/Lucu/Request.hs +++ b/Network/HTTP/Lucu/Request.hs @@ -1,6 +1,8 @@ {-# LANGUAGE - MultiParamTypeClasses + FlexibleInstances + , MultiParamTypeClasses , OverloadedStrings + , TypeSynonymInstances , UnicodeSyntax , ViewPatterns #-} @@ -17,9 +19,8 @@ import Control.Applicative import Control.Monad.Unicode import Data.Ascii (Ascii) import Data.Attoparsec.Char8 -import Data.Attoparsec.Parsable -import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as C8 +import Data.Default import Network.HTTP.Lucu.Headers import Network.HTTP.Lucu.HttpVersion import Network.HTTP.Lucu.Parser.Http @@ -63,17 +64,17 @@ reqHasBody (reqMethod → m) | m ≡ PUT = True | otherwise = False -instance Parsable ByteString Request where - {-# INLINEABLE parser #-} - parser = do skipMany crlf - (meth, u, ver) ← requestLine - hdrs ← parser - return Request { - reqMethod = meth - , reqURI = u - , reqVersion = ver - , reqHeaders = hdrs - } +instance Default (Parser Request) where + {-# INLINEABLE def #-} + def = do skipMany crlf + (meth, u, ver) ← requestLine + hdrs ← def + return Request { + reqMethod = meth + , reqURI = u + , reqVersion = ver + , reqHeaders = hdrs + } requestLine ∷ Parser (Method, URI, HttpVersion) {-# INLINEABLE requestLine #-} @@ -81,7 +82,7 @@ requestLine = do meth ← method sp u ← uri sp - ver ← parser + ver ← def crlf return (meth, u, ver)