adding pagination to accounts, deployed at 0.0.14

get_list_of_videos
Mark Cotton 2023-08-17 16:28:25 -05:00
parent 9c492b9566
commit 2bfee316c4
1 changed files with 39 additions and 29 deletions

View File

@ -1,5 +1,5 @@
""" Python client for Eagle Eye Networks APIv3 """ """ Python client for Eagle Eye Networks APIv3 """
version = "0.0.13" version = "0.0.14"
__version__ = version __version__ = version
@ -427,39 +427,49 @@ class EagleEyev3():
Returns: Returns:
dict: Dictionary containing the success status, response HTTP status code, and data. dict: Dictionary containing the success status, response HTTP status code, and data.
""" """
nextPageToken = None
# emulating a do while toop in order to handle pagination, remember to break out of this loop
while True:
if nextPageToken:
url = f"https://{self.user_base_url}/api/v3.0/accounts?pageToken={nextPageToken}"
else:
url = f"https://{self.user_base_url}/api/v3.0/accounts" url = f"https://{self.user_base_url}/api/v3.0/accounts"
headers = { headers = {
"Authorization": f"Bearer {self.access_token}", "Authorization": f"Bearer {self.access_token}",
"Accept": "application/json" "Accept": "application/json"
} }
try: response = self._make_get_request(url=url, headers=headers, timeout='list_of_accounts')
response = requests.get(url, headers=headers, timeout=self._get_timeout_values('list_of_accounts'))
if response:
response_json = response.json() response_json = response.json()
logging.info(f"{response.status_code} in get_list_of_accounts") logging.info(f"{response.status_code} in get_list_of_accounts")
except requests.exceptions.Timeout: else:
logging.warn(f"timeout expired for get_list_of_accounts()")
return { return {
"success": False, "success": False,
"response_http_status": 0, "response_http_status": 0,
"data": None "data": None
} }
except requests.exceptions.RequestException as e:
logging.warn(e)
return {
"success": False,
"response_http_status": 0,
"data": None
}
if response.status_code == 200: if response.status_code == 200:
success = True success = True
self.accounts = [i for i in response_json['results'] if i not in self.accounts] + self.accounts self.accounts = [i for i in response_json['results'] if i not in self.accounts] + self.accounts
if 'nextPageToken' in response_json and len(response_json['nextPageToken']) > 0:
nextPageToken = response_json['nextPageToken']
else:
break
else: else:
success = False success = False
break
return { return {
"success": success, "success": success,
@ -544,7 +554,7 @@ class EagleEyev3():
return response return response
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
logging.warn(f"timeout expired get_list_of_cameras()") logging.warn(f"timeout expired _make_get_request {timeout}")
return None return None
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e: