Source code for etoropy.models.feeds
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field
[docs]
class CreatePostRequest(BaseModel):
content: str
instrument_id: int | None = Field(None, alias="instrumentId", serialization_alias="instrumentId")
[docs]
class FeedPost(BaseModel):
model_config = {"extra": "allow"}
post_id: str = Field(alias="postId")
user_id: int = Field(alias="userId")
username: str
content: str
created_at: str = Field(alias="createdAt")
instrument_id: int | None = Field(None, alias="instrumentId")
likes_count: int = Field(0, alias="likesCount")
comments_count: int = Field(0, alias="commentsCount")
[docs]
class FeedResponse(BaseModel):
posts: list[FeedPost] = []
[docs]
class GetFeedParams(BaseModel):
page: int | None = None
page_size: int | None = None
[docs]
class UserSearchParams(BaseModel):
search_text: str | None = None
page: int | None = None
page_size: int | None = None
[docs]
class UserProfile(BaseModel):
model_config = {"extra": "allow"}
user_id: int = Field(alias="userId")
username: str
display_name: str = Field("", alias="displayName")
[docs]
class UserPortfolio(BaseModel):
model_config = {"extra": "allow"}
user_id: int = Field(alias="userId")
positions: list[Any] = []
[docs]
class CopierInfo(BaseModel):
model_config = {"extra": "allow"}
user_id: int = Field(alias="userId")
copiers_count: int = Field(0, alias="copiersCount")
[docs]
class CuratedList(BaseModel):
model_config = {"extra": "allow"}
list_id: int = Field(alias="listId")
name: str
items: list[Any] = []
[docs]
class MarketRecommendation(BaseModel):
model_config = {"extra": "allow"}
instrument_id: int = Field(alias="instrumentId")