    module Aws.S3.Commands.DeleteObject
    where

    import           Aws.Core
    import           Aws.S3.Core
    import           Data.ByteString.Char8      ({- IsString -})
    import qualified Data.Text                  as T
    import qualified Data.Text.Encoding         as T

    data DeleteObject = DeleteObject {
      DeleteObject -> Text
    doObjectName :: T.Text,
      DeleteObject -> Text
    doBucket :: Bucket
    } deriving (Int -> DeleteObject -> ShowS
    [DeleteObject] -> ShowS
    DeleteObject -> String
    (Int -> DeleteObject -> ShowS)
    -> (DeleteObject -> String)
    -> ([DeleteObject] -> ShowS)
    -> Show DeleteObject
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> DeleteObject -> ShowS
    showsPrec :: Int -> DeleteObject -> ShowS
    $cshow :: DeleteObject -> String
    show :: DeleteObject -> String
    $cshowList :: [DeleteObject] -> ShowS
    showList :: [DeleteObject] -> ShowS
    Show)

    data DeleteObjectResponse = DeleteObjectResponse{
    } deriving (Int -> DeleteObjectResponse -> ShowS
    [DeleteObjectResponse] -> ShowS
    DeleteObjectResponse -> String
    (Int -> DeleteObjectResponse -> ShowS)
    -> (DeleteObjectResponse -> String)
    -> ([DeleteObjectResponse] -> ShowS)
    -> Show DeleteObjectResponse
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> DeleteObjectResponse -> ShowS
    showsPrec :: Int -> DeleteObjectResponse -> ShowS
    $cshow :: DeleteObjectResponse -> String
    show :: DeleteObjectResponse -> String
    $cshowList :: [DeleteObjectResponse] -> ShowS
    showList :: [DeleteObjectResponse] -> ShowS
    Show)

    -- | ServiceConfiguration: 'S3Configuration'
    instance SignQuery DeleteObject where
        type ServiceConfiguration DeleteObject = S3Configuration
        signQuery :: forall queryType.
    DeleteObject
    -> ServiceConfiguration DeleteObject queryType
    -> SignatureData
    -> SignedQuery
    signQuery DeleteObject {Text
    doObjectName :: DeleteObject -> Text
    doBucket :: DeleteObject -> Text
    doObjectName :: Text
    doBucket :: Text
    ..} = S3Query
    -> S3Configuration queryType -> SignatureData -> SignedQuery
    forall qt.
    S3Query -> S3Configuration qt -> SignatureData -> SignedQuery
    s3SignQuery S3Query {
                                     s3QMethod :: Method
    s3QMethod = Method
    Delete
                                   , s3QBucket :: Maybe ByteString
    s3QBucket = ByteString -> Maybe ByteString
    forall a. a -> Maybe a
    Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
    forall a b. (a -> b) -> a -> b
    $ Text -> ByteString
    T.encodeUtf8 Text
    doBucket
                                   , s3QSubresources :: Query
    s3QSubresources = []
                                   , s3QQuery :: Query
    s3QQuery = []
                                   , s3QContentType :: Maybe ByteString
    s3QContentType = Maybe ByteString
    forall a. Maybe a
    Nothing
                                   , s3QContentMd5 :: Maybe (Digest MD5)
    s3QContentMd5 = Maybe (Digest MD5)
    forall a. Maybe a
    Nothing
                                   , s3QAmzHeaders :: RequestHeaders
    s3QAmzHeaders = []
                                   , s3QOtherHeaders :: RequestHeaders
    s3QOtherHeaders = []
                                   , s3QRequestBody :: Maybe RequestBody
    s3QRequestBody = Maybe RequestBody
    forall a. Maybe a
    Nothing
                                   , s3QObject :: Maybe ByteString
    s3QObject = ByteString -> Maybe ByteString
    forall a. a -> Maybe a
    Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
    forall a b. (a -> b) -> a -> b
    $ Text -> ByteString
    T.encodeUtf8 Text
    doObjectName
                                   }

    instance ResponseConsumer DeleteObject DeleteObjectResponse where
        type ResponseMetadata DeleteObjectResponse = S3Metadata
        responseConsumer :: Request
    -> DeleteObject
    -> IORef (ResponseMetadata DeleteObjectResponse)
    -> HTTPResponseConsumer DeleteObjectResponse
    responseConsumer Request
    _ DeleteObject
    _
            = HTTPResponseConsumer DeleteObjectResponse
    -> IORef S3Metadata -> HTTPResponseConsumer DeleteObjectResponse
    forall a.
    HTTPResponseConsumer a
    -> IORef S3Metadata -> HTTPResponseConsumer a
    s3ResponseConsumer (HTTPResponseConsumer DeleteObjectResponse
     -> IORef S3Metadata -> HTTPResponseConsumer DeleteObjectResponse)
    -> HTTPResponseConsumer DeleteObjectResponse
    -> IORef S3Metadata
    -> HTTPResponseConsumer DeleteObjectResponse
    forall a b. (a -> b) -> a -> b
    $ \Response (ConduitM () ByteString (ResourceT IO) ())
    _ -> DeleteObjectResponse -> ResourceT IO DeleteObjectResponse
    forall a. a -> ResourceT IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return DeleteObjectResponse
    DeleteObjectResponse

    instance Transaction DeleteObject DeleteObjectResponse

    instance AsMemoryResponse DeleteObjectResponse where
        type MemoryResponse DeleteObjectResponse = DeleteObjectResponse
        loadToMemory :: DeleteObjectResponse
    -> ResourceT IO (MemoryResponse DeleteObjectResponse)
    loadToMemory = DeleteObjectResponse
    -> ResourceT IO (MemoryResponse DeleteObjectResponse)
    DeleteObjectResponse -> ResourceT IO DeleteObjectResponse
    forall a. a -> ResourceT IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return