From 413af76ce50c3bacbb624636ebbc8432151f2c3b Mon Sep 17 00:00:00 2001 From: Yoav Date: Fri, 22 Feb 2013 10:55:29 +0100 Subject: [PATCH 1/4] modifying hoover to use requests instead of httplib2 --- hoover/session.py | 28 +++++++++------------------- setup.py | 4 ++-- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/hoover/session.py b/hoover/session.py index e8f7f75..13be7aa 100644 --- a/hoover/session.py +++ b/hoover/session.py @@ -6,7 +6,7 @@ from urllib import urlencode except ImportError: from urllib.parse import urlencode -from httplib2 import Http +import requests try: from simplejson import loads except ImportError: @@ -33,27 +33,17 @@ def __init__(self, subdomain, username, password, domain=None, proxy=None, self.protocol = secure and 'https' or 'http' def _api_help(self, endpoint, params=None, method='GET'): - h = Http() - h.add_credentials(self.username, self.password) + s = requests.Session() + s.auth = (self.username, self.password) url = '%s://%s.%s/%s' % (self.protocol, self.subdomain, self.domain, endpoint) - if method == 'GET': - body = '' - if params: - url += '?' + urlencode(params) - elif params: + body = '' + if params and method != 'GET': body = urlencode(params) - else: - body = '' - headers, results = h.request(url, method, body) - status = headers['status'] - if int(status) == 401: - raise AuthFail('Sorry, your authentication was not accepted.') - # TODO check status, raise appropriate errors or something - try: - return loads(results.decode('utf-8')) - except ValueError: - return results + params = None + response = s.request(method, url, data=body, verify=True) + response.raise_for_status() + return response.json() @property def inputs(self): diff --git a/setup.py b/setup.py index 4374183..256b4d7 100644 --- a/setup.py +++ b/setup.py @@ -4,11 +4,11 @@ from distutils.core import setup setup(name='Hoover', - version='0.5.3', + version='0.5.4', description="Library for logging to Loggly from within Python webapps", author="Mike Blume", author_email="mike@loggly.com", url="http://www.github.com/loggly/hoover", packages=['hoover'], - install_requires=['httplib2'], + install_requires=['requests'], ) From ee1d3e98dc1c6c4f0b00d012699e80df6e7653f5 Mon Sep 17 00:00:00 2001 From: Yoav Date: Fri, 22 Feb 2013 10:59:52 +0100 Subject: [PATCH 2/4] modifying hoover to use requests instead of httplib2 --- hoover/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hoover/utils.py b/hoover/utils.py index 441f42f..024da62 100644 --- a/hoover/utils.py +++ b/hoover/utils.py @@ -1,5 +1,5 @@ from functools import wraps -from httplib2 import Http +import requests def async(func): @@ -23,14 +23,13 @@ def newfunc(*args, **kwargs): def post_to_endpoint(endpoint, message, encoding='utf-8'): - h = Http() # If unicode, try to encode if isinstance(message, unicode): try: message = message.encode(encoding) except UnicodeEncodeError: pass - h.request(endpoint, 'POST', message) + requests.post(endpoint, message) async_post_to_endpoint = async(post_to_endpoint) From 996b9167303abaf2b32e38c69c801c017082cdea Mon Sep 17 00:00:00 2001 From: Yoav Date: Fri, 22 Feb 2013 11:11:40 +0100 Subject: [PATCH 3/4] added params --- hoover/session.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hoover/session.py b/hoover/session.py index 13be7aa..3958960 100644 --- a/hoover/session.py +++ b/hoover/session.py @@ -33,6 +33,7 @@ def __init__(self, subdomain, username, password, domain=None, proxy=None, self.protocol = secure and 'https' or 'http' def _api_help(self, endpoint, params=None, method='GET'): + import ipdb; ipdb.set_trace() s = requests.Session() s.auth = (self.username, self.password) url = '%s://%s.%s/%s' % (self.protocol, self.subdomain, self.domain, @@ -41,7 +42,7 @@ def _api_help(self, endpoint, params=None, method='GET'): if params and method != 'GET': body = urlencode(params) params = None - response = s.request(method, url, data=body, verify=True) + response = s.request(method, url, params=params, data=body, verify=True) response.raise_for_status() return response.json() From 978afe038d83fa8568d44f2ea054f2a7190fb9e4 Mon Sep 17 00:00:00 2001 From: Yoav Date: Fri, 22 Feb 2013 11:17:10 +0100 Subject: [PATCH 4/4] adding verify=True to be on the safe side --- hoover/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hoover/utils.py b/hoover/utils.py index 024da62..4dc70a1 100644 --- a/hoover/utils.py +++ b/hoover/utils.py @@ -29,7 +29,7 @@ def post_to_endpoint(endpoint, message, encoding='utf-8'): message = message.encode(encoding) except UnicodeEncodeError: pass - requests.post(endpoint, message) + requests.post(endpoint, message, verify=True) async_post_to_endpoint = async(post_to_endpoint)