module Network.AWS.ElasticBeanstalk.DeleteApplicationVersion
    (
    
      DeleteApplicationVersion
    
    , deleteApplicationVersion
    
    , davApplicationName
    , davDeleteSourceBundle
    , davVersionLabel
    
    , DeleteApplicationVersionResponse
    
    , deleteApplicationVersionResponse
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.ElasticBeanstalk.Types
import qualified GHC.Exts
data DeleteApplicationVersion = DeleteApplicationVersion
    { _davApplicationName    :: Text
    , _davDeleteSourceBundle :: Maybe Bool
    , _davVersionLabel       :: Text
    } deriving (Eq, Ord, Show)
deleteApplicationVersion :: Text 
                         -> Text 
                         -> DeleteApplicationVersion
deleteApplicationVersion p1 p2 = DeleteApplicationVersion
    { _davApplicationName    = p1
    , _davVersionLabel       = p2
    , _davDeleteSourceBundle = Nothing
    }
davApplicationName :: Lens' DeleteApplicationVersion Text
davApplicationName =
    lens _davApplicationName (\s a -> s { _davApplicationName = a })
davDeleteSourceBundle :: Lens' DeleteApplicationVersion (Maybe Bool)
davDeleteSourceBundle =
    lens _davDeleteSourceBundle (\s a -> s { _davDeleteSourceBundle = a })
davVersionLabel :: Lens' DeleteApplicationVersion Text
davVersionLabel = lens _davVersionLabel (\s a -> s { _davVersionLabel = a })
data DeleteApplicationVersionResponse = DeleteApplicationVersionResponse
    deriving (Eq, Ord, Show, Generic)
deleteApplicationVersionResponse :: DeleteApplicationVersionResponse
deleteApplicationVersionResponse = DeleteApplicationVersionResponse
instance ToPath DeleteApplicationVersion where
    toPath = const "/"
instance ToQuery DeleteApplicationVersion where
    toQuery DeleteApplicationVersion{..} = mconcat
        [ "ApplicationName"    =? _davApplicationName
        , "DeleteSourceBundle" =? _davDeleteSourceBundle
        , "VersionLabel"       =? _davVersionLabel
        ]
instance ToHeaders DeleteApplicationVersion
instance AWSRequest DeleteApplicationVersion where
    type Sv DeleteApplicationVersion = ElasticBeanstalk
    type Rs DeleteApplicationVersion = DeleteApplicationVersionResponse
    request  = post "DeleteApplicationVersion"
    response = nullResponse DeleteApplicationVersionResponse