diff --git a/src/cal_tools/calcat_interface2.py b/src/cal_tools/calcat_interface2.py index 5c8b64de498cf542eee7e1b63fbd62a8cb899e7e..d312f5bef2bfb97f0cf75f1a41c475a4c332ab89 100644 --- a/src/cal_tools/calcat_interface2.py +++ b/src/cal_tools/calcat_interface2.py @@ -61,6 +61,7 @@ class CalCatAPIClient: return dt def get_request(self, relative_url, params=None, headers=None, **kwargs): + """Make a GET request, return the HTTP response object""" # Base URL may include e.g. '/api/'. This is a prefix for all URLs; # even if they look like an absolute path. url = urljoin(self.base_api_url, relative_url.lstrip("/")) @@ -85,26 +86,31 @@ class CalCatAPIClient: if resp.content == b"": return None else: - res = json.loads(resp.content.decode("utf-8")) - pagination_header_fields = [ - "X-Total-Pages", - "X-Count-Per-Page", - "X-Current-Page", - "X-Total-Count", - ] - pagination_info = { - k[2:].lower().replace("-", "_"): int(resp.headers[k]) - for k in pagination_header_fields - if k in resp.headers - } - if pagination_info: - res[".pages"] = pagination_info - return res + return json.loads(resp.content.decode("utf-8")) def get(self, relative_url, params=None, **kwargs): + """Make a GET request, return response content from JSON""" resp = self.get_request(relative_url, params, **kwargs) return self._parse_response(resp) + _pagination_headers = ( + "X-Total-Pages", + "X-Count-Per-Page", + "X-Current-Page", + "X-Total-Count", + ) + + def get_paged(self, relative_url, params=None, **kwargs): + """Make a GET request, return response content & pagination info""" + resp = self.get_request(relative_url, params, **kwargs) + content = self._parse_response(resp) + pagination_info = { + k[2:].lower().replace("-", "_"): int(resp.headers[k]) + for k in self._pagination_headers + if k in resp.headers + } + return content, pagination_info + global_client = None