wai-predicates 0.3 → 0.3.1
raw patch · 4 files changed
+30/−5 lines, 4 filesdep +vault
Dependencies added: vault
Files
- CHANGELOG.md +8/−4
- src/Network/Wai/Predicate.hs +12/−0
- src/Network/Wai/Predicate/Request.hs +8/−0
- wai-predicates.cabal +2/−1
CHANGELOG.md view
@@ -1,19 +1,23 @@+0.3.1+-----------------------------------------------------------------------------+- Add `fromVault` predicate and `HasVault` type-class.+ 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
@@ -22,6 +22,9 @@ , accept , contentType++ , fromVault+ , module Network.Wai.Predicate.MediaType , module Network.Wai.Predicate.Error ) where@@ -33,6 +36,7 @@ import Data.Monoid import Data.Maybe (isJust) import Data.Predicate+import Data.Vault.Lazy (Key) import Data.Word import Network.HTTP.Types import Network.Wai.Predicate.Accept@@ -43,6 +47,8 @@ import Network.Wai.Predicate.Utility import Network.Wai +import qualified Data.Vault.Lazy as Vault+ request :: (HasRequest r) => Predicate r f Request request = return . getRequest @@ -89,3 +95,9 @@ if null (lookupCookie k r) then Fail (err status400 ("Missing cookie '" <> k <> "'.")) else return ()++fromVault :: HasVault r => Key a -> Predicate r Error a+fromVault k r = case Vault.lookup k (requestVault r) of+ Nothing -> Fail (err status500 "Vault does not contain key.")+ Just a -> return a+
src/Network/Wai/Predicate/Request.hs view
@@ -12,6 +12,7 @@ , HasQuery (..) , HasPath (..) , HasRequest (..)+ , HasVault (..) , fromRequest , lookupHeader@@ -23,6 +24,7 @@ import Data.ByteString (ByteString) import Data.Maybe (mapMaybe) import Data.Vector (Vector, (!?))+import Data.Vault.Lazy (Vault) import Data.Word import Network.HTTP.Types import Network.Wai (Request)@@ -50,6 +52,9 @@ class HasPath a where segments :: a -> Vector ByteString +class HasVault a where+ requestVault :: a -> Vault+ data Req = Req { _request :: Request , _cookies :: Cookies@@ -82,6 +87,9 @@ instance HasPath Req where segments = _segments++instance HasVault Req where+ requestVault = Wai.vault . _request fromRequest :: Request -> Req fromRequest rq =
wai-predicates.cabal view
@@ -1,5 +1,5 @@ name: wai-predicates-version: 0.3+version: 0.3.1 synopsis: WAI request predicates license: OtherLicense license-file: LICENSE@@ -55,6 +55,7 @@ , case-insensitive == 1.1.* , http-types == 0.8.* , transformers == 0.3.*+ , vault == 0.3.* , vector == 0.10.* , wai >= 2.0 && < 2.2