Skip to content

Commit 529848d

Browse files
author
David Moreau Simard
authored
Merge pull request #7 from marnikow/master
Added the option to disable pagination and added url paramaters
2 parents 3169e02 + 4e115d7 commit 529848d

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

cachetclient/cachet.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,11 @@ def get(self, id=None, **kwargs):
117117
https://docs.cachethq.io/docs/get-a-component
118118
"""
119119
if id is not None:
120-
return self._get('components/%s' % id)
120+
return self._get('components/%s' % id, data=kwargs)
121+
elif 'params' in kwargs:
122+
data = dict(kwargs)
123+
params = data.pop('params')
124+
return self._get('components', data=data, params=params)
121125
else:
122126
return self._get('components', data=kwargs)
123127

@@ -166,6 +170,10 @@ def get(self, id=None, **kwargs):
166170
"""
167171
if id is not None:
168172
return self._get('components/groups/%s' % id, data=kwargs)
173+
elif 'params' in kwargs:
174+
data = dict(kwargs)
175+
params = data.pop('params')
176+
return self._get('components/groups', data=data, params=params)
169177
else:
170178
return self._get('components/groups', data=kwargs)
171179

@@ -211,6 +219,10 @@ def get(self, id=None, **kwargs):
211219
"""
212220
if id is not None:
213221
return self._get('incidents/%s' % id, data=kwargs)
222+
elif 'params' in kwargs:
223+
data = dict(kwargs)
224+
params = data.pop('params')
225+
return self._get('incidents', data=data, params=params)
214226
else:
215227
return self._get('incidents', data=kwargs)
216228

cachetclient/client.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def __init__(self, **kwargs):
3131
self.api_token = kwargs.get('api_token', None)
3232
self.timeout = kwargs.get('timeout', None)
3333
self.verify = kwargs.get('verify', None)
34+
self.pagination = kwargs.get('pagination', False)
3435

3536
self.http = requests.Session()
3637

@@ -61,6 +62,15 @@ def _request(self, url, method, **kwargs):
6162
except ValueError:
6263
body = None
6364

65+
if not self.pagination:
66+
if body is not None and 'meta' in body and 'pagination' in body['meta']:
67+
page_info = body['meta']['pagination']
68+
if page_info['total'] > page_info['count']:
69+
# There are items not displayed in our result
70+
kwargs.setdefault('params', kwargs.get('params', {}))
71+
kwargs['params']['per_page'] = page_info['total']
72+
return self._request(url, method, **kwargs)
73+
6474
return resp, body
6575

6676
def _delete(self, path, **kwargs):
@@ -70,7 +80,7 @@ def _delete(self, path, **kwargs):
7080

7181
def _get(self, path, **kwargs):
7282
url = "%s/%s" % (self.endpoint, path)
73-
reponse, data = self._request(url, 'GET', **kwargs)
83+
response, data = self._request(url, 'GET', **kwargs)
7484
return json.dumps(data, indent=2)
7585

7686
def _post(self, path, **kwargs):

0 commit comments

Comments
 (0)