@@ -9,6 +9,7 @@ class Pagination(object):
99
1010 def __init__ (self , config = None , skip_key = None , limit_key = None , total_key = None , next_page_key = None ):
1111 self .next_page_key = None
12+ self .next_page_url_base = None
1213 self .skip_key = None
1314 self .limit_key = None
1415 self .total_key = None
@@ -26,13 +27,16 @@ def __init__(self, config=None, skip_key=None, limit_key=None, total_key=None, n
2627 self .params_must_be_blanked = False
2728 self .data_is_list = None
2829
29- def configure_paging (self , config = None , skip_key = None , limit_key = None , total_key = None , next_page_key = None , url = None , pagination_type = "na" ):
30+ def configure_paging (self , config = None , skip_key = None , limit_key = None , total_key = None , next_page_key = None , next_page_url_base = None , url = None , pagination_type = "na" ):
3031 config = {} if config is None else config
3132 self .limit_key = config .get ("limit_key" , limit_key )
3233 self .pagination_type = config .get ("pagination_type" , pagination_type )
3334 if self .pagination_type == "next_page" :
3435 self .next_page_key = config .get ("next_page_key" , next_page_key )
3536 self .next_page_key = None if self .next_page_key == '' else self .next_page_key
37+ if next_page_url_base :
38+ next_page_url_base = next_page_url_base .strip ('/' )
39+ self .next_page_url_base = next_page_url_base
3640 elif self .pagination_type in ["offset" , "page" ]:
3741 self .skip_key = config .get ("skip_key" , skip_key )
3842
@@ -81,7 +85,11 @@ def update_next_page(self, data, response_links=None):
8185 else :
8286 batch_size = 1
8387 if self .next_page_key :
84- self .next_page_url = extract_key_using_json_path (data , self .next_page_key )
88+ next_page_path = extract_key_using_json_path (data , self .next_page_key )
89+ if self .next_page_url_base and next_page_path :
90+ self .next_page_url = "/" .join ([self .next_page_url_base , next_page_path ])
91+ else :
92+ self .next_page_url = next_page_path
8593 if self .skip_key :
8694 self .skip = data .get (self .skip_key )
8795 if self .limit_key :
0 commit comments