module Network.AWS.S3.ListObjects
(
ListObjects
, listObjects
, loBucket
, loDelimiter
, loEncodingType
, loMarker
, loMaxKeys
, loPrefix
, ListObjectsResponse
, listObjectsResponse
, lorCommonPrefixes
, lorContents
, lorDelimiter
, lorEncodingType
, lorIsTruncated
, lorMarker
, lorMaxKeys
, lorName
, lorNextMarker
, lorPrefix
) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data ListObjects = ListObjects
{ _loBucket :: Text
, _loDelimiter :: Maybe Text
, _loEncodingType :: Maybe EncodingType
, _loMarker :: Maybe Text
, _loMaxKeys :: Maybe Int
, _loPrefix :: Maybe Text
} deriving (Eq, Show)
listObjects :: Text
-> ListObjects
listObjects p1 = ListObjects
{ _loBucket = p1
, _loDelimiter = Nothing
, _loEncodingType = Nothing
, _loMarker = Nothing
, _loMaxKeys = Nothing
, _loPrefix = Nothing
}
loBucket :: Lens' ListObjects Text
loBucket = lens _loBucket (\s a -> s { _loBucket = a })
loDelimiter :: Lens' ListObjects (Maybe Text)
loDelimiter = lens _loDelimiter (\s a -> s { _loDelimiter = a })
loEncodingType :: Lens' ListObjects (Maybe EncodingType)
loEncodingType = lens _loEncodingType (\s a -> s { _loEncodingType = a })
loMarker :: Lens' ListObjects (Maybe Text)
loMarker = lens _loMarker (\s a -> s { _loMarker = a })
loMaxKeys :: Lens' ListObjects (Maybe Int)
loMaxKeys = lens _loMaxKeys (\s a -> s { _loMaxKeys = a })
loPrefix :: Lens' ListObjects (Maybe Text)
loPrefix = lens _loPrefix (\s a -> s { _loPrefix = a })
data ListObjectsResponse = ListObjectsResponse
{ _lorCommonPrefixes :: List "CommonPrefixes" CommonPrefix
, _lorContents :: List "Contents" Object
, _lorDelimiter :: Maybe Text
, _lorEncodingType :: Maybe EncodingType
, _lorIsTruncated :: Maybe Bool
, _lorMarker :: Maybe Text
, _lorMaxKeys :: Maybe Int
, _lorName :: Maybe Text
, _lorNextMarker :: Maybe Text
, _lorPrefix :: Maybe Text
} deriving (Eq, Show)
listObjectsResponse :: ListObjectsResponse
listObjectsResponse = ListObjectsResponse
{ _lorIsTruncated = Nothing
, _lorMarker = Nothing
, _lorNextMarker = Nothing
, _lorContents = mempty
, _lorName = Nothing
, _lorPrefix = Nothing
, _lorDelimiter = Nothing
, _lorMaxKeys = Nothing
, _lorCommonPrefixes = mempty
, _lorEncodingType = Nothing
}
lorCommonPrefixes :: Lens' ListObjectsResponse [CommonPrefix]
lorCommonPrefixes =
lens _lorCommonPrefixes (\s a -> s { _lorCommonPrefixes = a })
. _List
lorContents :: Lens' ListObjectsResponse [Object]
lorContents = lens _lorContents (\s a -> s { _lorContents = a }) . _List
lorDelimiter :: Lens' ListObjectsResponse (Maybe Text)
lorDelimiter = lens _lorDelimiter (\s a -> s { _lorDelimiter = a })
lorEncodingType :: Lens' ListObjectsResponse (Maybe EncodingType)
lorEncodingType = lens _lorEncodingType (\s a -> s { _lorEncodingType = a })
lorIsTruncated :: Lens' ListObjectsResponse (Maybe Bool)
lorIsTruncated = lens _lorIsTruncated (\s a -> s { _lorIsTruncated = a })
lorMarker :: Lens' ListObjectsResponse (Maybe Text)
lorMarker = lens _lorMarker (\s a -> s { _lorMarker = a })
lorMaxKeys :: Lens' ListObjectsResponse (Maybe Int)
lorMaxKeys = lens _lorMaxKeys (\s a -> s { _lorMaxKeys = a })
lorName :: Lens' ListObjectsResponse (Maybe Text)
lorName = lens _lorName (\s a -> s { _lorName = a })
lorNextMarker :: Lens' ListObjectsResponse (Maybe Text)
lorNextMarker = lens _lorNextMarker (\s a -> s { _lorNextMarker = a })
lorPrefix :: Lens' ListObjectsResponse (Maybe Text)
lorPrefix = lens _lorPrefix (\s a -> s { _lorPrefix = a })
instance ToPath ListObjects where
toPath ListObjects{..} = mconcat
[ "/"
, toText _loBucket
]
instance ToQuery ListObjects where
toQuery ListObjects{..} = mconcat
[ "delimiter" =? _loDelimiter
, "encoding-type" =? _loEncodingType
, "marker" =? _loMarker
, "max-keys" =? _loMaxKeys
, "prefix" =? _loPrefix
]
instance ToHeaders ListObjects
instance ToXMLRoot ListObjects where
toXMLRoot = const (namespaced ns "ListObjects" [])
instance ToXML ListObjects
instance AWSRequest ListObjects where
type Sv ListObjects = S3
type Rs ListObjects = ListObjectsResponse
request = get
response = xmlResponse
instance FromXML ListObjectsResponse where
parseXML x = ListObjectsResponse
<$> parseXML x
<*> parseXML x
<*> x .@? "Delimiter"
<*> x .@? "EncodingType"
<*> x .@? "IsTruncated"
<*> x .@? "Marker"
<*> x .@? "MaxKeys"
<*> x .@? "Name"
<*> x .@? "NextMarker"
<*> x .@? "Prefix"
instance AWSPager ListObjects where
page rq rs
| stop (rs ^. lorIsTruncated) = Nothing
| otherwise = Just $ rq
& loMarker .~ rs ^. lorNextMarker