from ProjectCfg import DOMAIN from .CallServer import _make_request from typing import List,Any,Optional,Dict ###==========================帖子管理============================ def GetFeaturedPosts(Authorization: str) -> dict: """获取精选帖子""" url = f"{DOMAIN}/posts/featured" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) def GetPosts(Authorization: str, offset: int = 0, take: int = 20, pub: Optional[str] = None, realm: Optional[str] = None, post_type: Optional[int] = None, categories: Optional[List[str]] = None, tags: Optional[List[str]] = None, query: Optional[str] = None, vector: bool = False, media: bool = False, shuffle: bool = False, replies: Optional[bool] = None, pinned: Optional[bool] = None) -> dict: """获取帖子列表""" url = f"{DOMAIN}/posts" headers = {'accept': 'application/json', 'Authorization': Authorization} params = { "offset": offset, "take": take, "pub": pub, "realm": realm, "type": post_type, "categories": categories, "tags": tags, "query": query, "vector": vector, "media": media, "shuffle": shuffle, "replies": replies, "pinned": pinned, } return _make_request('GET', url, headers, params=params) def PostPost(Authorization: str, title: str, description: str, slug: str, content: str, visibility: int, post_type: int, embed_view: Optional[Dict[str, Any]] = None, tags: Optional[List[str]] = None, categories: Optional[List[str]] = None, attachments: Optional[List[str]] = None, published_at: Optional[str] = None, replied_post_id: Optional[str] = None, forwarded_post_id: Optional[str] = None, realm_id: Optional[str] = None, poll_id: Optional[str] = None) -> dict: """创建帖子""" body = { "title": title, "description": description, "slug": slug, "content": content, "visibility": visibility, "type": post_type, "embed_view": embed_view, "tags": tags, "categories": categories, "attachments": attachments, "published_at": published_at, "replied_post_id": replied_post_id, "forwarded_post_id": forwarded_post_id, "realm_id": realm_id, "poll_id": poll_id, } url = f"{DOMAIN}/posts" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) def GetPostById(Authorization: str, post_id: str) -> dict: """获取帖子详情""" url = f"{DOMAIN}/posts/{post_id}" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) def PatchPost(Authorization: str, post_id: str, title: Optional[str] = None, description: Optional[str] = None, slug: Optional[str] = None, content: Optional[str] = None, visibility: Optional[int] = None, post_type: Optional[int] = None, embed_view: Optional[Dict[str, Any]] = None, tags: Optional[List[str]] = None, categories: Optional[List[str]] = None, attachments: Optional[List[str]] = None, published_at: Optional[str] = None, replied_post_id: Optional[str] = None, forwarded_post_id: Optional[str] = None, realm_id: Optional[str] = None, poll_id: Optional[str] = None) -> dict: """修改帖子""" body = { "title": title, "description": description, "slug": slug, "content": content, "visibility": visibility, "type": post_type, "embed_view": embed_view, "tags": tags, "categories": categories, "attachments": attachments, "published_at": published_at, "replied_post_id": replied_post_id, "forwarded_post_id": forwarded_post_id, "realm_id": realm_id, "poll_id": poll_id, } url = f"{DOMAIN}/posts/{post_id}" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('PATCH', url, headers, request_body=body) def DeletePost(Authorization: str, post_id: str) -> dict: """删除帖子""" url = f"{DOMAIN}/posts/{post_id}" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('DELETE', url, headers, normal_codes=[204]) def GetPostReactions(Authorization: str, post_id: str, symbol: Optional[str] = None, offset: int = 0, take: int = 20) -> dict: """获取帖子反应""" url = f"{DOMAIN}/posts/{post_id}/reactions" headers = {'accept': 'application/json', 'Authorization': Authorization} params = {"symbol": symbol, "offset": offset, "take": take} return _make_request('GET', url, headers, params=params) def PostPostReaction(Authorization: str, post_id: str, symbol: str, attitude: int) -> dict: """发送帖子反应""" body = {"symbol": symbol, "attitude": attitude} url = f"{DOMAIN}/posts/{post_id}/reactions" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) def GetFeaturedPostReplies(Authorization: str, post_id: str) -> dict: """获取精选帖子回复""" url = f"{DOMAIN}/posts/{post_id}/replies/featured" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) def GetPinnedPostReplies(Authorization: str, post_id: str) -> dict: """获取置顶帖子回复""" url = f"{DOMAIN}/posts/{post_id}/replies/pinned" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) def GetPostReplies(Authorization: str, post_id: str, offset: int = 0, take: int = 20) -> dict: """获取帖子回复""" url = f"{DOMAIN}/posts/{post_id}/replies" headers = {'accept': 'application/json', 'Authorization': Authorization} params = {"offset": offset, "take": take} return _make_request('GET', url, headers, params=params) def GetPostAwards(Authorization: str, post_id: str, offset: int = 0, take: int = 20) -> dict: """获取帖子奖励""" url = f"{DOMAIN}/posts/{post_id}/awards" headers = {'accept': 'application/json', 'Authorization': Authorization} params = {"offset": offset, "take": take} return _make_request('GET', url, headers, params=params) def PostPostAward(Authorization: str, post_id: str, amount: float, attitude: int, message: Optional[str] = None) -> dict: """发送帖子奖励""" body = {"amount": amount, "attitude": attitude, "message": message} url = f"{DOMAIN}/posts/{post_id}/awards" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) def PostPinPost(Authorization: str, post_id: str, mode: int) -> dict: """置顶帖子""" body = {"mode": mode} url = f"{DOMAIN}/posts/{post_id}/pin" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) def DeletePinPost(Authorization: str, post_id: str) -> dict: """取消置顶帖子""" url = f"{DOMAIN}/posts/{post_id}/pin" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('DELETE', url, headers, normal_codes=[204])