{-# 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.DynamoDBStreams.GetShardIterator -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns a shard iterator. A shard iterator provides information about how to retrieve the stream records from within a shard. Use the shard iterator in a subsequent @GetRecords@ request to read the stream records from the shard. -- -- module Network.AWS.DynamoDBStreams.GetShardIterator ( -- * Creating a Request getShardIterator , GetShardIterator -- * Request Lenses , gsiSequenceNumber , gsiStreamARN , gsiShardId , gsiShardIteratorType -- * Destructuring the Response , getShardIteratorResponse , GetShardIteratorResponse -- * Response Lenses , gsirsShardIterator , gsirsResponseStatus ) where import Network.AWS.DynamoDBStreams.Types import Network.AWS.DynamoDBStreams.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Represents the input of a /GetShardIterator/ operation. -- -- -- -- /See:/ 'getShardIterator' smart constructor. data GetShardIterator = GetShardIterator' { _gsiSequenceNumber :: !(Maybe Text) , _gsiStreamARN :: !Text , _gsiShardId :: !Text , _gsiShardIteratorType :: !ShardIteratorType } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetShardIterator' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gsiSequenceNumber' - The sequence number of a stream record in the shard from which to start reading. -- -- * 'gsiStreamARN' - The Amazon Resource Name (ARN) for the stream. -- -- * 'gsiShardId' - The identifier of the shard. The iterator will be returned for this shard ID. -- -- * 'gsiShardIteratorType' - Determines how the shard iterator is used to start reading stream records from the shard: * @AT_SEQUENCE_NUMBER@ - Start reading exactly from the position denoted by a specific sequence number. * @AFTER_SEQUENCE_NUMBER@ - Start reading right after the position denoted by a specific sequence number. * @TRIM_HORIZON@ - Start reading at the last (untrimmed) stream record, which is the oldest record in the shard. In DynamoDB Streams, there is a 24 hour limit on data retention. Stream records whose age exceeds this limit are subject to removal (trimming) from the stream. * @LATEST@ - Start reading just after the most recent stream record in the shard, so that you always read the most recent data in the shard. getShardIterator :: Text -- ^ 'gsiStreamARN' -> Text -- ^ 'gsiShardId' -> ShardIteratorType -- ^ 'gsiShardIteratorType' -> GetShardIterator getShardIterator pStreamARN_ pShardId_ pShardIteratorType_ = GetShardIterator' { _gsiSequenceNumber = Nothing , _gsiStreamARN = pStreamARN_ , _gsiShardId = pShardId_ , _gsiShardIteratorType = pShardIteratorType_ } -- | The sequence number of a stream record in the shard from which to start reading. gsiSequenceNumber :: Lens' GetShardIterator (Maybe Text) gsiSequenceNumber = lens _gsiSequenceNumber (\ s a -> s{_gsiSequenceNumber = a}); -- | The Amazon Resource Name (ARN) for the stream. gsiStreamARN :: Lens' GetShardIterator Text gsiStreamARN = lens _gsiStreamARN (\ s a -> s{_gsiStreamARN = a}); -- | The identifier of the shard. The iterator will be returned for this shard ID. gsiShardId :: Lens' GetShardIterator Text gsiShardId = lens _gsiShardId (\ s a -> s{_gsiShardId = a}); -- | Determines how the shard iterator is used to start reading stream records from the shard: * @AT_SEQUENCE_NUMBER@ - Start reading exactly from the position denoted by a specific sequence number. * @AFTER_SEQUENCE_NUMBER@ - Start reading right after the position denoted by a specific sequence number. * @TRIM_HORIZON@ - Start reading at the last (untrimmed) stream record, which is the oldest record in the shard. In DynamoDB Streams, there is a 24 hour limit on data retention. Stream records whose age exceeds this limit are subject to removal (trimming) from the stream. * @LATEST@ - Start reading just after the most recent stream record in the shard, so that you always read the most recent data in the shard. gsiShardIteratorType :: Lens' GetShardIterator ShardIteratorType gsiShardIteratorType = lens _gsiShardIteratorType (\ s a -> s{_gsiShardIteratorType = a}); instance AWSRequest GetShardIterator where type Rs GetShardIterator = GetShardIteratorResponse request = postJSON dynamoDBStreams response = receiveJSON (\ s h x -> GetShardIteratorResponse' <$> (x .?> "ShardIterator") <*> (pure (fromEnum s))) instance Hashable GetShardIterator instance NFData GetShardIterator instance ToHeaders GetShardIterator where toHeaders = const (mconcat ["X-Amz-Target" =# ("DynamoDBStreams_20120810.GetShardIterator" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.0" :: ByteString)]) instance ToJSON GetShardIterator where toJSON GetShardIterator'{..} = object (catMaybes [("SequenceNumber" .=) <$> _gsiSequenceNumber, Just ("StreamArn" .= _gsiStreamARN), Just ("ShardId" .= _gsiShardId), Just ("ShardIteratorType" .= _gsiShardIteratorType)]) instance ToPath GetShardIterator where toPath = const "/" instance ToQuery GetShardIterator where toQuery = const mempty -- | Represents the output of a /GetShardIterator/ operation. -- -- -- -- /See:/ 'getShardIteratorResponse' smart constructor. data GetShardIteratorResponse = GetShardIteratorResponse' { _gsirsShardIterator :: !(Maybe Text) , _gsirsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetShardIteratorResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gsirsShardIterator' - The position in the shard from which to start reading stream records sequentially. A shard iterator specifies this position using the sequence number of a stream record in a shard. -- -- * 'gsirsResponseStatus' - -- | The response status code. getShardIteratorResponse :: Int -- ^ 'gsirsResponseStatus' -> GetShardIteratorResponse getShardIteratorResponse pResponseStatus_ = GetShardIteratorResponse' { _gsirsShardIterator = Nothing , _gsirsResponseStatus = pResponseStatus_ } -- | The position in the shard from which to start reading stream records sequentially. A shard iterator specifies this position using the sequence number of a stream record in a shard. gsirsShardIterator :: Lens' GetShardIteratorResponse (Maybe Text) gsirsShardIterator = lens _gsirsShardIterator (\ s a -> s{_gsirsShardIterator = a}); -- | -- | The response status code. gsirsResponseStatus :: Lens' GetShardIteratorResponse Int gsirsResponseStatus = lens _gsirsResponseStatus (\ s a -> s{_gsirsResponseStatus = a}); instance NFData GetShardIteratorResponse