diff --git a/swh/lister/gitlab/lister.py b/swh/lister/gitlab/lister.py index ac3cb31..3824b23 100644 --- a/swh/lister/gitlab/lister.py +++ b/swh/lister/gitlab/lister.py @@ -94,13 +94,16 @@ class GitLabLister(PageByPageHttpLister): return True, delay return False, 0 + def _get_int(self, headers, key): + _val = headers.get(key) + if _val: + return int(_val) + def get_next_target_from_response(self, response): """Determine the next page identifier. """ - _next = utils.get(response.headers, ['X-Next-Page', 'x-next-page']) - if _next: - return int(_next) + return self._get_int(response.headers, 'x-next-page') def get_pages_information(self): """Determine pages information. @@ -108,16 +111,9 @@ class GitLabLister(PageByPageHttpLister): """ response = self.transport_head(identifier=1) h = response.headers - total = utils.get(h, ['X-Total', 'x-total']) - total_pages = utils.get(h, ['X-Total-Pages', 'x-total-pages']) - per_page = utils.get(h, ['X-Per-Page', 'x-per-page']) - if total is not None: - total = int(total) - if total_pages is not None: - total_pages = int(total_pages) - if per_page is not None: - per_page = int(per_page) - return total, total_pages, per_page + return (self._get_int(h, 'x-total'), + self._get_int(h, 'x-total-pages'), + self._get_int('x-per-page')) def transport_response_simplified(self, response): repos = response.json() diff --git a/swh/lister/tests/test_utils.py b/swh/lister/tests/test_utils.py index 3bd8939..978127a 100644 --- a/swh/lister/tests/test_utils.py +++ b/swh/lister/tests/test_utils.py @@ -11,45 +11,6 @@ from swh.lister import utils class UtilsTest(unittest.TestCase): - @istest - def get(self): - data = { - 'X-Next-Page': None, - 'x-next-page': 1, - } - actual_value = utils.get(data, ['X-Next-Page', 'x-next-page']) - - self.assertEqual(actual_value, 1) - - data = { - 'X-Next-Page': 10, - 'x-next-page': 1, - } - actual_value = utils.get(data, ['X-Next-Page', 'x-next-page']) - - self.assertEqual(actual_value, 10) - - data = { - 'x-next-page': 100, - } - actual_value = utils.get(data, ['X-Next-Page', 'x-next-page']) - - self.assertEqual(actual_value, 100) - - @istest - def get_empty(self): - self.assertIsNone(utils.get({}, [])) - self.assertIsNone(utils.get({'a': 1}, ['b'])) - self.assertIsNone(utils.get({'b': 2}, [])) - self.assertIsNone(utils.get({'b': 2}, [])) - - @istest - def get_errors(self): - with self.assertRaises(TypeError): - self.assertIsNone(utils.get({}, None)) - with self.assertRaises(AttributeError): - self.assertIsNone(utils.get(None, ['a'])) - @istest def split_range(self): actual_ranges = list(utils.split_range(14, 5)) diff --git a/swh/lister/utils.py b/swh/lister/utils.py index fba2d23..68e8b82 100644 --- a/swh/lister/utils.py +++ b/swh/lister/utils.py @@ -3,17 +3,6 @@ # See top-level LICENSE file for more information -def get(d, keys): - """Given a dict, lookup in order for keys with values not None. - - """ - for key in keys: - v = d.get(key) - if v is not None: - return v - return None - - def split_range(total_pages, nb_pages): prev_index = None for index in range(0, total_pages, nb_pages):