Skip to content

Commit 1e0889d

Browse files
authored
added token to init, created setup_authentication function, adjusted request fuction
Signed-off-by: gitworkflows <118260833+gitworkflows@users.noreply.github.com>
1 parent bbe80ed commit 1e0889d

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

influxdb/client.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class InfluxDBClient(object):
4747
:type username: str
4848
:param password: password of the user, defaults to 'root'
4949
:type password: str
50+
:param token: token for access. Overrides username/password
51+
:type token: str
5052
:param pool_size: urllib3 connection pool size, defaults to 10.
5153
:type pool_size: int
5254
:param database: database name to connect to, defaults to None
@@ -101,6 +103,7 @@ def __init__(self,
101103
port=8086,
102104
username='root',
103105
password='root',
106+
token=None,
104107
database=None,
105108
ssl=False,
106109
verify_ssl=False,
@@ -125,6 +128,7 @@ def __init__(self,
125128
self._database = database
126129
self._timeout = timeout
127130
self._retries = retries
131+
self._token = token
128132

129133
self._verify_ssl = verify_ssl
130134

@@ -134,7 +138,7 @@ def __init__(self,
134138
if not session:
135139
session = requests.Session()
136140

137-
self._session = session
141+
self._session = self.setup_authenticaiton(session, self._token, self._username, self._password)
138142
adapter = _SocketOptionsAdapter(
139143
pool_connections=int(pool_size),
140144
pool_maxsize=int(pool_size),
@@ -258,6 +262,16 @@ def from_dsn(cls, dsn, **kwargs):
258262

259263
return cls(**init_args)
260264

265+
def setup_authenticaiton(self, session, token=None, username=None, password=None):
266+
267+
if token:
268+
session.headers.update({"Authorization": f"Token {token}"})
269+
return session
270+
271+
session.auth = (username, password)
272+
273+
return session
274+
261275
def switch_database(self, database):
262276
"""Change the client's database.
263277
@@ -266,16 +280,22 @@ def switch_database(self, database):
266280
"""
267281
self._database = database
268282

269-
def switch_user(self, username, password):
270-
"""Change the client's username.
283+
def switch_user(self, token=None, username=None, password=None):
284+
"""Change the client's user.
271285
286+
:param token: the token of the user to switch to
287+
:type token: str
272288
:param username: the username to switch to
273289
:type username: str
274290
:param password: the password for the username
275291
:type password: str
276292
"""
277-
self._username = username
278-
self._password = password
293+
if token:
294+
self._session.headers.update({"Authorization": f"Token {token}"})
295+
self._session.auth = None
296+
297+
self._session.auth = (username, password)
298+
self._session.headers.pop("Authorization", None)
279299

280300
def request(self, url, method='GET', params=None, data=None, stream=False,
281301
expected_response_code=200, headers=None):
@@ -336,14 +356,9 @@ def request(self, url, method='GET', params=None, data=None, stream=False,
336356
_try = 0
337357
while retry:
338358
try:
339-
if "Authorization" in headers:
340-
auth = (None, None)
341-
else:
342-
auth = (self._username, self._password)
343359
response = self._session.request(
344360
method=method,
345361
url=url,
346-
auth=auth if None not in auth else None,
347362
params=params,
348363
data=data,
349364
stream=stream,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy