bridgy-fed/common.py

38 wiersze
853 B
Python
Czysty Zwykły widok Historia

"""Misc common utilities.
"""
import json
import logging
import requests
from webob import exc
2017-08-19 15:21:05 +00:00
DOMAIN_RE = r'([^/]+\.[^/]+)'
HEADERS = {
'User-Agent': 'Bridgy Fed (https://fed.brid.gy/)',
}
def requests_get(url, **kwargs):
return _requests_fn(requests.get, url, **kwargs)
def requests_post(url, **kwargs):
return _requests_fn(requests.post, url, **kwargs)
def _requests_fn(fn, url, json=False, **kwargs):
"""Wraps requests.* and adds raise_for_status() and User-Agent."""
kwargs.setdefault('headers', {}).update(HEADERS)
resp = fn(url, **kwargs)
resp.raise_for_status()
if json:
try:
return resp.json()
except ValueError:
msg = "Couldn't parse response as JSON"
logging.error(msg, exc_info=True)
raise exc.HTTPBadRequest(400, msg)
return resp