Source code for redditwarp.siteprocs.moderation.pull_users_ASYNC


from __future__ import annotations
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
    from ...client_ASYNC import Client
    from ...models.subreddit_user import (
        Moderator,
        ApprovedUser,
        BannedUser,
        MutedUser,
    )

from ...pagination.paginator_chaining_async_iterator import ImpartedPaginatorChainingAsyncIterator
from ...pagination.paginators.moderation.async1 import (
    ModeratorsAsyncPaginator,
    ApprovedUsersAsyncPaginator,
    BannedUsersAsyncPaginator,
    MutedUsersAsyncPaginator,
)

[docs]class PullUsers: def __init__(self, client: Client) -> None: self._client = client
[docs] def moderators(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[ModeratorsAsyncPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsAsyncPaginator(self._client, f'/api/v1/{sr}/moderators') return ImpartedPaginatorChainingAsyncIterator(p, amount)
[docs] def moderator_invitations(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[ModeratorsAsyncPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsAsyncPaginator(self._client, f'/api/v1/{sr}/moderators_invited') return ImpartedPaginatorChainingAsyncIterator(p, amount)
[docs] def editable_moderators(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[ModeratorsAsyncPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsAsyncPaginator(self._client, f'/api/v1/{sr}/moderators_editable') return ImpartedPaginatorChainingAsyncIterator(p, amount)
[docs] def approved_users(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[ApprovedUsersAsyncPaginator, ApprovedUser]: """Get redditors that relate to a subreddit. .. .PARAMETERS :param `str` sr: :param `Optional[int]` amount: .. .RETURNS :rtype: :class:`~.pagination.paginator_chaining_async_iterator.ImpartedPaginatorChainingAsyncIterator`\\[:class:`~.pagination.paginators.moderation.async1.ApprovedUsersAsyncPaginator`, :class:`~.models.subreddit_user.ApprovedUser`] .. .RAISES :raises redditwarp.exceptions.RedditError: + `SUBREDDIT_NOEXIST`: The target subreddit does not exist. + `SUBREDDIT_NO_ACCESS`: The subreddit cannot be accessed. :raises redditwarp.http.exceptions.StatusCodeException: + `403`: You don't have permission. """ p = ApprovedUsersAsyncPaginator(self._client, f'/api/v1/{sr}/contributors') return ImpartedPaginatorChainingAsyncIterator(p, amount)
[docs] def banned(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[BannedUsersAsyncPaginator, BannedUser]: """ Behaves similarly to :meth:`.approved_users`. """ p = BannedUsersAsyncPaginator(self._client, f'/api/v1/{sr}/banned') return ImpartedPaginatorChainingAsyncIterator(p, amount)
[docs] def muted(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingAsyncIterator[MutedUsersAsyncPaginator, MutedUser]: """ Behaves similarly to :meth:`.approved_users`. """ p = MutedUsersAsyncPaginator(self._client, f'/api/v1/{sr}/muted') return ImpartedPaginatorChainingAsyncIterator(p, amount)