Skip to content

Commit 3c51694

Browse files
committed
fixes the integration of pagedResponse for all types of pagination and refactors the apply_metadata method and related variables
1 parent 03d10a7 commit 3c51694

6 files changed

Lines changed: 24 additions & 26 deletions

File tree

apimatic_core/pagination/configuration/cursor_pagination.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
class CursorPagination(PaginationStrategy):
66

7-
def __init__(self, output, input_, metadata_creator):
8-
super().__init__(metadata_creator)
7+
def __init__(self, output, input_, metadata_wrapper):
8+
super().__init__(metadata_wrapper)
99

1010
if input_ is None:
1111
raise ValueError("Input pointer for cursor based pagination cannot be None")
@@ -35,8 +35,8 @@ def apply(self, paginated_data):
3535

3636
return self.get_updated_request_builder(request_builder, self._input, self._cursor_value)
3737

38-
def apply_metadata(self, page):
39-
return self._metadata_creator(self._cursor_value, page)
38+
def apply_metadata_wrapper(self, paged_response):
39+
return self._metadata_wrapper(self._cursor_value, paged_response)
4040

4141
@staticmethod
4242
def _get_initial_cursor_value(request_builder, input_pointer):

apimatic_core/pagination/configuration/link_pagination.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
class LinkPagination(PaginationStrategy):
77
"""Pagination manager implementation for link-based pagination."""
88

9-
def __init__(self, next_link_pointer, metadata_creator):
10-
super().__init__(metadata_creator)
9+
def __init__(self, next_link_pointer, metadata_wrapper):
10+
super().__init__(metadata_wrapper)
1111

1212
if next_link_pointer is None:
1313
raise ValueError("Next link pointer for cursor based pagination cannot be None")
@@ -39,5 +39,5 @@ def apply(self, paginated_data):
3939
query_params=updated_query_params
4040
)
4141

42-
def apply_metadata(self, page):
43-
return self._metadata_creator(self._next_link, page)
42+
def apply_metadata_wrapper(self, paged_response):
43+
return self._metadata_wrapper(self._next_link, paged_response)

apimatic_core/pagination/configuration/offset_pagination.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
class OffsetPagination(PaginationStrategy):
77
"""Pagination manager implementation for offset-based pagination."""
88

9-
def __init__(self, input_, metadata_creator):
9+
def __init__(self, input_, metadata_wrapper):
1010
"""
1111
Initializes a new instance of the OffsetPagination class.
1212
1313
Args:
1414
input_ (str): JSON pointer to the request field representing the offset.
1515
"""
16-
super().__init__(metadata_creator)
16+
super().__init__(metadata_wrapper)
1717

1818
if input_ is None:
1919
raise ValueError("Input pointer for offset based pagination cannot be None")
@@ -34,8 +34,8 @@ def apply(self, paginated_data):
3434

3535
return self.get_updated_request_builder(request_builder, self._input, self._offset)
3636

37-
def apply_metadata(self, page):
38-
return self._metadata_creator(self._offset, page)
37+
def apply_metadata_wrapper(self, page_response):
38+
return self._metadata_wrapper(self._offset, page_response)
3939

4040
def _get_initial_offset(self, request_builder):
4141
path_prefix, field_path = ApiHelper.split_into_parts(self._input)

apimatic_core/pagination/configuration/page_pagination.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
class PagePagination(PaginationStrategy):
55

6-
def __init__(self, input_, metadata_creator):
7-
super().__init__(metadata_creator)
6+
def __init__(self, input_, metadata_wrapper):
7+
super().__init__(metadata_wrapper)
88

99
if input_ is None:
1010
raise ValueError("Input pointer for page based pagination cannot be None")
@@ -24,8 +24,8 @@ def apply(self, paginated_data):
2424

2525
return self.get_updated_request_builder(request_builder, self._input, self._page_number)
2626

27-
def apply_metadata(self, page):
28-
return self._metadata_creator(self._page_number, page)
27+
def apply_metadata_wrapper(self, paged_response):
28+
return self._metadata_wrapper(self._page_number, paged_response)
2929

3030
def _get_initial_page_offset(self, request_builder):
3131
path_prefix, field_path = ApiHelper.split_into_parts(self._input)

apimatic_core/pagination/paginated_data.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def __next__(self):
4949
return item
5050

5151
self._paged_response = self._fetch_next_page()
52-
self._items = self._paginated_items_converter(self._paged_response.data)
52+
self._items = self._paginated_items_converter(self._paged_response.body)
5353
if not self._items:
5454
raise StopIteration
5555
self._page_size, self._current_index = len(self._items), 0
@@ -66,9 +66,7 @@ def pages(self):
6666

6767
while True:
6868
paginated_data._paged_response = paginated_data._fetch_next_page()
69-
if not paginated_data._paged_response:
70-
break
71-
paginated_data._items = self._paginated_items_converter(paginated_data._paged_response)
69+
paginated_data._items = self._paginated_items_converter(paginated_data._paged_response.body)
7270
if not paginated_data._items:
7371
break
7472
paginated_data._page_size = len(paginated_data._items)
@@ -83,7 +81,7 @@ def _fetch_next_page(self):
8381
response = self._api_call.clone(
8482
global_configuration=self._global_configuration, request_builder=request_builder
8583
).execute()
86-
return pagination_strategy.apply_metadata(response)
84+
return pagination_strategy.apply_metadata_wrapper(response)
8785
except Exception as ex:
8886
raise ex
8987
return []

apimatic_core/pagination/pagination_strategy.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ class PaginationStrategy(ABC):
1111
to provide specific pagination management logic for paginated API responses.
1212
"""
1313

14-
def __init__(self, metadata_creator):
15-
if metadata_creator is None:
16-
raise ValueError("Metadata creator for offset based pagination cannot be None")
14+
def __init__(self, metadata_wrapper):
15+
if metadata_wrapper is None:
16+
raise ValueError("Metadata wrapper for the pagination cannot be None")
1717

18-
self._metadata_creator = metadata_creator
18+
self._metadata_wrapper = metadata_wrapper
1919

2020
@abstractmethod
2121
def apply(self, paginated_data):
@@ -31,7 +31,7 @@ def apply(self, paginated_data):
3131
...
3232

3333
@abstractmethod
34-
def apply_metadata(self, page):
34+
def apply_metadata_wrapper(self, paged_response):
3535
...
3636

3737
@staticmethod

0 commit comments

Comments
 (0)