Permalink
34 lines (30 sloc)
1.25 KB
| import requests | |
| from .models import Board | |
| class WekanApi: | |
| def api_call(self, url, data=None, authed=True): | |
| if data is None: | |
| api_response = self.session.get( | |
| "{}{}".format(self.api_url, url), | |
| headers={"Authorization": "Bearer {}".format(self.token)}, | |
| proxies=self.proxies | |
| ) | |
| else: | |
| api_response = self.session.post( | |
| "{}{}".format(self.api_url, url), | |
| data=data, | |
| headers={"Authorization": "Bearer {}".format(self.token)} if authed else {}, | |
| proxies=self.proxies | |
| ) | |
| return api_response.json() | |
| def __init__(self, api_url, credentials, proxies=None): | |
| if proxies is None: | |
| proxies = {} | |
| self.session = requests.Session() | |
| self.proxies = proxies | |
| self.api_url = api_url | |
| api_login = self.api_call("/users/login", data=credentials, authed=False) | |
| self.token = api_login["token"] | |
| self.user_id = api_login["id"] | |
| def get_user_boards(self, filter=''): | |
| boards_data = self.api_call("/api/users/{}/boards".format(self.user_id)) | |
| return [Board(self, board_data) for board_data in boards_data if filter in board_data["title"]] |