packages feed

aws-transcribe-ws-0.0.1.0: src/AWS/Credentials.hs

{-# LANGUAGE OverloadedStrings #-}

module AWS.Credentials (Credentials, accessKey, secretKey, newCredentials, lookupCredentials) where

import Data.Aeson (FromJSON (..), Value (..), (.:))
import qualified Data.Text as T
import System.Environment (lookupEnv)

{- | AWS Security credentials comprising of an access key ID and a secret key.
 Temporary security tokens are not supported
-}
data Credentials = MkCredentials
    { accessKey :: !T.Text
    , secretKey :: !T.Text
    }

newCredentials ::
    -- | Access Key
    T.Text ->
    -- | Secret Key
    T.Text ->
    Credentials
newCredentials = MkCredentials

{- | Use the provided environment variables to create
 `Credentials`
-}
lookupCredentials ::
    -- | Access Key environment variable
    String ->
    -- | Secret Key environment variable
    String ->
    IO (Maybe Credentials)
lookupCredentials akVar skVar = do
    ak <- fmap T.pack <$> lookupEnv akVar
    sk <- fmap T.pack <$> lookupEnv skVar
    pure $ MkCredentials <$> ak <*> sk

instance FromJSON Credentials where
    parseJSON (Object o) =
        MkCredentials
            <$> o .: "access-key"
            <*> o .: "secret-key"
    parseJSON _ = fail "Not a Credentials"