Skip to content

Commit 2f63c3c

Browse files
authored
Merge pull request #2636 from dhermes/logging-iterators-1
Converting Logging client->list_entries to iterator.
2 parents 600ac91 + 75f7c68 commit 2f63c3c

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

packages/google-cloud-core/google/cloud/iterator.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ class HTTPIterator(Iterator):
298298
_PAGE_TOKEN = 'pageToken'
299299
_MAX_RESULTS = 'maxResults'
300300
_RESERVED_PARAMS = frozenset([_PAGE_TOKEN, _MAX_RESULTS])
301+
_HTTP_METHOD = 'GET'
301302

302303
def __init__(self, client, path, item_to_value,
303304
items_key=DEFAULT_ITEMS_KEY,
@@ -378,9 +379,19 @@ def _get_next_page_response(self):
378379
:rtype: dict
379380
:returns: The parsed JSON response of the next page's contents.
380381
"""
381-
return self.client.connection.api_request(
382-
method='GET', path=self.path,
383-
query_params=self._get_query_params())
382+
params = self._get_query_params()
383+
if self._HTTP_METHOD == 'GET':
384+
return self.client.connection.api_request(
385+
method=self._HTTP_METHOD,
386+
path=self.path,
387+
query_params=params)
388+
elif self._HTTP_METHOD == 'POST':
389+
return self.client.connection.api_request(
390+
method=self._HTTP_METHOD,
391+
path=self.path,
392+
data=params)
393+
else:
394+
raise ValueError('Unexpected HTTP method', self._HTTP_METHOD)
384395

385396

386397
class GAXIterator(Iterator):

packages/google-cloud-core/unit_tests/test_iterator.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,32 @@ def test__get_next_page_response_new_no_token_in_response(self):
436436
self.assertEqual(kw['path'], path)
437437
self.assertEqual(kw['query_params'], {})
438438

439+
def test__get_next_page_response_with_post(self):
440+
path = '/foo'
441+
returned = {'green': 'eggs', 'ham': 55}
442+
connection = _Connection(returned)
443+
client = _Client(connection)
444+
iterator = self._makeOne(client, path, None)
445+
iterator._HTTP_METHOD = 'POST'
446+
response = iterator._get_next_page_response()
447+
self.assertEqual(response, returned)
448+
449+
self.assertEqual(len(connection._requested), 1)
450+
called_kwargs = connection._requested[0]
451+
self.assertEqual(called_kwargs, {
452+
'method': iterator._HTTP_METHOD,
453+
'path': path,
454+
'data': {},
455+
})
456+
457+
def test__get_next_page_bad_http_method(self):
458+
path = '/foo'
459+
client = _Client(None)
460+
iterator = self._makeOne(client, path, None)
461+
iterator._HTTP_METHOD = 'NOT-A-VERB'
462+
with self.assertRaises(ValueError):
463+
iterator._get_next_page_response()
464+
439465

440466
class TestGAXIterator(unittest.TestCase):
441467

0 commit comments

Comments
 (0)