refactor: вернул OtherAPI как отдельный класс
OtherAPI остаётся отдельным классом с property accessor: - client.other.get_wants() - client.other.get_kworks_status() - client.other.go_offline() - и т.д.
This commit is contained in:
parent
127e5927bc
commit
6ad63ee3e0
Binary file not shown.
@ -907,190 +907,215 @@ class KworkClient:
|
|||||||
data = await self.client._request("POST", "/blockedDialogList")
|
data = await self.client._request("POST", "/blockedDialogList")
|
||||||
return [Dialog.model_validate(d) for d in data.get("dialogs", [])]
|
return [Dialog.model_validate(d) for d in data.get("dialogs", [])]
|
||||||
|
|
||||||
# ========== User Settings & Preferences ==========
|
# ========== Other Endpoints ==========
|
||||||
|
|
||||||
async def get_wants(self) -> dict[str, Any]:
|
class OtherAPI:
|
||||||
"""
|
"""
|
||||||
Получить пользовательские предпочтения (wants).
|
Прочее API.
|
||||||
|
|
||||||
Wants — это настройки интересов пользователя:
|
Вспомогательные эндпоинты которые не вошли в другие категории:
|
||||||
- Предпочитаемые категории
|
- Пользовательские настройки и предпочтения (wants)
|
||||||
- Ключевые слова для мониторинга
|
- Статусы кворков и заказов
|
||||||
- Фильтры для поиска
|
- Персональные предложения (offers)
|
||||||
|
- Настройки профиля
|
||||||
Returns:
|
- Статус онлайн/оффлайн
|
||||||
Словарь с настройками предпочтений.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
wants = await client.get_wants()
|
# Пользовательские предпочтения
|
||||||
print(wants)
|
wants = await client.other.get_wants()
|
||||||
|
|
||||||
|
# Статус кворков
|
||||||
|
status = await client.other.get_kworks_status()
|
||||||
|
|
||||||
|
# Установить статус оффлайн
|
||||||
|
await client.other.go_offline()
|
||||||
"""
|
"""
|
||||||
return await self._request("POST", "/myWants")
|
|
||||||
|
|
||||||
async def get_wants_status(self) -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Получить статус предпочтений.
|
|
||||||
|
|
||||||
Returns:
|
def __init__(self, client: "KworkClient"):
|
||||||
Статус wants с метаданными.
|
self.client = client
|
||||||
"""
|
|
||||||
return await self._request("POST", "/wantsStatusList")
|
|
||||||
|
|
||||||
async def get_kworks_status(self) -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Получить статусы кворков пользователя.
|
|
||||||
|
|
||||||
Возвращает информацию о статусах всех кворков
|
async def get_wants(self) -> dict[str, Any]:
|
||||||
текущего пользователя (активен, на модерации, и т.д.).
|
"""
|
||||||
|
Получить пользовательские предпочтения (wants).
|
||||||
|
|
||||||
|
Wants — это настройки интересов пользователя:
|
||||||
|
- Предпочитаемые категории
|
||||||
|
- Ключевые слова для мониторинга
|
||||||
|
- Фильтры для поиска
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Словарь с настройками предпочтений.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
wants = await client.other.get_wants()
|
||||||
|
print(wants)
|
||||||
|
"""
|
||||||
|
return await self.client._request("POST", "/myWants")
|
||||||
|
|
||||||
Returns:
|
async def get_wants_status(self) -> dict[str, Any]:
|
||||||
Словарь со статусами кворков.
|
"""
|
||||||
|
Получить статус предпочтений.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Статус wants с метаданными.
|
||||||
|
"""
|
||||||
|
return await self.client._request("POST", "/wantsStatusList")
|
||||||
|
|
||||||
Example:
|
async def get_kworks_status(self) -> dict[str, Any]:
|
||||||
status = await client.get_kworks_status()
|
"""
|
||||||
print(status)
|
Получить статусы кворков пользователя.
|
||||||
"""
|
|
||||||
return await self._request("POST", "/kworksStatusList")
|
Возвращает информацию о статусах всех кворков
|
||||||
|
текущего пользователя (активен, на модерации, и т.д.).
|
||||||
async def get_offers(self) -> dict[str, Any]:
|
|
||||||
"""
|
Returns:
|
||||||
Получить персональные предложения.
|
Словарь со статусами кворков.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
status = await client.other.get_kworks_status()
|
||||||
|
print(status)
|
||||||
|
"""
|
||||||
|
return await self.client._request("POST", "/kworksStatusList")
|
||||||
|
|
||||||
Returns:
|
async def get_offers(self) -> dict[str, Any]:
|
||||||
Список персональных предложений от Kwork.
|
"""
|
||||||
"""
|
Получить персональные предложения.
|
||||||
return await self._request("POST", "/offers")
|
|
||||||
|
Returns:
|
||||||
async def get_exchange_info(self) -> dict[str, Any]:
|
Список персональных предложений от Kwork.
|
||||||
"""
|
"""
|
||||||
Получить информацию об обмене валюты.
|
return await self.client._request("POST", "/offers")
|
||||||
|
|
||||||
Returns:
|
async def get_exchange_info(self) -> dict[str, Any]:
|
||||||
Информация о курсах валют и обмене.
|
"""
|
||||||
"""
|
Получить информацию об обмене валюты.
|
||||||
return await self._request("POST", "/exchangeInfo")
|
|
||||||
|
Returns:
|
||||||
async def get_channel(self) -> dict[str, Any]:
|
Информация о курсах валют и обмене.
|
||||||
"""
|
"""
|
||||||
Получить информацию о канале пользователя.
|
return await self.client._request("POST", "/exchangeInfo")
|
||||||
|
|
||||||
Returns:
|
async def get_channel(self) -> dict[str, Any]:
|
||||||
Данные канала (если есть).
|
"""
|
||||||
"""
|
Получить информацию о канале пользователя.
|
||||||
return await self._request("POST", "/getChannel")
|
|
||||||
|
Returns:
|
||||||
async def get_in_app_notification(self) -> dict[str, Any]:
|
Данные канала (если есть).
|
||||||
"""
|
"""
|
||||||
Получить внутриприложенное уведомление.
|
return await self.client._request("POST", "/getChannel")
|
||||||
|
|
||||||
Returns:
|
async def get_in_app_notification(self) -> dict[str, Any]:
|
||||||
Данные in-app уведомления.
|
"""
|
||||||
"""
|
Получить внутриприложенное уведомление.
|
||||||
return await self._request("POST", "/getInAppNotification")
|
|
||||||
|
Returns:
|
||||||
async def get_security_user_data(self) -> dict[str, Any]:
|
Данные in-app уведомления.
|
||||||
"""
|
"""
|
||||||
Получить данные безопасности пользователя.
|
return await self.client._request("POST", "/getInAppNotification")
|
||||||
|
|
||||||
Returns:
|
async def get_security_user_data(self) -> dict[str, Any]:
|
||||||
Информация о безопасности аккаунта.
|
"""
|
||||||
"""
|
Получить данные безопасности пользователя.
|
||||||
return await self._request("POST", "/getSecurityUserData")
|
|
||||||
|
Returns:
|
||||||
async def is_dialog_allow(self, user_id: int) -> bool:
|
Информация о безопасности аккаунта.
|
||||||
"""
|
"""
|
||||||
Проверить возможность начала диалога с пользователем.
|
return await self.client._request("POST", "/getSecurityUserData")
|
||||||
|
|
||||||
Args:
|
async def is_dialog_allow(self, user_id: int) -> bool:
|
||||||
user_id: ID пользователя для проверки.
|
"""
|
||||||
|
Проверить возможность начала диалога с пользователем.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user_id: ID пользователя для проверки.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True если диалог разрешён, False иначе.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
allowed = await client.other.is_dialog_allow(12345)
|
||||||
|
if allowed:
|
||||||
|
print("Можно написать сообщение")
|
||||||
|
"""
|
||||||
|
data = await self.client._request(
|
||||||
|
"POST",
|
||||||
|
"/isDialogAllow",
|
||||||
|
json={"user_id": user_id},
|
||||||
|
)
|
||||||
|
return data.get("allowed", False)
|
||||||
|
|
||||||
Returns:
|
async def get_viewed_kworks(self) -> list[Kwork]:
|
||||||
True если диалог разрешён, False иначе.
|
"""
|
||||||
|
Получить просмотренные кворки.
|
||||||
|
|
||||||
|
Возвращает список кворков, которые пользователь
|
||||||
|
просматривал ранее.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Список просмотренных кворков.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
viewed = await client.other.get_viewed_kworks()
|
||||||
|
print(f"Просмотрено: {len(viewed)} кворков")
|
||||||
|
"""
|
||||||
|
data = await self.client._request("POST", "/viewedCatalogKworks")
|
||||||
|
return [Kwork.model_validate(k) for k in data.get("kworks", [])]
|
||||||
|
|
||||||
Example:
|
async def get_favorite_categories(self) -> list[int]:
|
||||||
allowed = await client.is_dialog_allow(12345)
|
"""
|
||||||
if allowed:
|
Получить ID избранных категорий.
|
||||||
print("Можно написать сообщение")
|
|
||||||
"""
|
Returns:
|
||||||
data = await self._request(
|
Список ID категорий, добавленных в избранное.
|
||||||
"POST",
|
|
||||||
"/isDialogAllow",
|
Example:
|
||||||
json={"user_id": user_id},
|
cats = await client.other.get_favorite_categories()
|
||||||
)
|
print(f"Избранные категории: {cats}")
|
||||||
return data.get("allowed", False)
|
"""
|
||||||
|
data = await self.client._request("POST", "/favoriteCategories")
|
||||||
async def get_viewed_kworks(self) -> list[Kwork]:
|
return data.get("categories", [])
|
||||||
"""
|
|
||||||
Получить просмотренные кворки.
|
|
||||||
|
|
||||||
Возвращает список кворков, которые пользователь
|
async def update_settings(self, settings: dict[str, Any]) -> dict[str, Any]:
|
||||||
просматривал ранее.
|
"""
|
||||||
|
Обновить настройки пользователя.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
settings: Словарь с настройками для обновления.
|
||||||
|
Структура зависит от конкретных настроек.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Ответ API с подтверждением обновления.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
await client.other.update_settings({
|
||||||
|
"email_notifications": True,
|
||||||
|
"language": "ru"
|
||||||
|
})
|
||||||
|
"""
|
||||||
|
return await self.client._request("POST", "/updateSettings", json=settings)
|
||||||
|
|
||||||
Returns:
|
async def go_offline(self) -> dict[str, Any]:
|
||||||
Список просмотренных кворков.
|
"""
|
||||||
|
Установить статус пользователя "оффлайн".
|
||||||
|
|
||||||
|
Скрывает онлайн-статус от других пользователей.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Подтверждение изменения статуса.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
await client.other.go_offline()
|
||||||
|
"""
|
||||||
|
return await self.client._request("POST", "/offline")
|
||||||
|
|
||||||
Example:
|
async def get_actor(self) -> dict[str, Any]:
|
||||||
viewed = await client.get_viewed_kworks()
|
"""
|
||||||
print(f"Просмотрено: {len(viewed)} кворков")
|
Получить информацию об актёре (текущем пользователе).
|
||||||
"""
|
|
||||||
data = await self._request("POST", "/viewedCatalogKworks")
|
Returns:
|
||||||
return [Kwork.model_validate(k) for k in data.get("kworks", [])]
|
Данные актёра/пользователя.
|
||||||
|
"""
|
||||||
async def get_favorite_categories(self) -> list[int]:
|
return await self.client._request("POST", "/actor")
|
||||||
"""
|
|
||||||
Получить ID избранных категорий.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Список ID категорий, добавленных в избранное.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
cats = await client.get_favorite_categories()
|
|
||||||
print(f"Избранные категории: {cats}")
|
|
||||||
"""
|
|
||||||
data = await self._request("POST", "/favoriteCategories")
|
|
||||||
return data.get("categories", [])
|
|
||||||
|
|
||||||
async def update_settings(self, settings: dict[str, Any]) -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Обновить настройки пользователя.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
settings: Словарь с настройками для обновления.
|
|
||||||
Структура зависит от конкретных настроек.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Ответ API с подтверждением обновления.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
await client.update_settings({
|
|
||||||
"email_notifications": True,
|
|
||||||
"language": "ru"
|
|
||||||
})
|
|
||||||
"""
|
|
||||||
return await self._request("POST", "/updateSettings", json=settings)
|
|
||||||
|
|
||||||
async def go_offline(self) -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Установить статус пользователя "оффлайн".
|
|
||||||
|
|
||||||
Скрывает онлайн-статус от других пользователей.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Подтверждение изменения статуса.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
await client.go_offline()
|
|
||||||
"""
|
|
||||||
return await self._request("POST", "/offline")
|
|
||||||
|
|
||||||
async def get_actor(self) -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Получить информацию об актёре (текущем пользователе).
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Данные актёра/пользователя.
|
|
||||||
"""
|
|
||||||
return await self._request("POST", "/actor")
|
|
||||||
|
|
||||||
# ========== API Property Accessors ==========
|
# ========== API Property Accessors ==========
|
||||||
|
|
||||||
@ -1118,3 +1143,8 @@ class KworkClient:
|
|||||||
def notifications(self) -> NotificationsAPI:
|
def notifications(self) -> NotificationsAPI:
|
||||||
"""API уведомлений."""
|
"""API уведомлений."""
|
||||||
return self.NotificationsAPI(self)
|
return self.NotificationsAPI(self)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def other(self) -> OtherAPI:
|
||||||
|
"""Прочее API."""
|
||||||
|
return self.OtherAPI(self)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user