@ -3,6 +3,7 @@ from datetime import datetime
from . import lib
from .views import UserView , CommunityView , CommunityModeratorView
class CreateCommunityRequest ( T . NamedTuple ) :
name : str
title : str
@ -13,38 +14,44 @@ class CreateCommunityRequest(T.NamedTuple):
nsfw : bool
auth : str
class CommunityResponse ( T . NamedTuple ) :
community : CommunityView
async def create ( payload : CreateCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community ' ,
" post " ,
endpoint = " /api/v1/community " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class GetCommunityRequest ( T . NamedTuple ) :
id : T . Optional [ int ] = None
name : T . Optional [ str ] = None
auth : T . Optional [ str ] = None
class GetCommunityResponse ( T . NamedTuple ) :
community : CommunityView
moderators : list [ CommunityModeratorView ]
online : int
admins : list [ UserView ] # hexbear
sitemods : list [ UserView ] # hexbear
admins : list [ UserView ] # hexbear
sitemods : list [ UserView ] # hexbear
async def get ( payload : GetCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' get ' ,
endpoint = ' /api/v1/community ' ,
" get " ,
endpoint = " /api/v1/community " ,
payload = payload ,
response_type = GetCommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class EditCommunityRequest ( T . NamedTuple ) :
edit_id : int
@ -56,14 +63,16 @@ class EditCommunityRequest(T.NamedTuple):
nsfw : bool
auth : str
async def edit ( payload : EditCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' put ' ,
endpoint = ' /api/v1/community ' ,
" put " ,
endpoint = " /api/v1/community " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class ListCommunitiesRequest ( T . NamedTuple ) :
sort : lib . SortType
@ -71,45 +80,52 @@ class ListCommunitiesRequest(T.NamedTuple):
limit : T . Optional [ int ] = None
auth : T . Optional [ str ] = None
class ListCommunitiesResponse ( T . NamedTuple ) :
communities : list [ CommunityView ]
async def get_list ( payload : ListCommunitiesRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' get ' ,
endpoint = ' /api/v1/community/list ' ,
" get " ,
endpoint = " /api/v1/community/list " ,
payload = payload ,
response_type = ListCommunitiesResponse ,
base_url = base_url
)
base_url = base_url ,
)
class FollowCommunityRequest ( T . NamedTuple ) :
community_id : int
follow : bool
auth : str
async def follow ( payload : FollowCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/follow ' ,
" post " ,
endpoint = " /api/v1/community/follow " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class DeleteCommunityRequest ( T . NamedTuple ) :
edit_id : int
deleted : bool
auth : str
async def delete ( payload : DeleteCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/delete ' ,
" post " ,
endpoint = " /api/v1/community/delete " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class RemoveCommunityRequest ( T . NamedTuple ) :
edit_id : int
@ -118,28 +134,32 @@ class RemoveCommunityRequest(T.NamedTuple):
expires : T . Optional [ int ]
auth : str
async def remove ( payload : RemoveCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/remove ' ,
" post " ,
endpoint = " /api/v1/community/remove " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class TransferCommunityRequest ( T . NamedTuple ) :
community_id : int
user_id : int
auth : str
async def transfer ( payload : TransferCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/transfer ' ,
" post " ,
endpoint = " /api/v1/community/transfer " ,
payload = payload ,
response_type = CommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class BanFromCommunityRequest ( T . NamedTuple ) :
community_id : int
@ -150,18 +170,21 @@ class BanFromCommunityRequest(T.NamedTuple):
expires : T . Optional [ int ]
auth : str
class BanFromCommunityResponse ( T . NamedTuple ) :
user : UserView
banned : bool
async def ban_user ( payload : BanFromCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/ban_user ' ,
" post " ,
endpoint = " /api/v1/community/ban_user " ,
payload = payload ,
response_type = BanFromCommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class AddModToCommunityRequest ( T . NamedTuple ) :
community_id : int
@ -169,23 +192,27 @@ class AddModToCommunityRequest(T.NamedTuple):
added : bool
auth : str
class AddModToCommunityResponse ( T . NamedTuple ) :
moderators : list [ CommunityModeratorView ]
# TODO Should be called "appoint mod"?
async def add_mod ( payload : AddModToCommunityRequest , base_url : str = lib . BASE_URL ) :
return await lib . request (
' post ' ,
endpoint = ' /api/v1/community/mod ' ,
" post " ,
endpoint = " /api/v1/community/mod " ,
payload = payload ,
response_type = AddModToCommunityResponse ,
base_url = base_url
)
base_url = base_url ,
)
class GetCommunitySettingsRequest ( T . NamedTuple ) :
community_id : int
auth : T . Optional [ str ] = None
class GetCommunitySettingsResponse ( T . NamedTuple ) :
read_only : bool
private : bool
@ -194,14 +221,18 @@ class GetCommunitySettingsResponse(T.NamedTuple):
published : datetime
allow_as_default : bool
async def get_settings ( payload : GetCommunitySettingsRequest , base_url : str = lib . BASE_URL ) :
async def get_settings (
payload : GetCommunitySettingsRequest , base_url : str = lib . BASE_URL
) :
return await lib . request (
' get ' ,
endpoint = ' /api/v1/community/settings ' ,
" get " ,
endpoint = " /api/v1/community/settings " ,
payload = payload ,
response_type = GetCommunitySettingsResponse ,
base_url = base_url
)
base_url = base_url ,
)
class EditCommunitySettingsRequest ( T . NamedTuple ) :
community_id : int
@ -212,6 +243,7 @@ class EditCommunitySettingsRequest(T.NamedTuple):
allow_as_default : bool
auth : str
class EditCommunitySettingsResponse ( T . NamedTuple ) :
read_only : bool
private : bool
@ -220,11 +252,14 @@ class EditCommunitySettingsResponse(T.NamedTuple):
published : datetime
allow_as_default : bool
async def edit_settings ( payload : EditCommunitySettingsRequest , base_url : str = lib . BASE_URL ) :
async def edit_settings (
payload : EditCommunitySettingsRequest , base_url : str = lib . BASE_URL
) :
return await lib . request (
' put ' ,
endpoint = ' /api/v1/community/settings ' ,
" put " ,
endpoint = " /api/v1/community/settings " ,
payload = payload ,
response_type = EditCommunitySettingsResponse ,
base_url = base_url
)
base_url = base_url ,
)