Source code for redditwarp.siteprocs.moderation.pull_users_SYNC


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

from ...pagination.paginator_chaining_iterator import ImpartedPaginatorChainingIterator
from ...pagination.paginators.moderation.sync1 import (
    ModeratorsPaginator,
    ApprovedUsersPaginator,
    BannedUsersPaginator,
    MutedUsersPaginator,
)

[docs]class PullUsers: def __init__(self, client: Client) -> None: self._client = client
[docs] def moderators(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[ModeratorsPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsPaginator(self._client, f'/api/v1/{sr}/moderators') return ImpartedPaginatorChainingIterator(p, amount)
[docs] def moderator_invitations(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[ModeratorsPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsPaginator(self._client, f'/api/v1/{sr}/moderators_invited') return ImpartedPaginatorChainingIterator(p, amount)
[docs] def editable_moderators(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[ModeratorsPaginator, Moderator]: """ Behaves similarly to :meth:`.approved_users`. """ p = ModeratorsPaginator(self._client, f'/api/v1/{sr}/moderators_editable') return ImpartedPaginatorChainingIterator(p, amount)
[docs] def approved_users(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[ApprovedUsersPaginator, ApprovedUser]: """Get redditors that relate to a subreddit. .. .PARAMETERS :param `str` sr: :param `Optional[int]` amount: .. .RETURNS :rtype: :class:`~.pagination.paginator_chaining_iterator.ImpartedPaginatorChainingIterator`\\[:class:`~.pagination.paginators.moderation.sync1.ApprovedUsersPaginator`, :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 = ApprovedUsersPaginator(self._client, f'/api/v1/{sr}/contributors') return ImpartedPaginatorChainingIterator(p, amount)
[docs] def banned(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[BannedUsersPaginator, BannedUser]: """ Behaves similarly to :meth:`.approved_users`. """ p = BannedUsersPaginator(self._client, f'/api/v1/{sr}/banned') return ImpartedPaginatorChainingIterator(p, amount)
[docs] def muted(self, sr: str, amount: Optional[int] = None) -> ImpartedPaginatorChainingIterator[MutedUsersPaginator, MutedUser]: """ Behaves similarly to :meth:`.approved_users`. """ p = MutedUsersPaginator(self._client, f'/api/v1/{sr}/muted') return ImpartedPaginatorChainingIterator(p, amount)