{-# 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-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns metadata about all of the versions of objects in a bucket. -- -- This operation returns paginated results. module Network.AWS.S3.ListObjectVersions ( -- * Creating a Request listObjectVersions , ListObjectVersions -- * Request Lenses , lKeyMarker , lPrefix , lEncodingType , lVersionIdMarker , lMaxKeys , lDelimiter , lBucket -- * Destructuring the Response , listObjectVersionsResponse , ListObjectVersionsResponse -- * Response Lenses , lrsNextVersionIdMarker , lrsKeyMarker , lrsDeleteMarkers , lrsPrefix , lrsCommonPrefixes , lrsEncodingType , lrsVersions , lrsName , lrsNextKeyMarker , lrsVersionIdMarker , lrsMaxKeys , lrsIsTruncated , lrsDelimiter , lrsResponseStatus ) where import Network.AWS.Lens 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' { _lKeyMarker :: !(Maybe Text) , _lPrefix :: !(Maybe Text) , _lEncodingType :: !(Maybe EncodingType) , _lVersionIdMarker :: !(Maybe Text) , _lMaxKeys :: !(Maybe Int) , _lDelimiter :: !(Maybe Delimiter) , _lBucket :: !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: -- -- * 'lKeyMarker' - Specifies the key to start with when listing objects in a bucket. -- -- * 'lPrefix' - Limits the response to keys that begin with the specified prefix. -- -- * 'lEncodingType' - Undocumented member. -- -- * 'lVersionIdMarker' - Specifies the object version you want to start listing from. -- -- * 'lMaxKeys' - Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. -- -- * 'lDelimiter' - A delimiter is a character you use to group keys. -- -- * 'lBucket' - Undocumented member. listObjectVersions :: BucketName -- ^ 'lBucket' -> ListObjectVersions listObjectVersions pBucket_ = ListObjectVersions' { _lKeyMarker = Nothing , _lPrefix = Nothing , _lEncodingType = Nothing , _lVersionIdMarker = Nothing , _lMaxKeys = Nothing , _lDelimiter = Nothing , _lBucket = pBucket_ } -- | Specifies the key to start with when listing objects in a bucket. lKeyMarker :: Lens' ListObjectVersions (Maybe Text) lKeyMarker = lens _lKeyMarker (\ s a -> s{_lKeyMarker = a}) -- | Limits the response to keys that begin with the specified prefix. lPrefix :: Lens' ListObjectVersions (Maybe Text) lPrefix = lens _lPrefix (\ s a -> s{_lPrefix = a}) -- | Undocumented member. lEncodingType :: Lens' ListObjectVersions (Maybe EncodingType) lEncodingType = lens _lEncodingType (\ s a -> s{_lEncodingType = a}) -- | Specifies the object version you want to start listing from. lVersionIdMarker :: Lens' ListObjectVersions (Maybe Text) lVersionIdMarker = lens _lVersionIdMarker (\ s a -> s{_lVersionIdMarker = a}) -- | Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more. lMaxKeys :: Lens' ListObjectVersions (Maybe Int) lMaxKeys = lens _lMaxKeys (\ s a -> s{_lMaxKeys = a}) -- | A delimiter is a character you use to group keys. lDelimiter :: Lens' ListObjectVersions (Maybe Delimiter) lDelimiter = lens _lDelimiter (\ s a -> s{_lDelimiter = a}) -- | Undocumented member. lBucket :: Lens' ListObjectVersions BucketName lBucket = lens _lBucket (\ s a -> s{_lBucket = a}) instance AWSPager ListObjectVersions where page rq rs | stop (rs ^. lrsIsTruncated) = Nothing | isNothing (rs ^. lrsNextKeyMarker) && isNothing (rs ^. lrsNextVersionIdMarker) = Nothing | otherwise = Just $ rq & lKeyMarker .~ rs ^. lrsNextKeyMarker & lVersionIdMarker .~ rs ^. lrsNextVersionIdMarker 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 Hashable ListObjectVersions where instance NFData ListObjectVersions where instance ToHeaders ListObjectVersions where toHeaders = const mempty instance ToPath ListObjectVersions where toPath ListObjectVersions'{..} = mconcat ["/", toBS _lBucket] instance ToQuery ListObjectVersions where toQuery ListObjectVersions'{..} = mconcat ["key-marker" =: _lKeyMarker, "prefix" =: _lPrefix, "encoding-type" =: _lEncodingType, "version-id-marker" =: _lVersionIdMarker, "max-keys" =: _lMaxKeys, "delimiter" =: _lDelimiter, "versions"] -- | /See:/ 'listObjectVersionsResponse' smart constructor. data ListObjectVersionsResponse = ListObjectVersionsResponse' { _lrsNextVersionIdMarker :: !(Maybe Text) , _lrsKeyMarker :: !(Maybe Text) , _lrsDeleteMarkers :: !(Maybe [DeleteMarkerEntry]) , _lrsPrefix :: !(Maybe Text) , _lrsCommonPrefixes :: !(Maybe [CommonPrefix]) , _lrsEncodingType :: !(Maybe EncodingType) , _lrsVersions :: !(Maybe [ObjectVersion]) , _lrsName :: !(Maybe BucketName) , _lrsNextKeyMarker :: !(Maybe Text) , _lrsVersionIdMarker :: !(Maybe Text) , _lrsMaxKeys :: !(Maybe Int) , _lrsIsTruncated :: !(Maybe Bool) , _lrsDelimiter :: !(Maybe Delimiter) , _lrsResponseStatus :: !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: -- -- * 'lrsNextVersionIdMarker' - Use this value for the next version id marker parameter in a subsequent request. -- -- * 'lrsKeyMarker' - Marks the last Key returned in a truncated response. -- -- * 'lrsDeleteMarkers' - Undocumented member. -- -- * 'lrsPrefix' - Undocumented member. -- -- * 'lrsCommonPrefixes' - Undocumented member. -- -- * 'lrsEncodingType' - Encoding type used by Amazon S3 to encode object keys in the response. -- -- * 'lrsVersions' - Undocumented member. -- -- * 'lrsName' - Undocumented member. -- -- * 'lrsNextKeyMarker' - Use this value for the key marker request parameter in a subsequent request. -- -- * 'lrsVersionIdMarker' - Undocumented member. -- -- * 'lrsMaxKeys' - Undocumented member. -- -- * 'lrsIsTruncated' - 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. -- -- * 'lrsDelimiter' - Undocumented member. -- -- * 'lrsResponseStatus' - -- | The response status code. listObjectVersionsResponse :: Int -- ^ 'lrsResponseStatus' -> ListObjectVersionsResponse listObjectVersionsResponse pResponseStatus_ = ListObjectVersionsResponse' { _lrsNextVersionIdMarker = Nothing , _lrsKeyMarker = Nothing , _lrsDeleteMarkers = Nothing , _lrsPrefix = Nothing , _lrsCommonPrefixes = Nothing , _lrsEncodingType = Nothing , _lrsVersions = Nothing , _lrsName = Nothing , _lrsNextKeyMarker = Nothing , _lrsVersionIdMarker = Nothing , _lrsMaxKeys = Nothing , _lrsIsTruncated = Nothing , _lrsDelimiter = Nothing , _lrsResponseStatus = pResponseStatus_ } -- | Use this value for the next version id marker parameter in a subsequent request. lrsNextVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text) lrsNextVersionIdMarker = lens _lrsNextVersionIdMarker (\ s a -> s{_lrsNextVersionIdMarker = a}) -- | Marks the last Key returned in a truncated response. lrsKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text) lrsKeyMarker = lens _lrsKeyMarker (\ s a -> s{_lrsKeyMarker = a}) -- | Undocumented member. lrsDeleteMarkers :: Lens' ListObjectVersionsResponse [DeleteMarkerEntry] lrsDeleteMarkers = lens _lrsDeleteMarkers (\ s a -> s{_lrsDeleteMarkers = a}) . _Default . _Coerce -- | Undocumented member. lrsPrefix :: Lens' ListObjectVersionsResponse (Maybe Text) lrsPrefix = lens _lrsPrefix (\ s a -> s{_lrsPrefix = a}) -- | Undocumented member. lrsCommonPrefixes :: Lens' ListObjectVersionsResponse [CommonPrefix] lrsCommonPrefixes = lens _lrsCommonPrefixes (\ s a -> s{_lrsCommonPrefixes = a}) . _Default . _Coerce -- | Encoding type used by Amazon S3 to encode object keys in the response. lrsEncodingType :: Lens' ListObjectVersionsResponse (Maybe EncodingType) lrsEncodingType = lens _lrsEncodingType (\ s a -> s{_lrsEncodingType = a}) -- | Undocumented member. lrsVersions :: Lens' ListObjectVersionsResponse [ObjectVersion] lrsVersions = lens _lrsVersions (\ s a -> s{_lrsVersions = a}) . _Default . _Coerce -- | Undocumented member. lrsName :: Lens' ListObjectVersionsResponse (Maybe BucketName) lrsName = lens _lrsName (\ s a -> s{_lrsName = a}) -- | Use this value for the key marker request parameter in a subsequent request. lrsNextKeyMarker :: Lens' ListObjectVersionsResponse (Maybe Text) lrsNextKeyMarker = lens _lrsNextKeyMarker (\ s a -> s{_lrsNextKeyMarker = a}) -- | Undocumented member. lrsVersionIdMarker :: Lens' ListObjectVersionsResponse (Maybe Text) lrsVersionIdMarker = lens _lrsVersionIdMarker (\ s a -> s{_lrsVersionIdMarker = a}) -- | Undocumented member. lrsMaxKeys :: Lens' ListObjectVersionsResponse (Maybe Int) lrsMaxKeys = lens _lrsMaxKeys (\ s a -> s{_lrsMaxKeys = 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. lrsIsTruncated :: Lens' ListObjectVersionsResponse (Maybe Bool) lrsIsTruncated = lens _lrsIsTruncated (\ s a -> s{_lrsIsTruncated = a}) -- | Undocumented member. lrsDelimiter :: Lens' ListObjectVersionsResponse (Maybe Delimiter) lrsDelimiter = lens _lrsDelimiter (\ s a -> s{_lrsDelimiter = a}) -- | -- | The response status code. lrsResponseStatus :: Lens' ListObjectVersionsResponse Int lrsResponseStatus = lens _lrsResponseStatus (\ s a -> s{_lrsResponseStatus = a}) instance NFData ListObjectVersionsResponse where