{-# 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.Kinesis.DescribeStream
(
describeStream
, DescribeStream
, dExclusiveStartShardId
, dLimit
, dStreamName
, describeStreamResponse
, DescribeStreamResponse
, dsrsResponseStatus
, dsrsStreamDescription
) where
import Network.AWS.Kinesis.Types
import Network.AWS.Kinesis.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data DescribeStream = DescribeStream'
{ _dExclusiveStartShardId :: !(Maybe Text)
, _dLimit :: !(Maybe Nat)
, _dStreamName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeStream
:: Text
-> DescribeStream
describeStream pStreamName_ =
DescribeStream'
{ _dExclusiveStartShardId = Nothing
, _dLimit = Nothing
, _dStreamName = pStreamName_
}
dExclusiveStartShardId :: Lens' DescribeStream (Maybe Text)
dExclusiveStartShardId = lens _dExclusiveStartShardId (\ s a -> s{_dExclusiveStartShardId = a})
dLimit :: Lens' DescribeStream (Maybe Natural)
dLimit = lens _dLimit (\ s a -> s{_dLimit = a}) . mapping _Nat
dStreamName :: Lens' DescribeStream Text
dStreamName = lens _dStreamName (\ s a -> s{_dStreamName = a})
instance AWSPager DescribeStream where
page rq rs
| stop
(rs ^. dsrsStreamDescription . sdHasMoreShards)
= Nothing
| isNothing
(rs ^?
dsrsStreamDescription . sdShards . _last . sShardId)
= Nothing
| otherwise =
Just $ rq &
dExclusiveStartShardId .~
rs ^?
dsrsStreamDescription . sdShards . _last . sShardId
instance AWSRequest DescribeStream where
type Rs DescribeStream = DescribeStreamResponse
request = postJSON kinesis
response
= receiveJSON
(\ s h x ->
DescribeStreamResponse' <$>
(pure (fromEnum s)) <*> (x .:> "StreamDescription"))
instance Hashable DescribeStream where
instance NFData DescribeStream where
instance ToHeaders DescribeStream where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("Kinesis_20131202.DescribeStream" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DescribeStream where
toJSON DescribeStream'{..}
= object
(catMaybes
[("ExclusiveStartShardId" .=) <$>
_dExclusiveStartShardId,
("Limit" .=) <$> _dLimit,
Just ("StreamName" .= _dStreamName)])
instance ToPath DescribeStream where
toPath = const "/"
instance ToQuery DescribeStream where
toQuery = const mempty
data DescribeStreamResponse = DescribeStreamResponse'
{ _dsrsResponseStatus :: !Int
, _dsrsStreamDescription :: !StreamDescription
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeStreamResponse
:: Int
-> StreamDescription
-> DescribeStreamResponse
describeStreamResponse pResponseStatus_ pStreamDescription_ =
DescribeStreamResponse'
{ _dsrsResponseStatus = pResponseStatus_
, _dsrsStreamDescription = pStreamDescription_
}
dsrsResponseStatus :: Lens' DescribeStreamResponse Int
dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a})
dsrsStreamDescription :: Lens' DescribeStreamResponse StreamDescription
dsrsStreamDescription = lens _dsrsStreamDescription (\ s a -> s{_dsrsStreamDescription = a})
instance NFData DescribeStreamResponse where