Skip to content

Instantly share code, notes, and snippets.

@FGtatsuro
Last active July 6, 2018 04:59
Show Gist options
  • Save FGtatsuro/c6cd98c13b6fe9d6774b573cf9b9795f to your computer and use it in GitHub Desktop.
Save FGtatsuro/c6cd98c13b6fe9d6774b573cf9b9795f to your computer and use it in GitHub Desktop.
General handlers of requests
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
from json import JSONDecodeError
from pprint import pformat
from requests import Session
from ._logging import get_logger
logger = get_logger(__name__)
def response_handler(resp, *args, **kwargs):
logger.info('### Response ###')
logger.info('Status:{0}'.format(resp.status_code))
logger.info('Header:{0}'.format(pformat(resp.headers)))
logger.info('Body:{0}'.format(_format_body(resp.text)))
def request_handler(request, **kwargs):
logger.info('')
logger.info('### Request ###')
logger.info('Method:{0}'.format(request.method))
logger.info('URL:{0}'.format(request.url))
logger.info('Header:{0}'.format(pformat(request.headers)))
logger.info('Body:{0}'.format(_format_body(request.body)))
logger.info('cURL:{0}'.format(_curl_output(request)))
def create_session():
_session = Session()
_session.hooks = {'response': response_handler}
# Clear existing/default headers
_session.headers.clear()
# Add method hook to requests#send
send = _session.send
def new_send(f):
def _f(*args, **kwargs):
request_handler(*args, **kwargs)
return f(*args, **kwargs)
return _f
_session.send = new_send(send)
return _session
class BearerAuthentication(AuthBase):
def __init__(self, token):
self.token = token
def __call__(self, r):
r.headers['Authorization'] = f'Bearer {self.token}'
return r
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment