module Network.AWS.S3.DeleteObjects
    (
    
      DeleteObjects
    
    , deleteObjects
    
    , do1Bucket
    , do1Delete
    , do1MFA
    
    , DeleteObjectsResponse
    
    , deleteObjectsResponse
    
    , dorDeleted
    , dorErrors
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data DeleteObjects = DeleteObjects
    { _do1Bucket :: Text
    , _do1Delete :: Delete
    , _do1MFA    :: Maybe Text
    } deriving (Eq, Show)
deleteObjects :: Text 
              -> Delete 
              -> DeleteObjects
deleteObjects p1 p2 = DeleteObjects
    { _do1Bucket = p1
    , _do1Delete = p2
    , _do1MFA    = Nothing
    }
do1Bucket :: Lens' DeleteObjects Text
do1Bucket = lens _do1Bucket (\s a -> s { _do1Bucket = a })
do1Delete :: Lens' DeleteObjects Delete
do1Delete = lens _do1Delete (\s a -> s { _do1Delete = a })
do1MFA :: Lens' DeleteObjects (Maybe Text)
do1MFA = lens _do1MFA (\s a -> s { _do1MFA = a })
data DeleteObjectsResponse = DeleteObjectsResponse
    { _dorDeleted :: List "Deleted" DeletedObject
    , _dorErrors  :: List "Error" S3ServiceError
    } deriving (Eq, Show)
deleteObjectsResponse :: DeleteObjectsResponse
deleteObjectsResponse = DeleteObjectsResponse
    { _dorDeleted = mempty
    , _dorErrors  = mempty
    }
dorDeleted :: Lens' DeleteObjectsResponse [DeletedObject]
dorDeleted = lens _dorDeleted (\s a -> s { _dorDeleted = a }) . _List
dorErrors :: Lens' DeleteObjectsResponse [S3ServiceError]
dorErrors = lens _dorErrors (\s a -> s { _dorErrors = a }) . _List
instance ToPath DeleteObjects where
    toPath DeleteObjects{..} = mconcat
        [ "/"
        , toText _do1Bucket
        ]
instance ToQuery DeleteObjects where
    toQuery = const "delete"
instance ToHeaders DeleteObjects where
    toHeaders DeleteObjects{..} = mconcat
        [ "x-amz-mfa" =: _do1MFA
        ]
instance ToXMLRoot DeleteObjects where
    toXMLRoot DeleteObjects{..} = namespaced ns "DeleteObjects"
        [ "Delete" =@ _do1Delete
        ]
instance ToXML DeleteObjects
instance AWSRequest DeleteObjects where
    type Sv DeleteObjects = S3
    type Rs DeleteObjects = DeleteObjectsResponse
    request  = post
    response = xmlResponse
instance FromXML DeleteObjectsResponse where
    parseXML x = DeleteObjectsResponse
        <$> parseXML x
        <*> parseXML x