    module Aws.S3.Commands.DeleteBucket
    where

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

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

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

    -- | ServiceConfiguration: 'S3Configuration'
    instance SignQuery DeleteBucket where
        type ServiceConfiguration DeleteBucket = S3Configuration
        signQuery :: forall queryType.
    DeleteBucket
    -> ServiceConfiguration DeleteBucket queryType
    -> SignatureData
    -> SignedQuery
    signQuery DeleteBucket {Bucket
    dbBucket :: DeleteBucket -> Bucket
    dbBucket :: Bucket
    ..} = 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
    $ Bucket -> ByteString
    T.encodeUtf8 Bucket
    dbBucket
                                   , 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 = Maybe ByteString
    forall a. Maybe a
    Nothing
                                   }

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

    instance Transaction DeleteBucket DeleteBucketResponse

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