Source code for etoropy.rest.watchlists
from __future__ import annotations
from typing import Any, cast
from ..config.constants import API_PREFIX
from ._base import BaseRestClient
[docs]
class WatchlistsClient(BaseRestClient):
[docs]
async def get_user_watchlists(self) -> list[Any]:
data = await self._get(f"{API_PREFIX}/watchlists")
if isinstance(data, dict) and "watchlists" in data:
return cast(list[Any], data["watchlists"])
return cast(list[Any], data)
[docs]
async def get_watchlist(self, watchlist_id: int) -> Any:
return await self._get(f"{API_PREFIX}/watchlists/{watchlist_id}")
[docs]
async def get_default_watchlist_items(self) -> list[Any]:
return cast(list[Any], await self._get(f"{API_PREFIX}/watchlists/default-watchlists/items"))
[docs]
async def create_watchlist(self, name: str, items: list[int] | None = None) -> Any:
body: dict[str, Any] = {"name": name}
if items:
body["items"] = items
return await self._post(f"{API_PREFIX}/watchlists", body)
[docs]
async def create_default_watchlist(self, name: str, items: list[int] | None = None) -> Any:
body: dict[str, Any] = {"name": name}
if items:
body["items"] = items
return await self._post(f"{API_PREFIX}/watchlists/default", body)
[docs]
async def delete_watchlist(self, watchlist_id: int) -> None:
await self._delete(f"{API_PREFIX}/watchlists/{watchlist_id}")
[docs]
async def rename_watchlist(self, watchlist_id: int, name: str) -> None:
await self._put(f"{API_PREFIX}/watchlists/{watchlist_id}/name", {"name": name})
[docs]
async def set_default_watchlist(self, watchlist_id: int) -> None:
await self._put(f"{API_PREFIX}/watchlists/{watchlist_id}/default")
[docs]
async def add_items(self, watchlist_id: int, instrument_ids: list[int]) -> None:
await self._post(f"{API_PREFIX}/watchlists/{watchlist_id}/items", {"items": instrument_ids})
[docs]
async def remove_items(self, watchlist_id: int, instrument_ids: list[int]) -> None:
await self._delete(f"{API_PREFIX}/watchlists/{watchlist_id}/items", {"items": instrument_ids})
[docs]
async def update_items(self, watchlist_id: int, instrument_ids: list[int]) -> None:
await self._put(f"{API_PREFIX}/watchlists/{watchlist_id}/items", {"items": instrument_ids})
[docs]
async def change_rank(self, watchlist_id: int, rank: int) -> None:
await self._put(f"{API_PREFIX}/watchlists/{watchlist_id}/rank", {"rank": rank})
[docs]
async def get_public_watchlists(self, user_id: int) -> list[Any]:
return cast(list[Any], await self._get(f"{API_PREFIX}/watchlists/users/{user_id}/public"))
[docs]
async def get_public_watchlist(self, watchlist_id: int) -> Any:
return await self._get(f"{API_PREFIX}/watchlists/public/{watchlist_id}")