module Network.AWS.S3.ListObjectVersions
(
ListObjectVersions
, listObjectVersions
, lovBucket
, lovDelimiter
, lovEncodingType
, lovKeyMarker
, lovMaxKeys
, lovPrefix
, lovVersionIdMarker
, ListObjectVersionsResponse
, listObjectVersionsResponse
, lovrCommonPrefixes
, lovrDeleteMarkers
, lovrDelimiter
, lovrEncodingType
, lovrIsTruncated
, lovrKeyMarker
, lovrMaxKeys
, lovrName
, lovrNextKeyMarker
, lovrNextVersionIdMarker
, lovrPrefix
, lovrVersionIdMarker
, lovrVersions
) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data ListObjectVersions = ListObjectVersions
{ _lovBucket :: Text
, _lovDelimiter :: Maybe Text
, _lovEncodingType :: Maybe EncodingType
, _lovKeyMarker :: Maybe Text
, _lovMaxKeys :: Maybe Int
, _lovPrefix :: Maybe Text
, _lovVersionIdMarker :: Maybe Text
} deriving (Eq, Show)
listObjectVersions :: Text
-> ListObjectVersions
listObjectVersions p1 = ListObjectVersions
{ _lovBucket = p1
, _lovDelimiter = Nothing
, _lovEncodingType = Nothing
, _lovKeyMarker = Nothing
, _lovMaxKeys = Nothing
, _lovPrefix = Nothing
, _lovVersionIdMarker = Nothing
}
lovBucket :: Lens' ListObjectVersions Text
lovBucket = lens _lovBucket (\s a -> s { _lovBucket = a })
lovDelimiter :: Lens' ListObjectVersions (Maybe Text)
lovDelimiter = lens _lovDelimiter (\s a -> s { _lovDelimiter = a })
lovEncodingType :: Lens' ListObjectVersions (Maybe EncodingType)
lovEncodingType = lens _lovEncodingType (\s a -> s { _lovEncodingType = a })
lovKeyMarker :: Lens' ListObjectVersions (Maybe Text)
lovKeyMarker = lens _lovKeyMarker (\s a -> s { _lovKeyMarker = a })
lovMaxKeys :: Lens' ListObjectVersions (Maybe Int)
lovMaxKeys = lens _lovMaxKeys (\s a -> s { _lovMaxKeys = a })
lovPrefix :: Lens' ListObjectVersions (Maybe Text)
lovPrefix = lens _lovPrefix (\s a -> s { _lovPrefix = a })
lovVersionIdMarker :: Lens' ListObjectVersions (Maybe Text)
lovVersionIdMarker =
lens _lovVersionIdMarker (\s a -> s { _lovVersionIdMarker = a })
data ListObjectVersionsResponse = ListObjectVersionsResponse
{ _lovrCommonPrefixes :: List "CommonPrefixes" CommonPrefix
, _lovrDeleteMarkers :: List "DeleteMarker" DeleteMarkerEntry
, _lovrDelimiter :: Maybe Text
, _lovrEncodingType :: Maybe EncodingType
, _lovrIsTruncated :: Maybe Bool
, _lovrKeyMarker :: Maybe Text
, _lovrMaxKeys :: Maybe Int
, _lovrName :: Maybe Text
, _lovrNextKeyMarker :: Maybe Text
, _lovrNextVersionIdMarker :: Maybe Text
, _lovrPrefix :: Maybe Text
, _lovrVersionIdMarker :: Maybe Text
, _lovrVersions :: List "Version" ObjectVersion
} deriving (Eq, Show)
listObjectVersionsResponse :: ListObjectVersionsResponse
listObjectVersionsResponse = ListObjectVersionsResponse
{ _lovrIsTruncated = Nothing
, _lovrKeyMarker = Nothing
, _lovrVersionIdMarker = Nothing
, _lovrNextKeyMarker = Nothing
, _lovrNextVersionIdMarker = Nothing
, _lovrVersions = mempty
, _lovrDeleteMarkers = mempty
, _lovrName = Nothing
, _lovrPrefix = Nothing
, _lovrDelimiter = Nothing
, _lovrMaxKeys = Nothing
, _lovrCommonPrefixes = mempty
, _lovrEncodingType = Nothing
}
lovrCommonPrefixes :: Lens' ListObjectVersionsResponse [CommonPrefix]
lovrCommonPrefixes =
lens _lovrCommonPrefixes (\s a -> s { _lovrCommonPrefixes = a })
. _List
lovrDeleteMarkers :: Lens' ListObjectVersionsResponse [DeleteMarkerEntry]
lovrDeleteMarkers =
lens _lovrDeleteMarkers (\s a -> s { _lovrDeleteMarkers = a })
. _List
lovrDelimiter :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrDelimiter = lens _lovrDelimiter (\s a -> s { _lovrDelimiter = a })
lovrEncodingType :: Lens' ListObjectVersionsResponse (Maybe EncodingType)
lovrEncodingType = lens _lovrEncodingType (\s a -> s { _lovrEncodingType = a })
lovrIsTruncated :: Lens' ListObjectVersionsResponse (Maybe Bool)
lovrIsTruncated = lens _lovrIsTruncated (\s a -> s { _lovrIsTruncated = a })
lovrKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrKeyMarker = lens _lovrKeyMarker (\s a -> s { _lovrKeyMarker = a })
lovrMaxKeys :: Lens' ListObjectVersionsResponse (Maybe Int)
lovrMaxKeys = lens _lovrMaxKeys (\s a -> s { _lovrMaxKeys = a })
lovrName :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrName = lens _lovrName (\s a -> s { _lovrName = a })
lovrNextKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrNextKeyMarker =
lens _lovrNextKeyMarker (\s a -> s { _lovrNextKeyMarker = a })
lovrNextVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrNextVersionIdMarker =
lens _lovrNextVersionIdMarker (\s a -> s { _lovrNextVersionIdMarker = a })
lovrPrefix :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrPrefix = lens _lovrPrefix (\s a -> s { _lovrPrefix = a })
lovrVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrVersionIdMarker =
lens _lovrVersionIdMarker (\s a -> s { _lovrVersionIdMarker = a })
lovrVersions :: Lens' ListObjectVersionsResponse [ObjectVersion]
lovrVersions = lens _lovrVersions (\s a -> s { _lovrVersions = a }) . _List
instance ToPath ListObjectVersions where
toPath ListObjectVersions{..} = mconcat
[ "/"
, toText _lovBucket
]
instance ToQuery ListObjectVersions where
toQuery ListObjectVersions{..} = mconcat
[ "versions"
, "delimiter" =? _lovDelimiter
, "encoding-type" =? _lovEncodingType
, "key-marker" =? _lovKeyMarker
, "max-keys" =? _lovMaxKeys
, "prefix" =? _lovPrefix
, "version-id-marker" =? _lovVersionIdMarker
]
instance ToHeaders ListObjectVersions
instance ToXMLRoot ListObjectVersions where
toXMLRoot = const (namespaced ns "ListObjectVersions" [])
instance ToXML ListObjectVersions
instance AWSRequest ListObjectVersions where
type Sv ListObjectVersions = S3
type Rs ListObjectVersions = ListObjectVersionsResponse
request = get
response = xmlResponse
instance FromXML ListObjectVersionsResponse where
parseXML x = ListObjectVersionsResponse
<$> parseXML x
<*> parseXML x
<*> x .@? "Delimiter"
<*> x .@? "EncodingType"
<*> x .@? "IsTruncated"
<*> x .@? "KeyMarker"
<*> x .@? "MaxKeys"
<*> x .@? "Name"
<*> x .@? "NextKeyMarker"
<*> x .@? "NextVersionIdMarker"
<*> x .@? "Prefix"
<*> x .@? "VersionIdMarker"
<*> parseXML x
instance AWSPager ListObjectVersions where
page rq rs
| stop (rs ^. lovrIsTruncated) = Nothing
| isNothing p1 && isNothing p2 = Nothing
| otherwise = Just $ rq
& lovKeyMarker .~ p1
& lovVersionIdMarker .~ p2
where
p1 = rs ^. lovrNextKeyMarker
p2 = rs ^. lovrNextVersionIdMarker