{-# LANGUAGE TemplateHaskell, QuasiQuotes #-} module AWS.Credential ( Credential(..) , AccessKey , SecretAccessKey , loadCredential , loadCredentialFromFile , newCredential ) where import Data.ByteString (ByteString) import qualified Data.ByteString as BS import Text.Config import Text.Parsec mkConfig "configParser" [config| Credential accessKey ByteString secretAccessKey ByteString |] type AccessKey = ByteString type SecretAccessKey = ByteString -- | Load credential from \"./aws.config\". loadCredential :: IO Credential loadCredential = loadCredentialFromFile "aws.config" -- | Create new credential. newCredential :: AccessKey -> SecretAccessKey -> Credential newCredential key secret = Credential key secret -- | Load credential from file. loadCredentialFromFile :: FilePath -> IO Credential loadCredentialFromFile path = do str <- BS.readFile path case parse configParser "" str of Left err -> fail $ show err Right conf -> return conf