Compare commits
2 Commits
v0.3.0-bet
...
v0.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bb6e97880 | ||
|
|
c8297852ce |
@@ -36,7 +36,7 @@ result = client.records.get_list(
|
||||
user_data = client.users.auth_via_email("test@example.com", "123456")
|
||||
|
||||
# or as admin
|
||||
admin_data = client.admins.auth_via_email("test@example.com", "123456")
|
||||
admin_data = client.admins.auth_with_password("test@example.com", "123456")
|
||||
|
||||
# and much more...
|
||||
```
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
from __future__ import annotations
|
||||
from pocketbase.services.admins import Admins
|
||||
from pocketbase.stores.base_auth_store import BaseAuthStore
|
||||
from pocketbase.services.settings import Settings
|
||||
from pocketbase.services.users import Users
|
||||
from pocketbase.services.records import Records
|
||||
from pocketbase.services.realtime import Realtime
|
||||
from pocketbase.services.logs import Logs
|
||||
from pocketbase.services.collections import Collections
|
||||
from pocketbase.models import FileUpload
|
||||
|
||||
from typing import Any
|
||||
|
||||
import httpx
|
||||
|
||||
from pocketbase.services.admins import Admins
|
||||
from pocketbase.services.collections import Collections
|
||||
from pocketbase.services.logs import Logs
|
||||
from pocketbase.services.realtime import Realtime
|
||||
from pocketbase.services.records import Records
|
||||
from pocketbase.services.users import Users
|
||||
from pocketbase.services.settings import Settings
|
||||
from pocketbase.stores.base_auth_store import BaseAuthStore
|
||||
|
||||
|
||||
class ClientResponseError(Exception):
|
||||
url: str = ""
|
||||
@@ -82,6 +82,21 @@ class Client:
|
||||
params = config.get("params", None)
|
||||
headers = config.get("headers", None)
|
||||
body = config.get("body", None)
|
||||
# handle requests including files as multipart:
|
||||
data = {}
|
||||
files = ()
|
||||
for k, v in (body if isinstance(body, dict) else {}).items():
|
||||
if isinstance(v, FileUpload):
|
||||
files += v.get(k)
|
||||
else:
|
||||
data[k] = v
|
||||
if len(files) > 0:
|
||||
# discard body, switch to multipart encoding
|
||||
body = None
|
||||
else:
|
||||
# discard files+data (do not use multipart encoding)
|
||||
files = None
|
||||
data = None
|
||||
try:
|
||||
response = httpx.request(
|
||||
method=method,
|
||||
@@ -89,6 +104,8 @@ class Client:
|
||||
params=params,
|
||||
headers=headers,
|
||||
json=body,
|
||||
data=data,
|
||||
files=files,
|
||||
timeout=120,
|
||||
)
|
||||
except Exception as e:
|
||||
|
||||
@@ -4,3 +4,4 @@ from .external_auth import ExternalAuth
|
||||
from .log_request import LogRequest
|
||||
from .record import Record
|
||||
from .user import User
|
||||
from .file_upload import FileUpload
|
||||
|
||||
13
pocketbase/models/file_upload.py
Normal file
13
pocketbase/models/file_upload.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from httpx._types import FileTypes
|
||||
from typing import Sequence, Union
|
||||
FileUploadTypes = Union[FileTypes, Sequence[FileTypes]]
|
||||
|
||||
|
||||
class FileUpload:
|
||||
def __init__(self, *args):
|
||||
self.files: FileUploadTypes = args
|
||||
|
||||
def get(self, key: str):
|
||||
if isinstance(self.files[0], Sequence):
|
||||
return tuple((key, i) for i in self.files)
|
||||
return ((key, self.files),)
|
||||
@@ -31,7 +31,7 @@ class Admins(CrudService):
|
||||
self.client.auth_store.save(token, admin)
|
||||
return AdminAuthResponse(token=token, admin=admin, **response_data)
|
||||
|
||||
def auth_via_email(
|
||||
def auth_with_password(
|
||||
self, email: str, password: str, body_params: dict = {}, query_params: dict = {}
|
||||
) -> AdminAuthResponse:
|
||||
"""
|
||||
@@ -40,9 +40,9 @@ class Admins(CrudService):
|
||||
|
||||
On success this method automatically updates the client's AuthStore data.
|
||||
"""
|
||||
body_params.update({"email": email, "password": password})
|
||||
body_params.update({"identity": email, "password": password})
|
||||
response_data = self.client.send(
|
||||
self.base_crud_path() + "/auth-via-email",
|
||||
self.base_crud_path() + "/auth-with-password",
|
||||
{
|
||||
"method": "POST",
|
||||
"params": query_params,
|
||||
|
||||
Reference in New Issue
Block a user