packages feed

apiary-cookie 0.13.1.1 → 0.16.0

raw patch · 3 files changed

+74/−77 lines, 3 filesdep ~apiaryPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: apiary

API changes (from Hackage documentation)

- Web.Apiary.Cookie.Internal: cond :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b
- Web.Apiary.Cookie.Internal: cookie :: (Strategy w, Query a, Functor n, Monad n) => ByteString -> proxy (w a) -> ApiaryT (SNext w as a) n m b -> ApiaryT as n m b
- Web.Apiary.Cookie.Internal: cookie' :: Request -> [(ByteString, ByteString)]
- Web.Apiary.Cookie.Internal: deleteCookie :: Monad m => ByteString -> ActionT m ()
- Web.Apiary.Cookie.Internal: setCookie :: Monad m => SetCookie -> ActionT m ()
+ Web.Apiary.Cookie: cookie' :: Request -> [(ByteString, ByteString)]
- Web.Apiary.Cookie: cookie :: (Strategy w, Query a, Functor n, Monad n) => ByteString -> proxy (w a) -> ApiaryT (SNext w as a) n m b -> ApiaryT as n m b
+ Web.Apiary.Cookie: cookie :: (Strategy w, Query p, Monad actM) => ByteString -> w p -> ApiaryT exts (SNext w prms p) actM m () -> ApiaryT exts prms actM m ()
- Web.Apiary.Cookie: deleteCookie :: Monad m => ByteString -> ActionT m ()
+ Web.Apiary.Cookie: deleteCookie :: Monad m => ByteString -> ActionT exts m ()
- Web.Apiary.Cookie: setCookie :: Monad m => SetCookie -> ActionT m ()
+ Web.Apiary.Cookie: setCookie :: Monad m => SetCookie -> ActionT exts m ()

Files

apiary-cookie.cabal view
@@ -1,5 +1,5 @@ name:                apiary-cookie-version:             0.13.1.1+version:             0.16.0 synopsis:            Cookie support for apiary web framework. description:   example: <https://github.com/philopon/apiary/blob/master/examples/auth.hs>@@ -18,15 +18,14 @@  library   exposed-modules:     Web.Apiary.Cookie-                       Web.Apiary.Cookie.Internal-  other-extensions:    -  build-depends:       base               >=4.6   && <4.8-                     , bytestring         >=0.10  && <0.11-                     , apiary             >=0.13  && <0.16-                     , cookie             >=0.4   && <0.5-                     , blaze-builder      >=0.3   && <0.4-                     , time               >=1.4   && <1.5-                     , blaze-html         >=0.7   && <0.8+  build-depends:       base               >=4.6  && <4.8+                     , apiary             >=0.16 && <0.17++                     , bytestring         >=0.10 && <0.11+                     , cookie             >=0.4  && <0.5+                     , time               >=1.4  && <1.5+                     , blaze-builder      >=0.3  && <0.4+                     , blaze-html         >=0.7  && <0.8    hs-source-dirs:      src   ghc-options:         -O2 -Wall
src/Web/Apiary/Cookie.hs view
@@ -1,3 +1,12 @@+{-# LANGUAGE Rank2Types #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE ImplicitParams #-}+{-# LANGUAGE ConstraintKinds #-}+ module Web.Apiary.Cookie      (      -- * setter@@ -5,10 +14,65 @@     , deleteCookie     -- * filter     , cookie+    , cookie'     -- * Reexport     -- | SetCookie(..)     , module Web.Cookie     ) where +import Web.Apiary.Wai+import Web.Apiary import Web.Cookie (SetCookie(..))-import Web.Apiary.Cookie.Internal+import qualified Web.Cookie as Cookie++import Control.Monad.Apiary.Filter.Internal+import Control.Monad.Apiary.Filter.Internal.Strategy++import Data.Maybe+import Data.Time+import Data.Monoid+import Data.Apiary.Document+import Blaze.ByteString.Builder+import Text.Blaze.Html+import qualified Data.ByteString as S++cond :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b+cond p t f a = if p a then t a else f a++-- | cookie filter. since 0.5.1.0.+--+-- can use like 'query' function.+--+-- example:+--+-- @+-- cookie "foo" (pFirst pInt)  -- get first Int parameter from foo.+-- cookie "bar" (pOption pDouble)  -- get first Double parameter from bar, allows no cookie.+-- cookie "baz" (pMany (pMaybe pString))  -- get zero or more baz cookies. allows cookie decrypt failure.+-- cookie "baz" (Proxy :: Proxy (LimitSome [int|100|] ByteString)) -- get raw cookies up to 100 entries.+-- @+cookie :: (Strategy w, Query p, Monad actM)+       => S.ByteString+       -> w p+       -> ApiaryT exts (SNext w prms p) actM m ()+       -> ApiaryT exts prms actM m ()+cookie k p = function (DocPrecondition $ toHtml (show k) <> " cookie required") $ \l r ->+    readStrategy (readQuery . Just) ((k ==) . fst) p (cookie' r) l++cookie' :: Request -> [(S.ByteString, S.ByteString)]+cookie' = +    concatMap Cookie.parseCookies .+    mapMaybe (cond (("cookie" ==) . fst) (Just . snd) (const Nothing)) .+    requestHeaders++-- | delete cookie. since 0.6.1.0.+deleteCookie :: Monad m => S.ByteString -> ActionT exts m ()+deleteCookie k = setCookie def { setCookieName    = k +                               , setCookieExpires = Just $ UTCTime (ModifiedJulianDay 0) 0+                               , setCookieMaxAge  = Just 0+                               }++-- | set raw cookie header.+setCookie :: Monad m => SetCookie -> ActionT exts m ()+setCookie =+    addHeader "set-cookie" . toByteString . Cookie.renderSetCookie
− src/Web/Apiary/Cookie/Internal.hs
@@ -1,66 +0,0 @@-{-# LANGUAGE Rank2Types #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE ImplicitParams #-}-{-# LANGUAGE ConstraintKinds #-}--module Web.Apiary.Cookie.Internal where--import Web.Apiary.Wai-import Web.Apiary-import Web.Cookie--import Control.Monad.Apiary.Filter.Internal-import Control.Monad.Apiary.Filter.Internal.Strategy--import Data.Maybe-import Data.Time-import Data.Monoid-import Data.Apiary.Document-import Blaze.ByteString.Builder-import Text.Blaze.Html-import qualified Data.ByteString as S--cond :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b-cond p t f a = if p a then t a else f a---- | cookie filter. since 0.5.1.0.------ can use like 'query' function.------ example:------ @--- cookie "foo" (pFirst pInt)  -- get first Int parameter from foo.--- cookie "bar" (pOption pDouble)  -- get first Double parameter from bar, allows no cookie.--- cookie "baz" (pMany (pMaybe pString))  -- get zero or more baz cookies. allows cookie decrypt failure.--- cookie "baz" (Proxy :: Proxy (LimitSome [int|100|] ByteString)) -- get raw cookies up to 100 entries.--- @-cookie :: (Strategy w, Query a, Functor n, Monad n)-       => S.ByteString-       -> proxy (w a)-       -> ApiaryT (SNext w as a) n m b-       -> ApiaryT as n m b-cookie k p = function (DocPrecondition $ toHtml (show k) <> " cookie required") $ \l r ->-    readStrategy (readQuery . Just) ((k ==) . fst) p (cookie' r) l--cookie' :: Request -> [(S.ByteString, S.ByteString)]-cookie' = -    concatMap parseCookies .-    mapMaybe (cond (("cookie" ==) . fst) (Just . snd) (const Nothing)) .-    requestHeaders---- | delete cookie. since 0.6.1.0.-deleteCookie :: Monad m => S.ByteString -> ActionT m ()-deleteCookie k = setCookie def { setCookieName    = k -                               , setCookieExpires = Just $ UTCTime (ModifiedJulianDay 0) 0-                               , setCookieMaxAge  = Just 0-                               }---- | set raw cookie header.-setCookie :: Monad m => SetCookie -> ActionT m ()-setCookie =-    addHeader "set-cookie" . toByteString . renderSetCookie