packages feed

gogol-1.0.0.0: src/Gogol/Auth/TokenFile.hs

{-# LANGUAGE OverloadedStrings #-}

-- |
-- Module      : Gogol.Auth.TokenFile
-- Copyright   : (c) 2015-2022 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability   : provisional
-- Portability : non-portable (GHC extensions)
module Gogol.Auth.TokenFile where

import Control.Monad.IO.Class (MonadIO (liftIO))
import Data.ByteString qualified as ByteString
import Data.Text qualified as Text
import Data.Text.Encoding qualified as Text.Encoding
import Data.Time qualified as Time
import Gogol.Internal.Auth
import Gogol.Types (AccessToken (..))

serviceAccountTokenFile :: FilePath
serviceAccountTokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token"

readTokenFile :: (MonadIO m) => FilePath -> m (OAuthToken s)
readTokenFile path =
  liftIO $ do
    access <- Text.strip . Text.Encoding.decodeUtf8 <$> ByteString.readFile path
    expiry <- Time.addUTCTime 60 <$> Time.getCurrentTime

    pure
      OAuthToken
        { _tokenAccess = AccessToken access,
          _tokenRefresh = Nothing,
          _tokenExpiry = expiry
        }