Add vote for rants and comments

This commit is contained in:
dr 2024-12-03 22:25:03 +01:00
parent e7bce7abd2
commit f947d5f088
2 changed files with 28 additions and 1 deletions

View File

@ -32,6 +32,5 @@ See [tests](src/devranta/tests.py) for [examples](src/devranta/tests.py) on how
## Todo ## Todo
- voting comment
- edit message - edit message

View File

@ -1,5 +1,11 @@
from typing import Literal, Optional
import aiohttp import aiohttp
from enum import Enum
class VoteReason(Enum):
NOT_FOR_ME = 0
REPOST = 1
OFFENSIVE_SPAM = 2
class Api: class Api:
@ -168,6 +174,28 @@ class Api:
obj = await response.json() obj = await response.json()
return obj.get("success", False) return obj.get("success", False)
async def vote_rant(self, rant_id: int, vote: Literal[-1, 0, 1], reason: Optional[VoteReason] = None):
if not await self.ensure_login():
return None
async with self as session:
response = await session.post(
url=self.patch_url(f"devrant/rants/{rant_id}/vote"),
data=self.patch_auth({"vote": vote, "reason": reason.value if reason else None}),
)
obj = await response.json()
return obj.get("success", False)
async def vote_comment(self, comment_id: int, vote: Literal[-1, 0, 1], reason: Optional[VoteReason] = None):
if not await self.ensure_login():
return None
async with self as session:
response = await session.post(
url=self.patch_url(f"comments/{comment_id}/vote"),
data=self.patch_auth({"vote": vote, "reason": reason.value if reason else None}),
)
obj = await response.json()
return obj.get("success", False)
@property @property
async def notifs(self): async def notifs(self):
response = None response = None