From 5c90cb8e2937b92c5cb16a84101578fec007eb8a Mon Sep 17 00:00:00 2001 From: Ben Feeser Date: Fri, 17 Jun 2016 16:15:16 -0400 Subject: [PATCH] use requests.session for performance improvement, simplify headers --- dwollav2/auth.py | 9 +++++---- dwollav2/token.py | 28 +++++++++++++--------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/dwollav2/auth.py b/dwollav2/auth.py index 4dbb66f..0dfcc10 100644 --- a/dwollav2/auth.py +++ b/dwollav2/auth.py @@ -9,6 +9,10 @@ from dwollav2.version import version +session = requests.session() +session.headers.update({'user-agent': 'dwolla-v2-python %s' % version}) + + def _is_error(res): try: return 'error' in res.json() @@ -16,10 +20,7 @@ def _is_error(res): return True def _request_token(client, payload): - headers = { - 'user-agent': 'dwolla-v2-python %s' % version - } - res = requests.post(client.token_url, data=payload, headers=headers) + res = session.post(client.token_url, data=payload) if _is_error(res): raise Error.map(res) token = client.Token(res.json()) diff --git a/dwollav2/token.py b/dwollav2/token.py index d2aaa38..15a6b8f 100644 --- a/dwollav2/token.py +++ b/dwollav2/token.py @@ -5,10 +5,12 @@ from dwollav2.version import version -def _merge(x, y): - z = x.copy() - z.update(y) - return z +session = requests.session() +session.headers.update({ + 'accept': 'application/vnd.dwolla.v1.hal+json', + 'user-agent': 'dwolla-v2-python %s' % version +}) + def _items_or_iteritems(o): try: @@ -46,29 +48,25 @@ def __init__(self, opts = None, **kwargs): self.scope = opts.get('scope') self.app_id = opts.get('app_id') self.account_id = opts.get('account_id') + session.headers.update({ + 'authorization': 'Bearer %s' % self.access_token + }) def post(self, url, body = None, headers = {}, **kwargs): body = kwargs if body is None else body if _contains_file(body): files = [(k, v) for k, v in _items_or_iteritems(body) if _contains_file(v)] data = [(k, v) for k, v in _items_or_iteritems(body) if not _contains_file(v)] - return Response(requests.post(self._full_url(url), headers=self._headers(headers), files=files, data=data)) + return Response(session.post(self._full_url(url), headers=headers, files=files, data=data)) else: - return Response(requests.post(self._full_url(url), headers=self._headers(headers), json=body)) + return Response(session.post(self._full_url(url), headers=headers, json=body)) def get(self, url, params = None, headers = {}, **kwargs): params = kwargs if params is None else params - return Response(requests.get(self._full_url(url), headers=self._headers(headers), params=params)) + return Response(session.get(self._full_url(url), headers=headers, params=params)) def delete(self, url, params = None, headers = {}): - return Response(requests.delete(self._full_url(url), headers=self._headers(headers), params=params)) - - def _headers(self, headers): - return _merge({ - 'accept': 'application/vnd.dwolla.v1.hal+json', - 'authorization': 'Bearer %s' % self.access_token, - 'user-agent': 'dwolla-v2-python %s' % version - }, headers) + return Response(session.delete(self._full_url(url), headers=headers, params=params)) def _full_url(self, path): if isinstance(path, dict):