Skip to content

Commit 30105f0

Browse files
DPiontekgianm
authored andcommitted
Methode for http basic auth with username and password added (#80)
* Added methode to allow http basic auth with username and password to BaseDruidClient * added missing import * show full error message
1 parent d2468f1 commit 30105f0

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

pydruid/client.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@
2222
from six.moves import urllib
2323

2424
from pydruid.query import QueryBuilder
25-
25+
from base64 import b64encode
2626

2727
class BaseDruidClient(object):
2828
def __init__(self, url, endpoint):
2929
self.url = url
3030
self.endpoint = endpoint
3131
self.query_builder = QueryBuilder()
32+
self.username = None
33+
self.password = None
34+
35+
def set_basic_auth_credentials(self, username, password):
36+
self.username = username
37+
self.password = password
3238

3339
def _prepare_url_headers_and_body(self, query):
3440
querystr = json.dumps(query.query_dict).encode('utf-8')
@@ -37,6 +43,11 @@ def _prepare_url_headers_and_body(self, query):
3743
else:
3844
url = self.url + '/' + self.endpoint
3945
headers = {'Content-Type': 'application/json'}
46+
if (self.username is not None) and (self.password is not None):
47+
username_password = \
48+
b64encode(bytes('{}:{}'.format(self.username, self.password)))
49+
headers['Authorization'] = 'Basic {}'.format(username_password)
50+
4051
return headers, querystr, url
4152

4253
def _post(self, query):
@@ -481,8 +492,6 @@ def _post(self, query):
481492
err = json.loads(e.read().decode("utf-8"))
482493
except (ValueError, AttributeError, KeyError):
483494
pass
484-
else:
485-
err = err.get('error', None)
486495

487496
raise IOError('{0} \n Druid Error: {1} \n Query is: {2}'.format(
488497
e, err, json.dumps(query.query_dict, indent=4)))

0 commit comments

Comments
 (0)