feat: публичный доступ к токену и credentials
Добавлены property для доступа к учётным данным:
- client.token — web auth token (публичный, не _token)
- client.cookies — session cookies (копия, не оригинал)
- client.credentials — dict с token и cookies для сохранения
Пример использования:
# Сохранение
client = await KworkClient.login('user', 'pass')
token = client.token # или client.credentials
# Восстановление
client = KworkClient(token=token)
Обновлена документация в docs/index.md с примерами.
This commit is contained in:
parent
6ad63ee3e0
commit
13ef256b3d
@ -42,14 +42,26 @@ async with await KworkClient.login("username", "password") as client:
|
|||||||
# Client automatically closes
|
# Client automatically closes
|
||||||
```
|
```
|
||||||
|
|
||||||
### Restore from token
|
### Save and restore session
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# Save token after login
|
# Save credentials after login
|
||||||
token = client._token
|
client = await KworkClient.login("username", "password")
|
||||||
|
|
||||||
|
# Option 1: Save token only
|
||||||
|
token = client.token
|
||||||
|
|
||||||
|
# Option 2: Save full credentials (token + cookies)
|
||||||
|
creds = client.credentials
|
||||||
|
import json
|
||||||
|
with open("session.json", "w") as f:
|
||||||
|
json.dump(creds, f)
|
||||||
|
|
||||||
# Later, restore session
|
# Later, restore session
|
||||||
client = KworkClient(token=token)
|
client = KworkClient(token=token)
|
||||||
|
# or
|
||||||
|
client = KworkClient(**creds)
|
||||||
|
|
||||||
user_info = await client.user.get_info()
|
user_info = await client.user.get_info()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -131,6 +131,67 @@ class KworkClient:
|
|||||||
# Initialize HTTP client
|
# Initialize HTTP client
|
||||||
self._client: Optional[httpx.AsyncClient] = None
|
self._client: Optional[httpx.AsyncClient] = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def token(self) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Web auth token для аутентификации.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Токен или None если клиент не аутентифицирован.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
# Сохранение токена для последующего использования
|
||||||
|
client = await KworkClient.login("user", "pass")
|
||||||
|
token = client.token
|
||||||
|
|
||||||
|
# Позже: восстановление сессии
|
||||||
|
client = KworkClient(token=token)
|
||||||
|
"""
|
||||||
|
return self._token
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cookies(self) -> dict[str, str]:
|
||||||
|
"""
|
||||||
|
Session cookies.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Словарь cookies включая web_auth_token.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
# Сохранение полной сессии
|
||||||
|
client = await KworkClient.login("user", "pass")
|
||||||
|
creds = client.credentials
|
||||||
|
|
||||||
|
# Восстановление
|
||||||
|
client = KworkClient(**creds)
|
||||||
|
"""
|
||||||
|
return self._cookies.copy()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def credentials(self) -> dict[str, Optional[str]]:
|
||||||
|
"""
|
||||||
|
Учётные данные для восстановления сессии.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Словарь с token и cookies для передачи в KworkClient().
|
||||||
|
|
||||||
|
Example:
|
||||||
|
# Сохранение
|
||||||
|
client = await KworkClient.login("user", "pass")
|
||||||
|
import json
|
||||||
|
with open("session.json", "w") as f:
|
||||||
|
json.dump(client.credentials, f)
|
||||||
|
|
||||||
|
# Восстановление
|
||||||
|
with open("session.json") as f:
|
||||||
|
creds = json.load(f)
|
||||||
|
client = KworkClient(**creds)
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
"token": self._token,
|
||||||
|
"cookies": self._cookies.copy() if self._cookies else None,
|
||||||
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def login(
|
async def login(
|
||||||
cls,
|
cls,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user