Skip to content

Commit 5da3f25

Browse files
alannix-lwtmac1973
andauthored
fix: pagination updates for the alerts endpoint (#106)
* Updated alerts.get to get paginated results * Proposed changes for the list alerts function. * Removed default limit and added paging data --------- Co-authored-by: Timothy MacDonald <[email protected]>
1 parent ab95e9e commit 5da3f25

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

laceworksdk/api/v2/alerts.py

+32-2
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,18 @@ def __init__(self, session):
2222
def get(self,
2323
start_time=None,
2424
end_time=None,
25+
limit=None,
2526
**request_params):
2627
"""
2728
A method to get Alerts objects.
2829
2930
:param start_time: A "%Y-%m-%dT%H:%M:%SZ" structured timestamp to begin from.
3031
:param end_time: A "%Y-%m-%dT%H:%M:%S%Z" structured timestamp to end at.
32+
:param limit: An integer representing the number of Alerts to return.
3133
:param request_params: Additional request parameters.
3234
(provides support for parameters that may be added in the future)
3335
34-
:return response json
36+
:return: response json
3537
"""
3638

3739
params = self.build_dict_from_items(
@@ -42,7 +44,35 @@ def get(self,
4244

4345
response = self._session.get(self.build_url(), params=params)
4446

45-
return response.json()
47+
return_data = {"data": []}
48+
current_rows = 0
49+
50+
while True:
51+
response_json = response.json()
52+
53+
return_data["paging"] = response_json["paging"]
54+
55+
if limit:
56+
take = limit - current_rows
57+
return_data["data"].extend(response_json["data"][:take])
58+
else:
59+
return_data["data"].extend(response_json["data"])
60+
current_rows = len(return_data["data"])
61+
62+
if limit and current_rows >= limit:
63+
break
64+
65+
try:
66+
next_page = response_json.get("paging", {}).get("urls", {}).get("nextPage")
67+
except Exception:
68+
next_page = None
69+
70+
if next_page:
71+
response = self._session.get(next_page, params=params)
72+
else:
73+
break
74+
75+
return return_data
4676

4777
def get_details(self,
4878
id,

0 commit comments

Comments
 (0)