Source code for MeowerBot.api.user

from typing import Literal
from urllib.parse import urljoin

from httpx import AsyncClient

from .shared import api_resp
from ..data.api.chats import ChatGroup
from ..data.api.reports import PagedRequest
from ..data.api.user import (
	Relationship
)
from ..data.generic import Post


[docs] class User: def __init__(self, client: AsyncClient) -> None: self.client = client async def _get(self, username, url, page=1, query=None, params=None): if query is None: query = dict() if params is None: params = dict() return await self.client.get(urljoin(f"/users/{username}/", url), params={"q": query, "p": page, **params})
[docs] async def get_posts(self, username, query, page=1): return api_resp(PagedRequest[Post], await self._get(username, "posts", query=query, page=page, params={"autoget": None}))
[docs] async def get_relationship(self, username): return api_resp(Relationship, await self._get(username, "relationship"))
[docs] async def edit_relationship(self, username, state: Literal[0, 1, 2]): return api_resp(Relationship, await self.client.patch(f"/users/{username}/relationship", json={"state": state}))
[docs] async def dm(self, username): return api_resp(ChatGroup, await self._get(username, 'dm'))