More extensive request logging - toot - Unnamed repository; edit this file 'description' to name the repository.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit ed20c7fded6ba5dfb7124bf223d9bf9b3e213ab3
 (DIR) parent c3bafd56d82823a803a8abd040daf4f7d0f8aa8b
 (HTM) Author: Ivan Habunek <ivan@habunek.com>
       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(-)
       ---
 (DIR) 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