{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.S3.DeleteObjects -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | This operation enables you to delete multiple objects from a bucket using a -- single HTTP request. You may specify up to 1000 keys. -- -- module Network.AWS.S3.DeleteObjects ( -- * Request DeleteObjects -- ** Request constructor , deleteObjects -- ** Request lenses , do1Bucket , do1Delete , do1MFA , do1RequestPayer -- * Response , DeleteObjectsResponse -- ** Response constructor , deleteObjectsResponse -- ** Response lenses , dor1Deleted , dor1Errors , dor1RequestCharged ) 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 , _do1RequestPayer :: Maybe RequestPayer } deriving (Eq, Read, Show) -- | 'DeleteObjects' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'do1Bucket' @::@ 'Text' -- -- * 'do1Delete' @::@ 'Delete' -- -- * 'do1MFA' @::@ 'Maybe' 'Text' -- -- * 'do1RequestPayer' @::@ 'Maybe' 'RequestPayer' -- deleteObjects :: Text -- ^ 'do1Bucket' -> Delete -- ^ 'do1Delete' -> DeleteObjects deleteObjects p1 p2 = DeleteObjects { _do1Bucket = p1 , _do1Delete = p2 , _do1MFA = Nothing , _do1RequestPayer = 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 }) -- | The concatenation of the authentication device's serial number, a space, and -- the value that is displayed on your authentication device. do1MFA :: Lens' DeleteObjects (Maybe Text) do1MFA = lens _do1MFA (\s a -> s { _do1MFA = a }) do1RequestPayer :: Lens' DeleteObjects (Maybe RequestPayer) do1RequestPayer = lens _do1RequestPayer (\s a -> s { _do1RequestPayer = a }) data DeleteObjectsResponse = DeleteObjectsResponse { _dor1Deleted :: List "Deleted" DeletedObject , _dor1Errors :: List "Error" S3ServiceError , _dor1RequestCharged :: Maybe RequestCharged } deriving (Eq, Read, Show) -- | 'DeleteObjectsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dor1Deleted' @::@ ['DeletedObject'] -- -- * 'dor1Errors' @::@ ['S3ServiceError'] -- -- * 'dor1RequestCharged' @::@ 'Maybe' 'RequestCharged' -- deleteObjectsResponse :: DeleteObjectsResponse deleteObjectsResponse = DeleteObjectsResponse { _dor1Deleted = mempty , _dor1RequestCharged = Nothing , _dor1Errors = mempty } dor1Deleted :: Lens' DeleteObjectsResponse [DeletedObject] dor1Deleted = lens _dor1Deleted (\s a -> s { _dor1Deleted = a }) . _List dor1Errors :: Lens' DeleteObjectsResponse [S3ServiceError] dor1Errors = lens _dor1Errors (\s a -> s { _dor1Errors = a }) . _List dor1RequestCharged :: Lens' DeleteObjectsResponse (Maybe RequestCharged) dor1RequestCharged = lens _dor1RequestCharged (\s a -> s { _dor1RequestCharged = a }) 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 , "x-amz-request-payer" =: _do1RequestPayer ] instance ToXMLRoot DeleteObjects where toXMLRoot = extractRoot ns . toXML . _do1Delete instance ToXML DeleteObjects instance AWSRequest DeleteObjects where type Sv DeleteObjects = S3 type Rs DeleteObjects = DeleteObjectsResponse request = post response = xmlHeaderResponse $ \h x -> DeleteObjectsResponse <$> x .@? "Deleted" .!@ mempty <*> x .@? "Error" .!@ mempty <*> h ~:? "x-amz-request-charged"