wai-predicates 0.2.1 → 0.3
raw patch · 5 files changed
+33/−13 lines, 5 files
Files
- CHANGELOG.md +19/−0
- src/Network/Wai/Predicate.hs +7/−7
- src/Network/Wai/Predicate/Parser/MediaType.hs +2/−1
- src/Network/Wai/Predicate/Request.hs +3/−4
- wai-predicates.cabal +2/−1
+ CHANGELOG.md view
@@ -0,0 +1,19 @@+0.3+---+- Change `header`, `hasHeader` and `lookupHeader` to use `HeaderName` instead+ of `ByteString` for the lookup key.++0.2.1+-----+- Update WAI version bounds to include 2.1++0.2+---+- Rename `getRequest` predicate to `request` and `request` method of+ `HasRequest` to `getRequest`.+- Add `MonadTrans` and `MonadIO` instance declarations for `ResultT` and+ some helper functions.++0.1+---+- Initial release.
src/Network/Wai/Predicate.hs view
@@ -28,13 +28,13 @@ import Data.ByteString (ByteString) import Data.ByteString.From-import Data.CaseInsensitive (mk)+import Data.CaseInsensitive (original) import Data.List (find) import Data.Monoid import Data.Maybe (isJust) import Data.Predicate import Data.Word-import Network.HTTP.Types.Status+import Network.HTTP.Types import Network.Wai.Predicate.Accept import Network.Wai.Predicate.Content import Network.Wai.Predicate.Error@@ -57,16 +57,16 @@ then Fail (err status400 ("Missing query '" <> k <> "'.")) else return () -header :: (HasHeaders r, FromByteString a) => ByteString -> Predicate r Error a+header :: (HasHeaders r, FromByteString a) => HeaderName -> Predicate r Error a header k r = case lookupHeader k r of- [] -> Fail (err status400 ("Missing header '" <> k <> "'."))+ [] -> Fail (err status400 ("Missing header '" <> original k <> "'.")) hh -> either (Fail . err status400) return (readValues hh) -hasHeader :: (HasHeaders r) => ByteString -> Predicate r Error ()+hasHeader :: (HasHeaders r) => HeaderName -> Predicate r Error () hasHeader k r =- if isJust $ find ((mk k ==) . fst) (headers r)+ if isJust $ find ((k ==) . fst) (headers r) then return ()- else Fail (err status400 ("Missing header '" <> k <> "'."))+ else Fail (err status400 ("Missing header '" <> original k <> "'.")) segment :: (HasPath r, FromByteString a) => Word -> Predicate r Error a segment i r = case lookupSegment i r of
src/Network/Wai/Predicate/Parser/MediaType.hs view
@@ -13,6 +13,7 @@ import Data.Attoparsec.Char8 import Data.ByteString (ByteString) import Data.List (sortBy)+import Network.HTTP.Types import Network.Wai.Predicate.Request import qualified Data.ByteString.Char8 as C@@ -24,7 +25,7 @@ , medParams :: ![(ByteString, ByteString)] } deriving (Eq, Show) -readMediaTypes :: (HasHeaders r) => ByteString -> r -> [MediaType]+readMediaTypes :: (HasHeaders r) => HeaderName -> r -> [MediaType] readMediaTypes k r = sortBy q . concatMap parseMediaTypes $ lookupHeader k r where
src/Network/Wai/Predicate/Request.hs view
@@ -21,7 +21,6 @@ ) where import Data.ByteString (ByteString)-import Data.CaseInsensitive (mk) import Data.Maybe (mapMaybe) import Data.Vector (Vector, (!?)) import Data.Word@@ -89,7 +88,7 @@ Req rq (concatMap parseCookies (getHeaders "Cookie" rq)) (Vec.fromList . splitSegments . Wai.rawPathInfo $ rq) -lookupHeader :: HasHeaders r => ByteString -> r -> [ByteString]+lookupHeader :: HasHeaders r => HeaderName -> r -> [ByteString] lookupHeader name = getHeaders name lookupSegment :: HasPath r => Word -> r -> Maybe ByteString@@ -101,8 +100,8 @@ lookupQuery :: HasQuery r => ByteString -> r -> [ByteString] lookupQuery name = mapMaybe snd . filter ((name ==) . fst) . queryItems -getHeaders :: HasHeaders r => ByteString -> r -> [ByteString]-getHeaders name = map snd . filter ((mk name ==) . fst) . headers+getHeaders :: HasHeaders r => HeaderName -> r -> [ByteString]+getHeaders name = map snd . filter ((name ==) . fst) . headers ----------------------------------------------------------------------------- -- Internal
wai-predicates.cabal view
@@ -1,5 +1,5 @@ name: wai-predicates-version: 0.2.1+version: 0.3 synopsis: WAI request predicates license: OtherLicense license-file: LICENSE@@ -13,6 +13,7 @@ extra-source-files: README.md+ CHANGELOG.md description: Evaluate predicate functions against WAI requests and receive