packages feed

wai-predicates 0.2.1 → 0.3

raw patch · 5 files changed

+33/−13 lines, 5 files

Files

+ 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