More extensive POST request logging - toot - Unnamed repository; edit this file 'description' to name the repository.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit c2625d536fd6fc7a8eba743a006fa42ddd7d99d7
(DIR) parent fd08b3884a1d50957af9f087545ad60518acec2d
(HTM) Author: Ivan Habunek <ivan@habunek.com>
Date: Sat, 15 Apr 2017 11:55:33 +0200
More extensive POST request logging
Diffstat:
toot/__init__.py | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
---
(DIR) diff --git a/toot/__init__.py b/toot/__init__.py
@@ -1,6 +1,8 @@
+import logging
import requests
from collections import namedtuple
+from requests import Request, Session
App = namedtuple('App', ['base_url', 'client_id', 'client_secret'])
User = namedtuple('User', ['username', 'access_token'])
@@ -9,6 +11,21 @@ APP_NAME = 'toot'
DEFAULT_INSTANCE = 'mastodon.social'
+logger = logging.getLogger('toot')
+
+
+def _log_request(request, prepared_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))
+
+
+def _log_response(response):
+ logger.debug("<<< \033[32m{}\033[0m".format(response))
+ logger.debug("<<< \033[33m{}\033[0m".format(response.json()))
+
+
def _get(app, user, url, params=None):
url = app.base_url + url
headers = {"Authorization": "Bearer " + user.access_token}
@@ -23,7 +40,16 @@ def _post(app, user, url, data=None, files=None):
url = app.base_url + url
headers = {"Authorization": "Bearer " + user.access_token}
- response = requests.post(url, data, files=files, headers=headers)
+ session = Session()
+ request = Request('POST', url, headers, files, data)
+ prepared_request = request.prepare()
+
+ _log_request(request, prepared_request)
+
+ response = session.send(prepared_request)
+
+ _log_response(response)
+
response.raise_for_status()
return response.json()