File tree 3 files changed +48
-7
lines changed
3 files changed +48
-7
lines changed Original file line number Diff line number Diff line change @@ -14,18 +14,27 @@ from nocodb.infra.requests_client import NocoDBRequestsClient
14
14
15
15
# Usage with API Token
16
16
client = NocoDBRequestsClient(
17
+ # Your nocodb root path
18
+ " http://localhost:8080" ,
17
19
# Your API Token retrieved from NocoDB conf
18
20
APIToken(" YOUR-API-TOKEN" ),
19
- # Your nocodb root path
20
- " http://localhost:8080"
21
21
)
22
22
23
23
# Usage with JWT Token
24
24
client = NocoDBRequestsClient(
25
+ # Your nocodb root path
26
+ " http://localhost:8080" ,
25
27
# Your API Token retrieved from NocoDB conf
26
28
JWTAuthToken(" your.jwt.token" ),
29
+ )
30
+
31
+ # Usage with email and password
32
+ client = NocoDBRequestsClient(
27
33
# Your nocodb root path
28
- " http://localhost:8080"
34
+ " http://localhost:8080" ,
35
+ # Your profile credentials
36
+
37
+ password = " 123qwe123!"
29
38
)
30
39
```
31
40
Original file line number Diff line number Diff line change 5
5
class NocoDBAPIUris (Enum ):
6
6
V1_DB_DATA_PREFIX = "api/v1/db/data"
7
7
V1_DB_META_PREFIX = "api/v1/db/meta"
8
+ V1_AUTH_USER_PREFIX = "api/v1/auth/user"
9
+
8
10
9
11
10
12
class NocoDBAPI :
@@ -14,6 +16,15 @@ def __init__(self, base_uri: str):
14
16
)
15
17
self .__base_meta_uri = (
16
18
f"{ base_uri } /{ NocoDBAPIUris .V1_DB_META_PREFIX .value } "
19
+ self .__base_auth_uri = (
20
+ f"{ base_uri } /{ NocoDBAPIUris .V1_AUTH_USER_PREFIX .value } "
21
+ )
22
+ def get_auth_uri (self ):
23
+ return "/" .join (
24
+ (
25
+ self .__base_auth_uri ,
26
+ "signin"
27
+ )
17
28
)
18
29
19
30
def get_table_uri (self , project : NocoDBProject , table : str ) -> str :
Original file line number Diff line number Diff line change 1
1
from typing import Optional
2
2
from ..nocodb import (
3
+ JWTAuthToken ,
3
4
NocoDBClient ,
4
5
NocoDBProject ,
5
6
AuthToken ,
12
13
13
14
14
15
class NocoDBRequestsClient (NocoDBClient ):
15
- def __init__ (self , auth_token : AuthToken , base_uri : str ):
16
+ def __init__ (
17
+ self ,
18
+ base_uri : str ,
19
+ auth_token : AuthToken = None ,
20
+ email : str = None ,
21
+ password : str = None ,
22
+ ):
16
23
self .__session = requests .Session ()
24
+ self .__api_info = NocoDBAPI (base_uri )
25
+
26
+ if not auth_token and not (email and password ):
27
+ raise ValueError ("Either сredentials or token must be provided" )
28
+
29
+ if not auth_token and (email and password ):
30
+ auth_token = JWTAuthToken (self .get_auth_token (email , password ))
31
+
17
32
self .__session .headers .update (
18
- auth_token .get_header (),
19
- )
33
+ auth_token .get_header (),
34
+ )
20
35
self .__session .headers .update ({"Content-Type" : "application/json" })
21
- self .__api_info = NocoDBAPI (base_uri )
36
+
37
+ def get_auth_token (self , email : str , password : str ) -> str :
38
+ auth_token = self .__session .post (
39
+ self .__api_info .get_auth_uri (),
40
+ json = dict (email = email , password = password )
41
+ ).json ()['token' ]
42
+ return auth_token
22
43
23
44
def table_row_list (
24
45
self ,
You can’t perform that action at this time.
0 commit comments