From 2aef3e3993a6809735ee4bbe74cbc09eaeb85c1d Mon Sep 17 00:00:00 2001 From: Riley Evans Date: Sun, 13 Feb 2022 00:27:08 +0000 Subject: [PATCH] Update OAuth dependency & add codeSwap --- src/Bank/TrueLayer/Auth.hs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Bank/TrueLayer/Auth.hs b/src/Bank/TrueLayer/Auth.hs index 6f82e37..2c1c8b7 100644 --- a/src/Bank/TrueLayer/Auth.hs +++ b/src/Bank/TrueLayer/Auth.hs @@ -2,29 +2,37 @@ {-# LANGUAGE QuasiQuotes #-} module Bank.TrueLayer.Auth ( genAccessToken + , swapCode ) where import Network.HTTP.Client (newManager) import Network.HTTP.Client.TLS (tlsManagerSettings) import Network.OAuth.OAuth2 - (ExchangeToken, OAuth2 (..), OAuth2Token, RefreshToken, refreshAccessToken) + (ExchangeToken, OAuth2 (..), OAuth2Token, RefreshToken, fetchAccessToken, refreshAccessToken) import URI.ByteString.QQ (uri) oauthSettings :: OAuth2 oauthSettings = OAuth2 - { oauthClientId = "bankmanager-772883" - , oauthClientSecret = Just "" - , oauthOAuthorizeEndpoint = [uri|https://auth.truelayer.com/connect/token|] - , oauthAccessTokenEndpoint = [uri|https://auth.truelayer.com/connect/token|] - , oauthCallback = Just [uri|https://console.truelayer.com/redirect-page|] + { oauth2ClientId = "bankmanager-772883" + , oauth2ClientSecret = Just "" + , oauth2AuthorizeEndpoint = [uri|https://auth.truelayer.com/connect/token|] + , oauth2TokenEndpoint = [uri|https://auth.truelayer.com/connect/token|] + , oauth2RedirectUri = Just [uri|https://console.truelayer.com/redirect-page|] } genAccessToken :: RefreshToken -> IO (Maybe OAuth2Token) genAccessToken refreshToken = do manager <- newManager tlsManagerSettings token <- refreshAccessToken manager oauthSettings refreshToken - return ( - case token of - Left err -> Nothing - Right token -> Just token - ) + return $ case token of + Left err -> Nothing + Right token -> Just token + + +swapCode :: ExchangeToken -> IO (Maybe OAuth2Token) +swapCode code = do + manager <- newManager tlsManagerSettings + token <- fetchAccessToken manager oauthSettings code + return $ case token of + Left err -> Nothing + Right token -> Just token