amazonka-mtl-0.1.1.0: library/Control/Monad/AWS/Class.hs
module Control.Monad.AWS.Class
( MonadAWS (..)
)
where
import Amazonka.Prelude
import Amazonka (AuthEnv)
import Amazonka.Core (AWSRequest, AWSResponse, Error)
import Amazonka.Env (Env)
import qualified Amazonka.Waiter as Waiter
import Data.Typeable (Typeable)
-- | Typeclass for making AWS requests via "Amazonka"
--
-- For out-of-the-box transformers, see:
--
-- - "Control.Monad.AWS.EnvT"
-- - "Control.Monad.AWS.MockT"
--
-- For @DerivingVia@ usage, see:
--
-- - "Control.Monad.AWS.ViaReader"
-- - "Control.Monad.AWS.ViaMock"
class Monad m => MonadAWS m where
-- | The type-class version of 'Amazonka.sendEither'.
--
-- @since 0.1.0.0
sendEither
:: (AWSRequest a, Typeable a, Typeable (AWSResponse a))
=> a
-> m (Either Error (AWSResponse a))
-- | The type-class version of 'Amazonka.awaitEither'.
--
-- @since 0.1.0.0
awaitEither
:: (AWSRequest a, Typeable a)
=> Waiter.Wait a
-> a
-> m (Either Error Waiter.Accept)
-- | Supply the current credentials to the given action.
--
-- @since 0.1.1.0
withAuth :: (AuthEnv -> m a) -> m a
-- | Run the given action with a modified 'Env'
--
-- For instances that supply 'Env' via Reader, this should behave like
-- 'local'.
--
-- @since 0.1.1.0
localEnv :: (Env -> Env) -> m a -> m a