{-# LANGUAGE FlexibleContexts, RankNTypes #-} module AWS.ELB ( -- * ELB Environment ELB , runELB , runELBwithManager , setRegion , apiVersion -- * LoadBalancer , module AWS.ELB.LoadBalancer ) where import Data.Text (Text) import Data.Conduit import Control.Monad.IO.Class (MonadIO) import qualified Control.Monad.State as State import qualified Network.HTTP.Conduit as HTTP import Data.Monoid import AWS.Class import AWS.Lib.Query (textToBS) import AWS import AWS.ELB.Internal import AWS.ELB.LoadBalancer initialELBContext :: HTTP.Manager -> AWSContext initialELBContext mgr = AWSContext { manager = mgr , endpoint = "elasticloadbalancing.amazonaws.com" , lastRequestId = Nothing } runELB :: MonadIO m => Credential -> ELB m a -> m a runELB = runAWS initialELBContext runELBwithManager :: Monad m => HTTP.Manager -> Credential -> ELB m a -> m a runELBwithManager mgr = runAWSwithManager mgr initialELBContext setRegion :: (MonadBaseControl IO m, MonadResource m) => Text -> ELB m () setRegion region = do ctx <- State.get State.put ctx { endpoint = "elasticloadbalancing." <> textToBS region <> ".amazonaws.com" }