module Aws.S3.Commands.GetBucket
where
import Aws.S3.Info
import Aws.S3.Model
import Aws.S3.Query
import Aws.Signature
import Control.Applicative
import Control.Arrow (second)
import Data.ByteString.Char8 ()
import Data.Maybe
import qualified Data.ByteString.UTF8 as BU
import qualified Network.HTTP.Types as HTTP
data GetBucket
= GetBucket {
gbBucket :: Bucket
, gbDelimiter :: Maybe String
, gbMarker :: Maybe String
, gbMaxKeys :: Maybe Int
, gbPrefix :: Maybe String
}
deriving (Show)
getBucket :: Bucket -> GetBucket
getBucket bucket
= GetBucket {
gbBucket = bucket
, gbDelimiter = Nothing
, gbMarker = Nothing
, gbMaxKeys = Nothing
, gbPrefix = Nothing
}
data GetBucketResult
= GetBucketResult {
gbrName :: Bucket
, gbrDelimiter :: Maybe String
, gbrMarker :: Maybe String
, gbrMaxKeys :: Maybe Int
, gbrPrefix :: Maybe String
, gbrContents :: [ObjectInfo]
, gbrCommonPrefixes :: [String]
}
deriving (Show)
instance SignQuery GetBucket where
type Info GetBucket = S3Info
signQuery GetBucket {..} = s3SignQuery S3Query {
s3QBucket = Just $ BU.fromString gbBucket
, s3QSubresources = []
, s3QQuery = HTTP.simpleQueryToQuery $ map (second BU.fromString) $ catMaybes [
("delimiter",) <$> gbDelimiter
, ("marker",) <$> gbMarker
, ("max-keys",) <$> show <$> gbMaxKeys
, ("prefix",) <$> gbPrefix
]
}