1313# limitations under the License.
1414
1515"""Define API ManagedZones."""
16+
1617import six
1718
1819from google .cloud ._helpers import _rfc3339_to_datetime
1920from google .cloud .exceptions import NotFound
2021from google .cloud .dns .changes import Changes
2122from google .cloud .dns .resource_record_set import ResourceRecordSet
23+ from google .cloud .iterator import Iterator
2224
2325
2426class ManagedZone (object ):
@@ -330,29 +332,19 @@ def list_resource_record_sets(self, max_results=None, page_token=None,
330332 :param client: the client to use. If not passed, falls back to the
331333 ``client`` stored on the current zone.
332334
333- :rtype: tuple, (list, str)
334- :returns: list of
335- :class:`~.resource_record_set.ResourceRecordSet`,
336- plus a "next page token" string: if the token is not None,
337- indicates that more zones can be retrieved with another
338- call (pass that value as ``page_token``).
335+ :rtype: :class:`~google.cloud.iterator.Iterator`
336+ :returns: Iterator of :class:`~.resource_record_set.ResourceRecordSet`
337+ belonging to this zone.
339338 """
340- params = {}
341-
342- if max_results is not None :
343- params ['maxResults' ] = max_results
344-
345- if page_token is not None :
346- params ['pageToken' ] = page_token
347-
339+ client = self ._require_client (client )
348340 path = '/projects/%s/managedZones/%s/rrsets' % (
349341 self .project , self .name )
350- client = self . _require_client ( client )
351- conn = client . connection
352- resp = conn . api_request ( method = 'GET' , path = path , query_params = params )
353- zones = [ ResourceRecordSet . from_api_repr ( resource , self )
354- for resource in resp [ 'rrsets' ]]
355- return zones , resp . get ( 'nextPageToken' )
342+ iterator = Iterator (
343+ client = client , path = path , items_key = 'rrsets' ,
344+ item_to_value = _item_to_resource_record_set ,
345+ page_token = page_token , max_results = max_results )
346+ iterator . zone = self
347+ return iterator
356348
357349 def list_changes (self , max_results = None , page_token = None , client = None ):
358350 """List change sets for this zone.
@@ -373,26 +365,46 @@ def list_changes(self, max_results=None, page_token=None, client=None):
373365 :param client: the client to use. If not passed, falls back to the
374366 ``client`` stored on the current zone.
375367
376- :rtype: tuple, (list, str)
377- :returns: list of
378- :class:`~.resource_record_set.ResourceRecordSet`,
379- plus a "next page token" string: if the token is not None,
380- indicates that more zones can be retrieved with another
381- call (pass that value as ``page_token``).
368+ :rtype: :class:`~google.cloud.iterator.Iterator`
369+ :returns: Iterator of :class:`~.changes.Changes`
370+ belonging to this zone.
382371 """
383- params = {}
372+ client = self ._require_client (client )
373+ path = '/projects/%s/managedZones/%s/changes' % (
374+ self .project , self .name )
375+ iterator = Iterator (
376+ client = client , path = path , items_key = 'changes' ,
377+ item_to_value = _item_to_changes ,
378+ page_token = page_token , max_results = max_results )
379+ iterator .zone = self
380+ return iterator
384381
385- if max_results is not None :
386- params ['maxResults' ] = max_results
387382
388- if page_token is not None :
389- params [ 'pageToken' ] = page_token
383+ def _item_to_resource_record_set ( iterator , resource ) :
384+ """Convert a JSON resource record set value to the native object.
390385
391- path = '/projects/%s/managedZones/%s/changes' % (
392- self .project , self .name )
393- client = self ._require_client (client )
394- conn = client .connection
395- resp = conn .api_request (method = 'GET' , path = path , query_params = params )
396- zones = [Changes .from_api_repr (resource , self )
397- for resource in resp ['changes' ]]
398- return zones , resp .get ('nextPageToken' )
386+ :type iterator: :class:`~google.cloud.iterator.Iterator`
387+ :param iterator: The iterator that has retrieved the item.
388+
389+ :type resource: dict
390+ :param resource: An item to be converted to a resource record set.
391+
392+ :rtype: :class:`~.resource_record_set.ResourceRecordSet`
393+ :returns: The next resource record set in the page.
394+ """
395+ return ResourceRecordSet .from_api_repr (resource , iterator .zone )
396+
397+
398+ def _item_to_changes (iterator , resource ):
399+ """Convert a JSON "changes" value to the native object.
400+
401+ :type iterator: :class:`~google.cloud.iterator.Iterator`
402+ :param iterator: The iterator that has retrieved the item.
403+
404+ :type resource: dict
405+ :param resource: An item to be converted to a "changes".
406+
407+ :rtype: :class:`.Changes`
408+ :returns: The next "changes" in the page.
409+ """
410+ return Changes .from_api_repr (resource , iterator .zone )
0 commit comments