packages feed

apiary-cookie 1.1.0 → 1.2.0

raw patch · 2 files changed

+35/−23 lines, 2 filesdep +waidep ~apiaryPVP ok

version bump matches the API change (PVP)

Dependencies added: wai

Dependency ranges changed: apiary

API changes (from Hackage documentation)

+ Web.Apiary.Cookie: getCookies :: Monad m => ActionT exts prms m [(ByteString, ByteString)]

Files

apiary-cookie.cabal view
@@ -1,5 +1,5 @@ name:                apiary-cookie-version:             1.1.0+version:             1.2.0 synopsis:            Cookie support for apiary web framework. description:   example: <https://github.com/philopon/apiary/blob/master/examples/auth.hs>@@ -19,7 +19,8 @@ library   exposed-modules:     Web.Apiary.Cookie   build-depends:       base               >=4.6  && <4.8-                     , apiary             >=1.1  && <1.2+                     , apiary             >=1.1  && <1.3+                     , wai                >=3.0  && <3.1                       , bytestring         >=0.10 && <0.11                      , cookie             >=0.4  && <0.5
src/Web/Apiary/Cookie.hs view
@@ -1,10 +1,5 @@-{-# LANGUAGE Rank2Types #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE ImplicitParams #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeFamilies #-} @@ -12,6 +7,8 @@     ( -- * setter       setCookie     , deleteCookie+    -- * getter+    , getCookies     -- * filter     , cookie     , cookie'@@ -20,25 +17,32 @@     , module Web.Cookie     ) where -import Web.Apiary.Wai-import Web.Apiary+import Control.Applicative((<$>))++import qualified Network.Wai as Wai+ import Web.Cookie (SetCookie(..)) import qualified Web.Cookie as Cookie -import Data.Apiary.Param+import Control.Monad.Apiary(ApiaryT)+import Control.Monad.Apiary.Action(ActionT, getHeaders, addHeader) import Control.Monad.Apiary.Filter -import Data.Maybe-import Data.Time-import Data.Monoid-import Data.Apiary.Compat-import Blaze.ByteString.Builder-import Text.Blaze.Html+import Data.Apiary.Compat(KnownSymbol, symbolVal)+import Data.Apiary.Dict(NotMember)+import Data.Apiary.Param(Strategy(..))++import Data.Maybe(mapMaybe)+import Data.Time(UTCTime(UTCTime), Day(ModifiedJulianDay))+import Data.Monoid((<>))+import Blaze.ByteString.Builder(toByteString)+import Text.Blaze.Html(toHtml) import qualified Data.ByteString as S import qualified Data.ByteString.Char8 as SC  cond :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b cond p t f a = if p a then t a else f a+{-# INLINE cond #-}  -- | cookie filter. since 0.5.1.0. --@@ -60,18 +64,25 @@ cookie k p = function (DocPrecondition $ toHtml (symbolVal k) <> " cookie required") $ \l r ->     strategy p k (map (Just . snd) . filter ((SC.pack (symbolVal k) ==) . fst) $ cookie' r) l -cookie' :: Request -> [(S.ByteString, S.ByteString)]+cookie' :: Wai.Request -> [(S.ByteString, S.ByteString)] cookie' =      concatMap Cookie.parseCookies .     mapMaybe (cond (("cookie" ==) . fst) (Just . snd) (const Nothing)) .-    requestHeaders+    Wai.requestHeaders +getCookies :: Monad m => ActionT exts prms m [(S.ByteString, S.ByteString)]+getCookies =+    concatMap (Cookie.parseCookies . snd) .+    filter (("cookie" ==) . fst) <$>+    getHeaders+ -- | delete cookie. since 0.6.1.0. deleteCookie :: Monad m => S.ByteString -> ActionT exts prms m ()-deleteCookie k = setCookie def { setCookieName    = k -                               , setCookieExpires = Just $ UTCTime (ModifiedJulianDay 0) 0-                               , setCookieMaxAge  = Just 0-                               }+deleteCookie k = setCookie Cookie.def+    { setCookieName    = k +    , setCookieExpires = Just $ UTCTime (ModifiedJulianDay 0) 0+    , setCookieMaxAge  = Just 0+    }  -- | set raw cookie header. setCookie :: Monad m => SetCookie -> ActionT exts prms m ()