Source code for etoropy.rest.users_info
from __future__ import annotations
from typing import Any
from ..config.constants import API_PREFIX
from ._base import BaseRestClient
[docs]
class UsersInfoClient(BaseRestClient):
[docs]
async def search_users(
self,
*,
search_text: str | None = None,
period: str = "LastYear",
page: int | None = None,
page_size: int | None = None,
) -> Any:
query: dict[str, Any] = {"period": period}
if search_text is not None:
query["searchText"] = search_text
if page is not None:
query["page"] = page
if page_size is not None:
query["pageSize"] = page_size
return await self._get(f"{API_PREFIX}/user-info/people/search", query)
[docs]
async def get_user_profile(self, cid: int) -> Any:
"""Retrieve user profile by customer ID (cidList)."""
data = await self._get(f"{API_PREFIX}/user-info/people", {"cidList": cid})
if isinstance(data, dict) and "users" in data:
users = data["users"]
if users:
return users[0]
return data
[docs]
async def get_user_profile_by_username(self, username: str) -> Any:
"""Retrieve user profile by username."""
data = await self._get(f"{API_PREFIX}/user-info/people", {"usernames": username})
if isinstance(data, dict) and "users" in data:
users = data["users"]
if users:
return users[0]
return data
[docs]
async def get_user_portfolio(self, username: str) -> Any:
"""Retrieve a user's live public portfolio."""
return await self._get(f"{API_PREFIX}/user-info/people/{username}/portfolio/live")
[docs]
async def get_user_trade_info(self, username: str) -> Any:
return await self._get(f"{API_PREFIX}/user-info/people/{username}/trade-info")