{-# 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.Route53.ListResourceRecordSets
(
listResourceRecordSets
, ListResourceRecordSets
, lrrsStartRecordName
, lrrsStartRecordType
, lrrsStartRecordIdentifier
, lrrsMaxItems
, lrrsHostedZoneId
, listResourceRecordSetsResponse
, ListResourceRecordSetsResponse
, lrrsrsNextRecordType
, lrrsrsNextRecordName
, lrrsrsNextRecordIdentifier
, lrrsrsResponseStatus
, lrrsrsResourceRecordSets
, lrrsrsIsTruncated
, lrrsrsMaxItems
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.Route53.Types
import Network.AWS.Route53.Types.Product
data ListResourceRecordSets = ListResourceRecordSets'
{ _lrrsStartRecordName :: !(Maybe Text)
, _lrrsStartRecordType :: !(Maybe RecordType)
, _lrrsStartRecordIdentifier :: !(Maybe Text)
, _lrrsMaxItems :: !(Maybe Text)
, _lrrsHostedZoneId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listResourceRecordSets
:: Text
-> ListResourceRecordSets
listResourceRecordSets pHostedZoneId_ =
ListResourceRecordSets'
{ _lrrsStartRecordName = Nothing
, _lrrsStartRecordType = Nothing
, _lrrsStartRecordIdentifier = Nothing
, _lrrsMaxItems = Nothing
, _lrrsHostedZoneId = pHostedZoneId_
}
lrrsStartRecordName :: Lens' ListResourceRecordSets (Maybe Text)
lrrsStartRecordName = lens _lrrsStartRecordName (\ s a -> s{_lrrsStartRecordName = a});
lrrsStartRecordType :: Lens' ListResourceRecordSets (Maybe RecordType)
lrrsStartRecordType = lens _lrrsStartRecordType (\ s a -> s{_lrrsStartRecordType = a});
lrrsStartRecordIdentifier :: Lens' ListResourceRecordSets (Maybe Text)
lrrsStartRecordIdentifier = lens _lrrsStartRecordIdentifier (\ s a -> s{_lrrsStartRecordIdentifier = a});
lrrsMaxItems :: Lens' ListResourceRecordSets (Maybe Text)
lrrsMaxItems = lens _lrrsMaxItems (\ s a -> s{_lrrsMaxItems = a});
lrrsHostedZoneId :: Lens' ListResourceRecordSets Text
lrrsHostedZoneId = lens _lrrsHostedZoneId (\ s a -> s{_lrrsHostedZoneId = a});
instance AWSPager ListResourceRecordSets where
page rq rs
| stop (rs ^. lrrsrsIsTruncated) = Nothing
| isNothing (rs ^. lrrsrsNextRecordName) &&
isNothing (rs ^. lrrsrsNextRecordType)
&& isNothing (rs ^. lrrsrsNextRecordIdentifier)
= Nothing
| otherwise =
Just $ rq &
lrrsStartRecordName .~ rs ^. lrrsrsNextRecordName
& lrrsStartRecordType .~ rs ^. lrrsrsNextRecordType
&
lrrsStartRecordIdentifier .~
rs ^. lrrsrsNextRecordIdentifier
instance AWSRequest ListResourceRecordSets where
type Rs ListResourceRecordSets =
ListResourceRecordSetsResponse
request = get route53
response
= receiveXML
(\ s h x ->
ListResourceRecordSetsResponse' <$>
(x .@? "NextRecordType") <*> (x .@? "NextRecordName")
<*> (x .@? "NextRecordIdentifier")
<*> (pure (fromEnum s))
<*>
(x .@? "ResourceRecordSets" .!@ mempty >>=
parseXMLList "ResourceRecordSet")
<*> (x .@ "IsTruncated")
<*> (x .@ "MaxItems"))
instance Hashable ListResourceRecordSets
instance NFData ListResourceRecordSets
instance ToHeaders ListResourceRecordSets where
toHeaders = const mempty
instance ToPath ListResourceRecordSets where
toPath ListResourceRecordSets'{..}
= mconcat
["/2013-04-01/hostedzone/", toBS _lrrsHostedZoneId,
"/rrset"]
instance ToQuery ListResourceRecordSets where
toQuery ListResourceRecordSets'{..}
= mconcat
["name" =: _lrrsStartRecordName,
"type" =: _lrrsStartRecordType,
"identifier" =: _lrrsStartRecordIdentifier,
"maxitems" =: _lrrsMaxItems]
data ListResourceRecordSetsResponse = ListResourceRecordSetsResponse'
{ _lrrsrsNextRecordType :: !(Maybe RecordType)
, _lrrsrsNextRecordName :: !(Maybe Text)
, _lrrsrsNextRecordIdentifier :: !(Maybe Text)
, _lrrsrsResponseStatus :: !Int
, _lrrsrsResourceRecordSets :: ![ResourceRecordSet]
, _lrrsrsIsTruncated :: !Bool
, _lrrsrsMaxItems :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listResourceRecordSetsResponse
:: Int
-> Bool
-> Text
-> ListResourceRecordSetsResponse
listResourceRecordSetsResponse pResponseStatus_ pIsTruncated_ pMaxItems_ =
ListResourceRecordSetsResponse'
{ _lrrsrsNextRecordType = Nothing
, _lrrsrsNextRecordName = Nothing
, _lrrsrsNextRecordIdentifier = Nothing
, _lrrsrsResponseStatus = pResponseStatus_
, _lrrsrsResourceRecordSets = mempty
, _lrrsrsIsTruncated = pIsTruncated_
, _lrrsrsMaxItems = pMaxItems_
}
lrrsrsNextRecordType :: Lens' ListResourceRecordSetsResponse (Maybe RecordType)
lrrsrsNextRecordType = lens _lrrsrsNextRecordType (\ s a -> s{_lrrsrsNextRecordType = a});
lrrsrsNextRecordName :: Lens' ListResourceRecordSetsResponse (Maybe Text)
lrrsrsNextRecordName = lens _lrrsrsNextRecordName (\ s a -> s{_lrrsrsNextRecordName = a});
lrrsrsNextRecordIdentifier :: Lens' ListResourceRecordSetsResponse (Maybe Text)
lrrsrsNextRecordIdentifier = lens _lrrsrsNextRecordIdentifier (\ s a -> s{_lrrsrsNextRecordIdentifier = a});
lrrsrsResponseStatus :: Lens' ListResourceRecordSetsResponse Int
lrrsrsResponseStatus = lens _lrrsrsResponseStatus (\ s a -> s{_lrrsrsResponseStatus = a});
lrrsrsResourceRecordSets :: Lens' ListResourceRecordSetsResponse [ResourceRecordSet]
lrrsrsResourceRecordSets = lens _lrrsrsResourceRecordSets (\ s a -> s{_lrrsrsResourceRecordSets = a}) . _Coerce;
lrrsrsIsTruncated :: Lens' ListResourceRecordSetsResponse Bool
lrrsrsIsTruncated = lens _lrrsrsIsTruncated (\ s a -> s{_lrrsrsIsTruncated = a});
lrrsrsMaxItems :: Lens' ListResourceRecordSetsResponse Text
lrrsrsMaxItems = lens _lrrsrsMaxItems (\ s a -> s{_lrrsrsMaxItems = a});
instance NFData ListResourceRecordSetsResponse