{-# 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 #-}
module Network.AWS.DynamoDBStreams.DescribeStream
(
describeStream
, DescribeStream
, dsExclusiveStartShardId
, dsLimit
, dsStreamARN
, describeStreamResponse
, DescribeStreamResponse
, dsrsStreamDescription
, dsrsResponseStatus
) 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
data DescribeStream = DescribeStream'
{ _dsExclusiveStartShardId :: !(Maybe Text)
, _dsLimit :: !(Maybe Nat)
, _dsStreamARN :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeStream
:: Text
-> DescribeStream
describeStream pStreamARN_ =
DescribeStream'
{ _dsExclusiveStartShardId = Nothing
, _dsLimit = Nothing
, _dsStreamARN = pStreamARN_
}
dsExclusiveStartShardId :: Lens' DescribeStream (Maybe Text)
dsExclusiveStartShardId = lens _dsExclusiveStartShardId (\ s a -> s{_dsExclusiveStartShardId = a})
dsLimit :: Lens' DescribeStream (Maybe Natural)
dsLimit = lens _dsLimit (\ s a -> s{_dsLimit = a}) . mapping _Nat
dsStreamARN :: Lens' DescribeStream Text
dsStreamARN = lens _dsStreamARN (\ s a -> s{_dsStreamARN = a})
instance AWSRequest DescribeStream where
type Rs DescribeStream = DescribeStreamResponse
request = postJSON dynamoDBStreams
response
= receiveJSON
(\ s h x ->
DescribeStreamResponse' <$>
(x .?> "StreamDescription") <*> (pure (fromEnum s)))
instance Hashable DescribeStream where
instance NFData DescribeStream where
instance ToHeaders DescribeStream where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("DynamoDBStreams_20120810.DescribeStream" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.0" :: ByteString)])
instance ToJSON DescribeStream where
toJSON DescribeStream'{..}
= object
(catMaybes
[("ExclusiveStartShardId" .=) <$>
_dsExclusiveStartShardId,
("Limit" .=) <$> _dsLimit,
Just ("StreamArn" .= _dsStreamARN)])
instance ToPath DescribeStream where
toPath = const "/"
instance ToQuery DescribeStream where
toQuery = const mempty
data DescribeStreamResponse = DescribeStreamResponse'
{ _dsrsStreamDescription :: !(Maybe StreamDescription)
, _dsrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeStreamResponse
:: Int
-> DescribeStreamResponse
describeStreamResponse pResponseStatus_ =
DescribeStreamResponse'
{_dsrsStreamDescription = Nothing, _dsrsResponseStatus = pResponseStatus_}
dsrsStreamDescription :: Lens' DescribeStreamResponse (Maybe StreamDescription)
dsrsStreamDescription = lens _dsrsStreamDescription (\ s a -> s{_dsrsStreamDescription = a})
dsrsResponseStatus :: Lens' DescribeStreamResponse Int
dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a})
instance NFData DescribeStreamResponse where