marzban 0.2.6__tar.gz → 0.2.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {marzban-0.2.6 → marzban-0.2.8}/PKG-INFO +1 -1
- {marzban-0.2.6 → marzban-0.2.8}/marzban/__init__.py +1 -1
- {marzban-0.2.6 → marzban-0.2.8}/marzban/api.py +3 -3
- {marzban-0.2.6 → marzban-0.2.8}/marzban/models.py +2 -1
- {marzban-0.2.6 → marzban-0.2.8}/marzban.egg-info/PKG-INFO +1 -1
- {marzban-0.2.6 → marzban-0.2.8}/setup.py +1 -1
- {marzban-0.2.6 → marzban-0.2.8}/LICENSE +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/README.md +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/marzban.egg-info/SOURCES.txt +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/marzban.egg-info/dependency_links.txt +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/marzban.egg-info/requires.txt +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/marzban.egg-info/top_level.txt +0 -0
- {marzban-0.2.6 → marzban-0.2.8}/setup.cfg +0 -0
@@ -4,9 +4,9 @@ from pydantic import BaseModel
|
|
4
4
|
from .models import *
|
5
5
|
|
6
6
|
class MarzbanAPI:
|
7
|
-
def __init__(self, base_url: str):
|
7
|
+
def __init__(self, base_url: str, *, timeout: float = 10.0, verify: bool = False):
|
8
8
|
self.base_url = base_url
|
9
|
-
self.client = httpx.AsyncClient(base_url=base_url)
|
9
|
+
self.client = httpx.AsyncClient(base_url=base_url, verify=verify, timeout=timeout)
|
10
10
|
|
11
11
|
def _get_headers(self, token: str) -> Dict[str, str]:
|
12
12
|
return {"Authorization": f"Bearer {token}"}
|
@@ -14,7 +14,7 @@ class MarzbanAPI:
|
|
14
14
|
async def _request(self, method: str, url: str, token: Optional[str] = None, data: Optional[BaseModel] = None, params: Optional[Dict[str, Any]] = None) -> httpx.Response:
|
15
15
|
headers = self._get_headers(token) if token else {}
|
16
16
|
json_data = data.model_dump(exclude_none=True) if data else None
|
17
|
-
params =
|
17
|
+
params = {k: v for k, v in (params or {}).items() if v is not None}
|
18
18
|
response = await self.client.request(method, url, headers=headers, json=json_data, params=params)
|
19
19
|
response.raise_for_status()
|
20
20
|
return response
|
@@ -69,6 +69,7 @@ class UserResponse(BaseModel):
|
|
69
69
|
on_hold_expire_duration: Optional[int] = None
|
70
70
|
on_hold_timeout: Optional[str] = None
|
71
71
|
status: Optional[str] = None
|
72
|
+
admin: Optional[Admin] = None
|
72
73
|
used_traffic: Optional[int] = None
|
73
74
|
lifetime_used_traffic: Optional[int] = None
|
74
75
|
created_at: Optional[str] = None
|
@@ -195,4 +196,4 @@ class UserStatus(BaseModel):
|
|
195
196
|
class ValidationError(BaseModel):
|
196
197
|
loc: List[Any]
|
197
198
|
msg: str
|
198
|
-
type: str
|
199
|
+
type: str
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|