packages feed

ms-graph-api 0.3.0.0 → 0.4.0.0

raw patch · 3 files changed

+23/−6 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.OAuth2.Session: instance (GHC.Classes.Eq uid, GHC.Classes.Eq t) => GHC.Classes.Eq (Network.OAuth2.Session.TokensData uid t)
+ Network.OAuth2.Session: instance (GHC.Show.Show uid, GHC.Show.Show t) => GHC.Show.Show (Network.OAuth2.Session.TokensData uid t)
+ Network.OAuth2.Session: newTokens :: (MonadIO m, Ord uid) => m (Tokens uid t)
+ Network.OAuth2.Session: tokensToList :: MonadIO m => Tokens k a -> m [(k, a)]

Files

CHANGELOG.md view
@@ -8,4 +8,6 @@  ## Unreleased -## 0.1.0.0 - YYYY-MM-DD+## 0.4.0.0++Add Session.tokensToList and Session.newTokens
ms-graph-api.cabal view
@@ -1,5 +1,5 @@ name:                ms-graph-api-version:             0.3.0.0+version:             0.4.0.0 synopsis:            Microsoft Graph API description:         Bindings to the Microsoft Graph API homepage:            https://github.com/unfoldml/ms-graph-api
src/Network/OAuth2/Session.hs view
@@ -12,9 +12,11 @@   , replyEndpoint   -- * In-memory user session   , Tokens+  , newTokens   , UserSub   , lookupUser   , expireUser+  , tokensToList   -- * Scotty misc   , Scotty   , Action@@ -33,7 +35,7 @@ -- bytestring import qualified Data.ByteString.Lazy.Char8 as BSL -- containers-import qualified Data.Map as M (Map, insert, lookup, alter)+import qualified Data.Map as M (Map, insert, lookup, alter, toList) -- -- heaps -- import qualified Data.Heap as H (Heap, empty, null, size, insert, viewMin, deleteMin, Entry(..), ) -- hoauth2@@ -241,7 +243,7 @@     OASEJWTException jwtes -> unwords ["JWT error(s):", show jwtes]     OASENoOpenID -> unwords ["No ID token found. Ensure 'openid' scope appears in token request"] -+-- | Insert or update a token in the 'Tokens' object updateToken :: (MonadIO m, Ord uid) =>                Tokens uid OAuth2Token             -> uid -- ^ user id@@ -257,6 +259,7 @@     writeTVar ts (TokensData m')     pure ein +-- | Remove a user, i.e. they will have to authenticate once more expireUser :: (MonadIO m, Ord uid) =>               Tokens uid t            -> uid -- ^ user identifier e.g. @sub@@@ -264,6 +267,7 @@ expireUser ts uid =   atomically $ modifyTVar ts $ \td -> td{ thUsersMap = M.alter (const Nothing) uid (thUsersMap td)} +-- | Look up a user identifier and return their current token, if any lookupUser :: (MonadIO m, Ord uid) =>               Tokens uid t            -> uid -- ^ user identifier e.g. @sub@@@ -272,11 +276,22 @@   thp <- readTVar ts   pure $ M.lookup uid (thUsersMap thp) +-- | return a list representation of the 'Tokens' object+tokensToList :: MonadIO m => Tokens k a -> m [(k, a)]+tokensToList ts = atomically $ do+  (TokensData m) <- readTVar ts+  pure $ M.toList m++-- | Create an empty 'Tokens' object+newTokens :: (MonadIO m, Ord uid) => m (Tokens uid t)+newTokens = newTVarIO (TokensData mempty)+ -- | transactional token store type Tokens uid t = TVar (TokensData uid t)-data TokensData uid t = TokensData {+newtype TokensData uid t = TokensData {   thUsersMap :: M.Map uid t-                             }+  } deriving (Eq, Show)+   -- | Decode and validate ID token