diff --git a/__init__.py b/__init__.py index acf7710..aef5d17 100644 --- a/__init__.py +++ b/__init__.py @@ -1,5 +1,4 @@ import requests -import json REFRESH_URL = 'https://openapi-login.planday.com/connect/token' SHIFTS_URL= "https://openapi.planday.com/scheduling/v1/shifts" @@ -28,6 +27,21 @@ class Planday(object): response = requests.get(url, headers=self.get_headers(), params=params) return response + def __get_json(self, url, params={}): + response = self.__get(url, params=params) + if response.status_code == 200: + json = response.json() + if 'paging' not in json: + return json['data'] + paging = json['paging'] + if 'limit' in paging and 'total' in paging and \ + paging['limit'] + (paging['offset'] if 'offset' in paging else 0) < paging['total']: + params['offset'] = paging['limit'] + (paging['offset'] if 'offset' in paging else 0) + return json['data'] + self.__get_json(url, params) + return json['data'] + print(response.json()) + raise response + def get_headers(self): return {'X-ClientId': self.client_id, 'Authorization': 'Bearer {0}'.format(self.access_token)} @@ -37,23 +51,11 @@ class Planday(object): params['to'] = to if from_ != None: params['from'] = from_ - response = self.__get(SHIFTS_URL, params=params) - if response.status_code == 200: - return response.json() - else: - print("Error getting shifts", response.status_code, response.text) + return self.__get_json(SHIFTS_URL, params=params) def get_employee(self, employee_id): url = "https://openapi.planday.com/hr/v1/employees/{0}".format(employee_id) - response = self.__get(url) - if response.status_code == 200: - return response.json() - else: - print("Error getting shifts", response.status_code, response.text) + return self.__get_json(url) def get_employees(self): - response = self.__get("https://openapi.planday.com/hr/v1/employees/") - if response.status_code == 200: - return response.json() - else: - print("Error getting shifts", response.status_code, response.text) + return self.__get_json("https://openapi.planday.com/hr/v1/employees/")