X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FRequest.hs;h=d23dc6331790455b347f26f03371126ed069ee30;hb=ca338174155913a969808d7b20193973394e474e;hp=8b516cca432b6cc5b67aa6298059c2e220806f91;hpb=9bb89434103e9a22f100d6ecb7e65a5d461e0454;p=Lucu.git diff --git a/Network/HTTP/Lucu/Request.hs b/Network/HTTP/Lucu/Request.hs index 8b516cc..d23dc63 100644 --- a/Network/HTTP/Lucu/Request.hs +++ b/Network/HTTP/Lucu/Request.hs @@ -1,15 +1,15 @@ {-# LANGUAGE OverloadedStrings , UnicodeSyntax + , ViewPatterns #-} -{-# 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(..) + , reqHasBody , requestP ) where @@ -51,6 +51,11 @@ instance HasHeaders Request where getHeaders = reqHeaders setHeaders req hdr = req { reqHeaders = hdr } +-- |Returns 'True' iff the 'Request' must have an entity body. +reqHasBody ∷ Request → Bool +reqHasBody (reqMethod → m) + = m ≡ POST ∨ m ≡ PUT + requestP ∷ Parser Request requestP = do skipMany crlf (method, uri, version) ← requestLineP @@ -85,8 +90,7 @@ methodP = choice ] uriP ∷ Parser URI -uriP = try $ - do bs ← takeWhile1 (\c → (¬) (isCtl c ∨ c ≡ '\x20')) +uriP = do bs ← takeWhile1 (\c → (¬) (isCtl c ∨ c ≡ '\x20')) let str = C8.unpack bs case parseURIReference str of Nothing -> fail ("Unparsable URI: " ⧺ str)