#!/usr/bin/env python3
"""Wrapper for request module calls."""
import json
import requests
from logzero import logger
[docs]def send_get(url):
"""Send HTTP GET request via 'requests' module."""
return send_any('GET', url)
[docs]def send_any(method, url, headers=None, data=None):
"""Send HTTP request via 'requests' module."""
assert url
assert isinstance(url, str)
logger.info('Requesting: %s', url)
if headers:
logger.debug('Headers to send: %s', str(headers))
if data:
logger.debug('Data to send: %s', str(data))
try:
response = requests.request(method, url, headers=headers, data=data)
except requests.exceptions.RequestException as err_msg:
logger.exception(err_msg)
response = None
else:
response_logging(response)
return response
[docs]def send_post(url, data=None, headers=None):
"""Send HTTP POST request via 'requests' module."""
return send_any('POST', url, data=data, headers=headers)
[docs]def send_delete(url, headers=None):
"""Send HTTP DELETE request via 'requests' module."""
return send_any('DELETE', url, headers=headers)
[docs]def response_logging(response):
"""Log responses."""
logger.info('Response code: %d', response.status_code)
logger.info('Response headers: %s', str(response.headers)[:100])
logger.debug(
'Response headers:\n%s',
json.dumps(dict(response.headers), indent=4)
)
logger.info('Response: %s', response.text[:100])
if response.text:
logger.debug(
'Response:\n%s',
json.dumps(json.loads(response.text), indent=4)
)
else:
logger.debug('Response: <empty>')
if __name__ == '__main__':
pass