async-refresh-tokens alternatives and similar packages
Based on the "async" category.
Alternatively, view async-refresh-tokens alternatives based on common mentions on social networks and blogs.
-
async-refresh
Haskell library implementing the logic for periodic refreshing of data according to user-provided IO actions.
Do you think we are missing an alternative of async-refresh-tokens or a related project?
README
async-refresh-tokens

About
This is Haskell library built on top of the async-refresh package implementing the logic for refreshing of expiring access tokens.
Usage
Create new token types.
Make the tokens be instances of the
IsToken
type classes by defining thetokenScopes
method and (optionally)tokenName
(a human readable label for this token).Use
newEmptyTokenStore
to create a new token stores (token stores are basicallyTVar
s containing the tokens wrapped inEither SomeException
).Create a new configuration by adjusting
defaultTokenConf
using the functionstokenConfAddRequest
andtokenConfSetFactor
. The functiontokenConfAddRequest
expects values of typeRequestToken
— these values encapsulate the token stores together with a token-refreshing action.Use
newTokenRefresher
to initiate token refreshing for each registered token refreshing request.To use the current token, extract it from the
TVar
usingreadTVar
(and pattern matching onRight
).
Example
{-# LANGUAGE OverloadedStrings #-}
data TokenFoo
instance IsToken TokenFoo where
tokenScopes _ = ["foo.read", "foo.write"]
createTokenStoreFoo :: LoggingT IO (TokenStore TokenFoo)
createTokenStoreFoo = do
tokenFoo <- newEmptyTokenStore (Proxy :: Proxy TokenFoo)
let conf = defaultTokenConf
& tokenConfAddRequest (RequestToken tokenFoo actionFoo)
_ <- newTokenRefresher conf
return tokenFoo
where actionFoo :: (MonadIO m, IsToken t) => m (RefreshResult (Token t))
actionFoo =
return $ RefreshResult (Token "secret-foo-token") Nothing