{-# 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-2015 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. -- -- A shard iterator expires 15 minutes after it is returned to the -- requester. -- -- /See:/ for GetShardIterator. module Network.AWS.DynamoDBStreams.GetShardIterator ( -- * Creating a Request getShardIterator , GetShardIterator -- * Request Lenses , gsiSequenceNumber , gsiStreamARN , gsiShardId , gsiShardIteratorType -- * Destructuring the Response , getShardIteratorResponse , GetShardIteratorResponse -- * Response Lenses , gsirsShardIterator , gsirsStatus ) where import Network.AWS.DynamoDBStreams.Types import Network.AWS.DynamoDBStreams.Types.Product 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' -- -- * 'gsiStreamARN' -- -- * 'gsiShardId' -- -- * 'gsiShardIteratorType' 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 Sv GetShardIterator = DynamoDBStreams type Rs GetShardIterator = GetShardIteratorResponse request = postJSON response = receiveJSON (\ s h x -> GetShardIteratorResponse' <$> (x .?> "ShardIterator") <*> (pure (fromEnum s))) 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 ["SequenceNumber" .= _gsiSequenceNumber, "StreamArn" .= _gsiStreamARN, "ShardId" .= _gsiShardId, "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) , _gsirsStatus :: !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' -- -- * 'gsirsStatus' getShardIteratorResponse :: Int -- ^ 'gsirsStatus' -> GetShardIteratorResponse getShardIteratorResponse pStatus_ = GetShardIteratorResponse' { _gsirsShardIterator = Nothing , _gsirsStatus = pStatus_ } -- | 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. gsirsStatus :: Lens' GetShardIteratorResponse Int gsirsStatus = lens _gsirsStatus (\ s a -> s{_gsirsStatus = a});