content: module Aws.S3.Commands.DeleteObjectVersion
  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 DeleteObjectVersion = DeleteObjectVersion {
    dovObjectName :: T.Text,
    dovBucket :: Bucket,
    dovVersionId :: T.Text
  } deriving (Show)
  
  deleteObjectVersion :: Bucket -> T.Text -> T.Text -> DeleteObjectVersion
  deleteObjectVersion bucket object version
      = DeleteObjectVersion {
            dovObjectName = object
          , dovBucket = bucket
          , dovVersionId = version
          }
  
  data DeleteObjectVersionResponse = DeleteObjectVersionResponse {
  } deriving (Show)
  
  -- | ServiceConfiguration: 'S3Configuration'
  instance SignQuery DeleteObjectVersion where
      type ServiceConfiguration DeleteObjectVersion = S3Configuration
      signQuery DeleteObjectVersion {..} = s3SignQuery S3Query {
                                   s3QMethod = Delete
                                 , s3QBucket = Just $ T.encodeUtf8 dovBucket
                                 , s3QSubresources = [ ("versionId", Just $ T.encodeUtf8 dovVersionId) ]
                                 , s3QQuery = []
                                 , s3QContentType = Nothing
                                 , s3QContentMd5 = Nothing
                                 , s3QAmzHeaders = []
                                 , s3QOtherHeaders = []
                                 , s3QRequestBody = Nothing
                                 , s3QObject = Just $ T.encodeUtf8 dovObjectName
                                 }
  
  instance ResponseConsumer DeleteObjectVersion DeleteObjectVersionResponse where
      type ResponseMetadata DeleteObjectVersionResponse = S3Metadata
      responseConsumer _ _
          = s3ResponseConsumer $ \_ -> return DeleteObjectVersionResponse
  
  instance Transaction DeleteObjectVersion DeleteObjectVersionResponse
  
  instance AsMemoryResponse DeleteObjectVersionResponse where
      type MemoryResponse DeleteObjectVersionResponse = DeleteObjectVersionResponse
      loadToMemory = return
  