More extensive request logging - toot - Unnamed repository; edit this file 'des… | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit ed20c7fded6ba5dfb7124bf223d9bf9b3e213ab3 | |
parent c3bafd56d82823a803a8abd040daf4f7d0f8aa8b | |
Author: Ivan Habunek <[email protected]> | |
Date: Mon, 17 Apr 2017 11:10:57 +0200 | |
More extensive request logging | |
Diffstat: | |
toot/api.py | 62 ++++++++++++++++++++----------- | |
1 file changed, 40 insertions(+), 22 deletions(-) | |
--- | |
diff --git a/toot/api.py b/toot/api.py | |
@@ -20,12 +20,19 @@ class NotFoundError(ApiError): | |
pass | |
-def _log_request(request, prepared_request): | |
+def _log_request(request): | |
logger.debug(">>> \033[32m{} {}\033[0m".format(request.method, request.url… | |
- logger.debug(">>> DATA: \033[33m{}\033[0m".format(request.data)) | |
- logger.debug(">>> FILES: \033[33m{}\033[0m".format(request.files)) | |
logger.debug(">>> HEADERS: \033[33m{}\033[0m".format(request.headers)) | |
+ if request.data: | |
+ logger.debug(">>> DATA: \033[33m{}\033[0m".format(request.data)) | |
+ | |
+ if request.files: | |
+ logger.debug(">>> FILES: \033[33m{}\033[0m".format(request.files)) | |
+ | |
+ if request.params: | |
+ logger.debug(">>> PARAMS: \033[33m{}\033[0m".format(request.params)) | |
+ | |
def _log_response(response): | |
if response.ok: | |
@@ -36,14 +43,34 @@ def _log_response(response): | |
logger.debug("<<< \033[31m{}\033[0m".format(response.content)) | |
+def _process_response(response): | |
+ _log_response(response) | |
+ | |
+ if not response.ok: | |
+ try: | |
+ error = response.json()['error'] | |
+ except: | |
+ error = "Unknown error" | |
+ | |
+ if response.status_code == 404: | |
+ raise NotFoundError(error) | |
+ | |
+ raise ApiError(error) | |
+ | |
+ response.raise_for_status() | |
+ | |
+ return response.json() | |
+ | |
+ | |
def _get(app, user, url, params=None): | |
url = app.base_url + url | |
headers = {"Authorization": "Bearer " + user.access_token} | |
+ _log_request(Request('GET', url, headers, params=params)) | |
+ | |
response = requests.get(url, params, headers=headers) | |
- response.raise_for_status() | |
- return response.json() | |
+ return _process_response(response) | |
def _post(app, user, url, data=None, files=None): | |
@@ -54,26 +81,11 @@ def _post(app, user, url, data=None, files=None): | |
request = Request('POST', url, headers, files, data) | |
prepared_request = request.prepare() | |
- _log_request(request, prepared_request) | |
+ _log_request(request) | |
response = session.send(prepared_request) | |
- _log_response(response) | |
- | |
- if not response.ok: | |
- try: | |
- error = response.json()['error'] | |
- except: | |
- error = "Unknown error" | |
- | |
- if response.status_code == 404: | |
- raise NotFoundError(error) | |
- | |
- raise ApiError(error) | |
- | |
- response.raise_for_status() | |
- | |
- return response.json() | |
+ return _process_response(response) | |
def create_app(base_url): | |
@@ -140,6 +152,12 @@ def search(app, user, query, resolve): | |
}) | |
+def search_accounts(app, user, query): | |
+ return _get(app, user, '/api/v1/accounts/search', { | |
+ 'q': query, | |
+ }) | |
+ | |
+ | |
def follow(app, user, account): | |
url = '/api/v1/accounts/%d/follow' % account | |