Skip to content

Commit 03053b2

Browse files
committed
Support authenticating with API key
1 parent ba2eefe commit 03053b2

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

mindsdb_sdk/connect.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@
66
DEFAULT_CLOUD_API_URL = 'https://cloud.mindsdb.com'
77

88

9-
def connect(url: str = None, login: str = None, password: str = None, is_managed: bool = False, headers=None) -> Server:
9+
def connect(
10+
url: str = None,
11+
login: str = None,
12+
password: str = None,
13+
api_key: str = None,
14+
is_managed: bool = False,
15+
headers=None) -> Server:
1016
"""
1117
Create connection to mindsdb server
1218
1319
:param url: url to mindsdb server
1420
:param login: user login, for cloud version it contents email
1521
:param password: user password to login (for cloud version)
22+
:param api_key: API key to authenticate (for cloud version)
1623
:param is_managed: whether or not the URL points to a managed instance
1724
:param headers: addtional headers to send with the connection, optional
1825
:return: Server object
@@ -29,8 +36,7 @@ def connect(url: str = None, login: str = None, password: str = None, is_managed
2936
3037
Connect to cloud server
3138
32-
>>> con = mindsdb_sdk.connect(login='a@b.com', password='-')
33-
>>> con = mindsdb_sdk.connect('https://cloud.mindsdb.com', login='a@b.com', password='-')
39+
>>> con = mindsdb_sdk.connect('https://cloud.mindsdb.com', api_key='-')
3440
3541
Connect to MindsDB pro
3642
@@ -45,6 +51,6 @@ def connect(url: str = None, login: str = None, password: str = None, is_managed
4551
# is local
4652
url = DEFAULT_LOCAL_API_URL
4753

48-
api = RestAPI(url, login, password, is_managed, headers=headers)
54+
api = RestAPI(url, login, password, api_key, is_managed, headers=headers)
4955

5056
return Server(api)

mindsdb_sdk/connectors/rest_api.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,22 @@ def _raise_for_status(response):
3434

3535

3636
class RestAPI:
37-
def __init__(self, url=None, login=None, password=None, is_managed=False, headers=None):
37+
def __init__(self, url=None, login=None, password=None, api_key=None, is_managed=False, headers=None):
3838

3939
self.url = url
4040
self.username = login
4141
self.password = password
42+
self.api_key = api_key
4243
self.is_managed = is_managed
4344
self.session = requests.Session()
4445

4546
self.session.headers['User-Agent'] = f'python-sdk/{__about__.__version__}'
46-
4747
if headers is not None:
4848
self.session.headers.update(headers)
49-
49+
if self.api_key is not None:
50+
# Authenticate with API key instead of logging in, if present.
51+
self.session.headers['X-Api-Key'] = self.api_key
52+
return
5053
if login is not None:
5154
self.login()
5255

0 commit comments

Comments
 (0)