apiary-session 1.2.0 → 1.3.0
raw patch · 2 files changed
+14/−16 lines, 2 filesdep +web-routingdep ~apiaryPVP ok
version bump matches the API change (PVP)
Dependencies added: web-routing
Dependency ranges changed: apiary
API changes (from Hackage documentation)
- Web.Apiary.Session: session :: (Has (Session sess actM) exts, Monad actM, NotMember "session" kvs) => proxy sess -> ApiaryT exts (("session" := sess) : kvs) actM m () -> ApiaryT exts kvs actM m ()
+ Web.Apiary.Session: session :: (Has (Session sess actM) exts, Monad actM, "session" </ kvs) => proxy sess -> Filter exts actM m kvs (("session" := sess) : kvs)
- Web.Apiary.Session: session' :: (Has (Session sess actM) exts, KnownSymbol key, Monad actM, NotMember key kvs) => kProxy key -> sProxy sess -> ApiaryT exts ((key := sess) : kvs) actM m () -> ApiaryT exts kvs actM m ()
+ Web.Apiary.Session: session' :: (Has (Session sess actM) exts, KnownSymbol key, Monad actM, key </ kvs) => kProxy key -> sProxy sess -> Filter exts actM m kvs ((key := sess) : kvs)
Files
- apiary-session.cabal +4/−3
- src/Web/Apiary/Session.hs +10/−13
apiary-session.cabal view
@@ -1,5 +1,5 @@ name: apiary-session-version: 1.2.0+version: 1.3.0 synopsis: session support for apiary web framework. description: license: MIT@@ -8,7 +8,7 @@ maintainer: HirotomoMoriwaki<philopon.dependence@gmail.com> Homepage: https://github.com/philopon/apiary Bug-reports: https://github.com/philopon/apiary/issues-copyright: (c) 2014 Hirotomo Moriwaki+copyright: (c) 2014-2015 Hirotomo Moriwaki category: Web build-type: Simple stability: experimental@@ -20,8 +20,9 @@ Web.Apiary.Session.Internal other-modules: build-depends: base >=4.6 && <4.8- , apiary >=1.2 && <1.3+ , apiary >=1.3 && <1.4 , wai >=3.0 && <3.1+ , web-routing hs-source-dirs: src ghc-options: -O2 -Wall default-language: Haskell2010
src/Web/Apiary/Session.hs view
@@ -16,16 +16,16 @@ import Control.Monad(mzero) -import Control.Monad.Apiary(ApiaryT)-import Control.Monad.Apiary.Action(ActionT, getParams)-import Control.Monad.Apiary.Filter(focus, Doc(DocPrecondition))+import Control.Monad.Apiary.Action(ActionT)+import Control.Monad.Apiary.Filter(focus, Filter, Doc(DocPrecondition)) import Web.Apiary.Session.Internal (Session(Session), backendGet, backendSet, backendDelete) import Data.Apiary.Extension(Has, getExt) import Data.Apiary.Compat(Proxy(Proxy), KnownSymbol)-import qualified Data.Apiary.Dict as Dict+import qualified Network.Routing.Dict as Dict+import qualified Network.Routing as R -- | get session provided type. getSession :: (Has (Session sess m) exts, Monad m) => proxy sess -> ActionT exts prms m (Maybe sess)@@ -47,23 +47,20 @@ backendDelete b -- | filter by has session or not.-session' :: (Has (Session sess actM) exts, KnownSymbol key, Monad actM, Dict.NotMember key kvs)+session' :: (Has (Session sess actM) exts, KnownSymbol key, Monad actM, key Dict.</ kvs) => kProxy key -> sProxy sess- -> ApiaryT exts (key Dict.:= sess ': kvs) actM m ()- -> ApiaryT exts kvs actM m ()-session' ky p = focus (DocPrecondition "session cookie required.") $ do- dict <- getParams+ -> Filter exts actM m kvs (key Dict.:= sess ': kvs)+session' ky p = focus (DocPrecondition "session cookie required.") Nothing $ R.raw "session" $ \d t -> getSession p >>= \case Nothing -> mzero- Just s -> return $ Dict.insert ky s dict+ Just s -> return (Dict.add ky s d, t) -- | filter by has session or not. use \"session\" dict key. -- -- @ -- session = session' (Proxy :: Proxy "session") -- @-session :: (Has (Session sess actM) exts, Monad actM, Dict.NotMember "session" kvs)+session :: (Has (Session sess actM) exts, Monad actM, "session" Dict.</ kvs) => proxy sess- -> ApiaryT exts ("session" Dict.:= sess ': kvs) actM m ()- -> ApiaryT exts kvs actM m ()+ -> Filter exts actM m kvs ("session" Dict.:= sess ': kvs) session = session' (Proxy :: Proxy "session")