vault-trans-0.1.0: src/lib/Network/VaultTool/Trans.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.VaultTool.Trans
( VaultT (..)
, runVaultT
, -- * Types
VaultConnectionInfo (..)
) where
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Class (MonadTrans)
import Control.Monad.Trans.Reader (ReaderT (..))
import Network.VaultTool (VaultConnection, VaultSecretPath (..))
newtype VaultT m a = VaultT { unVaultT :: ReaderT VaultConnectionInfo m a }
deriving (Functor, Applicative, Monad, MonadTrans, MonadIO)
data VaultConnectionInfo = VaultConnectionInfo
{ conn :: VaultConnection
, secretPath :: VaultSecretPath
}
runVaultT :: MonadIO m => VaultConnection -> VaultSecretPath -> VaultT m a -> m a
runVaultT vc vsp = flip runReaderT (VaultConnectionInfo vc vsp) . unVaultT