amazonka-s3-1.3.0: gen/Network/AWS/S3/ListObjectVersions.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.S3.ListObjectVersions
-- Copyright : (c) 2013-2015 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns metadata about all of the versions of objects in a bucket.
--
-- /See:/ <http://docs.aws.amazon.com/AmazonS3/latest/API/ListObjectVersions.html AWS API Reference> for ListObjectVersions.
--
-- This operation returns paginated results.
module Network.AWS.S3.ListObjectVersions
(
-- * Creating a Request
listObjectVersions
, ListObjectVersions
-- * Request Lenses
, lovKeyMarker
, lovPrefix
, lovEncodingType
, lovVersionIdMarker
, lovMaxKeys
, lovDelimiter
, lovBucket
-- * Destructuring the Response
, listObjectVersionsResponse
, ListObjectVersionsResponse
-- * Response Lenses
, lovrsNextVersionIdMarker
, lovrsKeyMarker
, lovrsDeleteMarkers
, lovrsPrefix
, lovrsCommonPrefixes
, lovrsEncodingType
, lovrsVersions
, lovrsName
, lovrsNextKeyMarker
, lovrsVersionIdMarker
, lovrsMaxKeys
, lovrsIsTruncated
, lovrsDelimiter
, lovrsResponseStatus
) where
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.S3.Types
import Network.AWS.S3.Types.Product
-- | /See:/ 'listObjectVersions' smart constructor.
data ListObjectVersions = ListObjectVersions'
{ _lovKeyMarker :: !(Maybe Text)
, _lovPrefix :: !(Maybe Text)
, _lovEncodingType :: !(Maybe EncodingType)
, _lovVersionIdMarker :: !(Maybe Text)
, _lovMaxKeys :: !(Maybe Int)
, _lovDelimiter :: !(Maybe Delimiter)
, _lovBucket :: !BucketName
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ListObjectVersions' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'lovKeyMarker'
--
-- * 'lovPrefix'
--
-- * 'lovEncodingType'
--
-- * 'lovVersionIdMarker'
--
-- * 'lovMaxKeys'
--
-- * 'lovDelimiter'
--
-- * 'lovBucket'
listObjectVersions
:: BucketName -- ^ 'lovBucket'
-> ListObjectVersions
listObjectVersions pBucket_ =
ListObjectVersions'
{ _lovKeyMarker = Nothing
, _lovPrefix = Nothing
, _lovEncodingType = Nothing
, _lovVersionIdMarker = Nothing
, _lovMaxKeys = Nothing
, _lovDelimiter = Nothing
, _lovBucket = pBucket_
}
-- | Specifies the key to start with when listing objects in a bucket.
lovKeyMarker :: Lens' ListObjectVersions (Maybe Text)
lovKeyMarker = lens _lovKeyMarker (\ s a -> s{_lovKeyMarker = a});
-- | Limits the response to keys that begin with the specified prefix.
lovPrefix :: Lens' ListObjectVersions (Maybe Text)
lovPrefix = lens _lovPrefix (\ s a -> s{_lovPrefix = a});
-- | Undocumented member.
lovEncodingType :: Lens' ListObjectVersions (Maybe EncodingType)
lovEncodingType = lens _lovEncodingType (\ s a -> s{_lovEncodingType = a});
-- | Specifies the object version you want to start listing from.
lovVersionIdMarker :: Lens' ListObjectVersions (Maybe Text)
lovVersionIdMarker = lens _lovVersionIdMarker (\ s a -> s{_lovVersionIdMarker = a});
-- | Sets the maximum number of keys returned in the response. The response
-- might contain fewer keys but will never contain more.
lovMaxKeys :: Lens' ListObjectVersions (Maybe Int)
lovMaxKeys = lens _lovMaxKeys (\ s a -> s{_lovMaxKeys = a});
-- | A delimiter is a character you use to group keys.
lovDelimiter :: Lens' ListObjectVersions (Maybe Delimiter)
lovDelimiter = lens _lovDelimiter (\ s a -> s{_lovDelimiter = a});
-- | Undocumented member.
lovBucket :: Lens' ListObjectVersions BucketName
lovBucket = lens _lovBucket (\ s a -> s{_lovBucket = a});
instance AWSPager ListObjectVersions where
page rq rs
| stop (rs ^. lovrsIsTruncated) = Nothing
| isNothing (rs ^. lovrsNextKeyMarker) &&
isNothing (rs ^. lovrsNextVersionIdMarker)
= Nothing
| otherwise =
Just $ rq & lovKeyMarker .~ rs ^. lovrsNextKeyMarker
&
lovVersionIdMarker .~ rs ^. lovrsNextVersionIdMarker
instance AWSRequest ListObjectVersions where
type Rs ListObjectVersions =
ListObjectVersionsResponse
request = get s3
response
= receiveXML
(\ s h x ->
ListObjectVersionsResponse' <$>
(x .@? "NextVersionIdMarker") <*> (x .@? "KeyMarker")
<*> (may (parseXMLList "DeleteMarker") x)
<*> (x .@? "Prefix")
<*> (may (parseXMLList "CommonPrefixes") x)
<*> (x .@? "EncodingType")
<*> (may (parseXMLList "Version") x)
<*> (x .@? "Name")
<*> (x .@? "NextKeyMarker")
<*> (x .@? "VersionIdMarker")
<*> (x .@? "MaxKeys")
<*> (x .@? "IsTruncated")
<*> (x .@? "Delimiter")
<*> (pure (fromEnum s)))
instance ToHeaders ListObjectVersions where
toHeaders = const mempty
instance ToPath ListObjectVersions where
toPath ListObjectVersions'{..}
= mconcat ["/", toBS _lovBucket]
instance ToQuery ListObjectVersions where
toQuery ListObjectVersions'{..}
= mconcat
["key-marker" =: _lovKeyMarker,
"prefix" =: _lovPrefix,
"encoding-type" =: _lovEncodingType,
"version-id-marker" =: _lovVersionIdMarker,
"max-keys" =: _lovMaxKeys,
"delimiter" =: _lovDelimiter, "versions"]
-- | /See:/ 'listObjectVersionsResponse' smart constructor.
data ListObjectVersionsResponse = ListObjectVersionsResponse'
{ _lovrsNextVersionIdMarker :: !(Maybe Text)
, _lovrsKeyMarker :: !(Maybe Text)
, _lovrsDeleteMarkers :: !(Maybe [DeleteMarkerEntry])
, _lovrsPrefix :: !(Maybe Text)
, _lovrsCommonPrefixes :: !(Maybe [CommonPrefix])
, _lovrsEncodingType :: !(Maybe EncodingType)
, _lovrsVersions :: !(Maybe [ObjectVersion])
, _lovrsName :: !(Maybe BucketName)
, _lovrsNextKeyMarker :: !(Maybe Text)
, _lovrsVersionIdMarker :: !(Maybe Text)
, _lovrsMaxKeys :: !(Maybe Int)
, _lovrsIsTruncated :: !(Maybe Bool)
, _lovrsDelimiter :: !(Maybe Delimiter)
, _lovrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ListObjectVersionsResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'lovrsNextVersionIdMarker'
--
-- * 'lovrsKeyMarker'
--
-- * 'lovrsDeleteMarkers'
--
-- * 'lovrsPrefix'
--
-- * 'lovrsCommonPrefixes'
--
-- * 'lovrsEncodingType'
--
-- * 'lovrsVersions'
--
-- * 'lovrsName'
--
-- * 'lovrsNextKeyMarker'
--
-- * 'lovrsVersionIdMarker'
--
-- * 'lovrsMaxKeys'
--
-- * 'lovrsIsTruncated'
--
-- * 'lovrsDelimiter'
--
-- * 'lovrsResponseStatus'
listObjectVersionsResponse
:: Int -- ^ 'lovrsResponseStatus'
-> ListObjectVersionsResponse
listObjectVersionsResponse pResponseStatus_ =
ListObjectVersionsResponse'
{ _lovrsNextVersionIdMarker = Nothing
, _lovrsKeyMarker = Nothing
, _lovrsDeleteMarkers = Nothing
, _lovrsPrefix = Nothing
, _lovrsCommonPrefixes = Nothing
, _lovrsEncodingType = Nothing
, _lovrsVersions = Nothing
, _lovrsName = Nothing
, _lovrsNextKeyMarker = Nothing
, _lovrsVersionIdMarker = Nothing
, _lovrsMaxKeys = Nothing
, _lovrsIsTruncated = Nothing
, _lovrsDelimiter = Nothing
, _lovrsResponseStatus = pResponseStatus_
}
-- | Use this value for the next version id marker parameter in a subsequent
-- request.
lovrsNextVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrsNextVersionIdMarker = lens _lovrsNextVersionIdMarker (\ s a -> s{_lovrsNextVersionIdMarker = a});
-- | Marks the last Key returned in a truncated response.
lovrsKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrsKeyMarker = lens _lovrsKeyMarker (\ s a -> s{_lovrsKeyMarker = a});
-- | Undocumented member.
lovrsDeleteMarkers :: Lens' ListObjectVersionsResponse [DeleteMarkerEntry]
lovrsDeleteMarkers = lens _lovrsDeleteMarkers (\ s a -> s{_lovrsDeleteMarkers = a}) . _Default . _Coerce;
-- | Undocumented member.
lovrsPrefix :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrsPrefix = lens _lovrsPrefix (\ s a -> s{_lovrsPrefix = a});
-- | Undocumented member.
lovrsCommonPrefixes :: Lens' ListObjectVersionsResponse [CommonPrefix]
lovrsCommonPrefixes = lens _lovrsCommonPrefixes (\ s a -> s{_lovrsCommonPrefixes = a}) . _Default . _Coerce;
-- | Encoding type used by Amazon S3 to encode object keys in the response.
lovrsEncodingType :: Lens' ListObjectVersionsResponse (Maybe EncodingType)
lovrsEncodingType = lens _lovrsEncodingType (\ s a -> s{_lovrsEncodingType = a});
-- | Undocumented member.
lovrsVersions :: Lens' ListObjectVersionsResponse [ObjectVersion]
lovrsVersions = lens _lovrsVersions (\ s a -> s{_lovrsVersions = a}) . _Default . _Coerce;
-- | Undocumented member.
lovrsName :: Lens' ListObjectVersionsResponse (Maybe BucketName)
lovrsName = lens _lovrsName (\ s a -> s{_lovrsName = a});
-- | Use this value for the key marker request parameter in a subsequent
-- request.
lovrsNextKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrsNextKeyMarker = lens _lovrsNextKeyMarker (\ s a -> s{_lovrsNextKeyMarker = a});
-- | Undocumented member.
lovrsVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text)
lovrsVersionIdMarker = lens _lovrsVersionIdMarker (\ s a -> s{_lovrsVersionIdMarker = a});
-- | Undocumented member.
lovrsMaxKeys :: Lens' ListObjectVersionsResponse (Maybe Int)
lovrsMaxKeys = lens _lovrsMaxKeys (\ s a -> s{_lovrsMaxKeys = a});
-- | A flag that indicates whether or not Amazon S3 returned all of the
-- results that satisfied the search criteria. If your results were
-- truncated, you can make a follow-up paginated request using the
-- NextKeyMarker and NextVersionIdMarker response parameters as a starting
-- place in another request to return the rest of the results.
lovrsIsTruncated :: Lens' ListObjectVersionsResponse (Maybe Bool)
lovrsIsTruncated = lens _lovrsIsTruncated (\ s a -> s{_lovrsIsTruncated = a});
-- | Undocumented member.
lovrsDelimiter :: Lens' ListObjectVersionsResponse (Maybe Delimiter)
lovrsDelimiter = lens _lovrsDelimiter (\ s a -> s{_lovrsDelimiter = a});
-- | The response status code.
lovrsResponseStatus :: Lens' ListObjectVersionsResponse Int
lovrsResponseStatus = lens _lovrsResponseStatus (\ s a -> s{_lovrsResponseStatus = a});