Merge pull request 'Add vote for rants and comments' (#1) from dr/devranta:vote into main
All checks were successful
devranta build / Build (push) Successful in 1m10s

Reviewed-on: #1
This commit is contained in:
retoor 2024-12-03 22:12:48 +00:00
commit d1f8768b15
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