module Network.AWS.SNS.ListSubscriptionsByTopic
(
ListSubscriptionsByTopic
, listSubscriptionsByTopic
, lsbtNextToken
, lsbtTopicArn
, ListSubscriptionsByTopicResponse
, listSubscriptionsByTopicResponse
, lsbtrNextToken
, lsbtrSubscriptions
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.SNS.Types
import qualified GHC.Exts
data ListSubscriptionsByTopic = ListSubscriptionsByTopic
{ _lsbtNextToken :: Maybe Text
, _lsbtTopicArn :: Text
} deriving (Eq, Ord, Read, Show)
listSubscriptionsByTopic :: Text
-> ListSubscriptionsByTopic
listSubscriptionsByTopic p1 = ListSubscriptionsByTopic
{ _lsbtTopicArn = p1
, _lsbtNextToken = Nothing
}
lsbtNextToken :: Lens' ListSubscriptionsByTopic (Maybe Text)
lsbtNextToken = lens _lsbtNextToken (\s a -> s { _lsbtNextToken = a })
lsbtTopicArn :: Lens' ListSubscriptionsByTopic Text
lsbtTopicArn = lens _lsbtTopicArn (\s a -> s { _lsbtTopicArn = a })
data ListSubscriptionsByTopicResponse = ListSubscriptionsByTopicResponse
{ _lsbtrNextToken :: Maybe Text
, _lsbtrSubscriptions :: List "member" Subscription
} deriving (Eq, Read, Show)
listSubscriptionsByTopicResponse :: ListSubscriptionsByTopicResponse
listSubscriptionsByTopicResponse = ListSubscriptionsByTopicResponse
{ _lsbtrSubscriptions = mempty
, _lsbtrNextToken = Nothing
}
lsbtrNextToken :: Lens' ListSubscriptionsByTopicResponse (Maybe Text)
lsbtrNextToken = lens _lsbtrNextToken (\s a -> s { _lsbtrNextToken = a })
lsbtrSubscriptions :: Lens' ListSubscriptionsByTopicResponse [Subscription]
lsbtrSubscriptions =
lens _lsbtrSubscriptions (\s a -> s { _lsbtrSubscriptions = a })
. _List
instance ToPath ListSubscriptionsByTopic where
toPath = const "/"
instance ToQuery ListSubscriptionsByTopic where
toQuery ListSubscriptionsByTopic{..} = mconcat
[ "NextToken" =? _lsbtNextToken
, "TopicArn" =? _lsbtTopicArn
]
instance ToHeaders ListSubscriptionsByTopic
instance AWSRequest ListSubscriptionsByTopic where
type Sv ListSubscriptionsByTopic = SNS
type Rs ListSubscriptionsByTopic = ListSubscriptionsByTopicResponse
request = post "ListSubscriptionsByTopic"
response = xmlResponse
instance FromXML ListSubscriptionsByTopicResponse where
parseXML = withElement "ListSubscriptionsByTopicResult" $ \x -> ListSubscriptionsByTopicResponse
<$> x .@? "NextToken"
<*> x .@? "Subscriptions" .!@ mempty
instance AWSPager ListSubscriptionsByTopic where
page rq rs
| stop (rs ^. lsbtrNextToken) = Nothing
| otherwise = (\x -> rq & lsbtNextToken ?~ x)
<$> (rs ^. lsbtrNextToken)