module Network.AWS.AutoScaling.ExitStandby
    (
    
      ExitStandby
    
    , exitStandby
    
    , es1AutoScalingGroupName
    , es1InstanceIds
    
    , ExitStandbyResponse
    
    , exitStandbyResponse
    
    , esrActivities
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.AutoScaling.Types
import qualified GHC.Exts
data ExitStandby = ExitStandby
    { _es1AutoScalingGroupName :: Text
    , _es1InstanceIds          :: List "member" Text
    } deriving (Eq, Ord, Show)
exitStandby :: Text 
            -> ExitStandby
exitStandby p1 = ExitStandby
    { _es1AutoScalingGroupName = p1
    , _es1InstanceIds          = mempty
    }
es1AutoScalingGroupName :: Lens' ExitStandby Text
es1AutoScalingGroupName =
    lens _es1AutoScalingGroupName (\s a -> s { _es1AutoScalingGroupName = a })
es1InstanceIds :: Lens' ExitStandby [Text]
es1InstanceIds = lens _es1InstanceIds (\s a -> s { _es1InstanceIds = a }) . _List
newtype ExitStandbyResponse = ExitStandbyResponse
    { _esrActivities :: List "member" Activity
    } deriving (Eq, Show, Monoid, Semigroup)
instance GHC.Exts.IsList ExitStandbyResponse where
    type Item ExitStandbyResponse = Activity
    fromList = ExitStandbyResponse . GHC.Exts.fromList
    toList   = GHC.Exts.toList . _esrActivities
exitStandbyResponse :: ExitStandbyResponse
exitStandbyResponse = ExitStandbyResponse
    { _esrActivities = mempty
    }
esrActivities :: Lens' ExitStandbyResponse [Activity]
esrActivities = lens _esrActivities (\s a -> s { _esrActivities = a }) . _List
instance ToPath ExitStandby where
    toPath = const "/"
instance ToQuery ExitStandby where
    toQuery ExitStandby{..} = mconcat
        [ "AutoScalingGroupName" =? _es1AutoScalingGroupName
        , "InstanceIds"          =? _es1InstanceIds
        ]
instance ToHeaders ExitStandby
instance AWSRequest ExitStandby where
    type Sv ExitStandby = AutoScaling
    type Rs ExitStandby = ExitStandbyResponse
    request  = post "ExitStandby"
    response = xmlResponse
instance FromXML ExitStandbyResponse where
    parseXML = withElement "ExitStandbyResult" $ \x -> ExitStandbyResponse
        <$> x .@? "Activities" .!@ mempty