2222from six .moves import urllib
2323
2424from pydruid .query import QueryBuilder
25-
25+ from base64 import b64encode
2626
2727class 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