feat: InstanceMetaをより良い形で再実装

pull/32/head
yupix 2 years ago
parent eb624687c5
commit 2cc22ea20e
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -3,7 +3,12 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.models.lite.instance import LiteInstanceMeta
from mipac.types.instance import IFederationInstance, IInstanceMeta
from mipac.types.instance import (
IFederationInstance,
IInstanceFeatures,
IInstanceMeta,
IInstancePolicies,
)
if TYPE_CHECKING:
from mipac.client import ClientActions
@ -115,12 +120,11 @@ class FederationInstance:
return self.__instance.get('last_communicated_at')
class InstanceMeta(LiteInstanceMeta):
class InstanceFeatures:
def __init__(
self, instance: IInstanceMeta, *, client: ClientActions
self, features: IInstanceFeatures, *, client: ClientActions
) -> None:
super().__init__(instance, client=client)
self.__features = instance['features']
self.__features = features
@property
def registration(self) -> bool:
@ -173,3 +177,116 @@ class InstanceMeta(LiteInstanceMeta):
@property
def miauth(self) -> bool:
return self.__features['miauth']
class InstancePolicies:
def __init__(self, policies: IInstancePolicies) -> None:
self.__policies = policies
@property
def gtl_available(self) -> bool:
return self.__policies['gtl_available']
@property
def ltl_available(self) -> bool:
return self.__policies['ltl_available']
@property
def can_public_note(self) -> bool:
return self.__policies['can_public_note']
@property
def can_invite(self) -> bool:
return self.__policies['can_invite']
@property
def can_manage_custom_emojis(self) -> bool:
return self.__policies['can_manage_custom_emojis']
@property
def can_hide_ads(self) -> bool:
return self.__policies['can_hide_ads']
@property
def drive_capacity_mb(self) -> int:
return self.__policies['drive_capacity_mb']
@property
def pin_limit(self) -> int:
return self.__policies['pin_limit']
@property
def antenna_limit(self) -> int:
return self.__policies['antenna_limit']
@property
def word_mute_limit(self) -> int:
return self.__policies['word_mute_limit']
@property
def webhook_limit(self) -> int:
return self.__policies['webhook_limit']
@property
def clip_limit(self) -> int:
return self.__policies['clip_limit']
@property
def note_each_clips_limit(self) -> int:
return self.__policies['note_each_clips_limit']
@property
def user_list_limit(self) -> int:
return self.__policies['user_list_limit']
@property
def user_each_user_lists_limit(self) -> int:
return self.__policies['user_each_user_lists_limit']
@property
def rate_limit_factor(self) -> int:
return self.__policies['rate_limit_factor']
class InstanceMeta(LiteInstanceMeta):
def __init__(
self, instance: IInstanceMeta, *, client: ClientActions
) -> None:
super().__init__(instance, client=client)
self.__meta = instance
@property
def policies(self) -> InstancePolicies | None:
return (
InstancePolicies(self.__meta['policies'])
if 'policies' in self.__meta
else None
)
@property
def features(self):
return InstanceFeatures(self.__meta['features'], client=self.__client)
@property
def cache_remote_files(self) -> bool:
return self.__meta['cache_remote_files']
@property
def pinned_pages(self) -> list[str]:
return self.__meta.get('pinned_pages', [])
@property
def pinned_clip_id(self) -> str | None:
return self.__meta.get('pinned_clip_id')
@property
def require_setup(self) -> bool:
return self.__meta.get('require_setup', False)
@property
def proxy_account_name(self) -> str | None:
return self.__meta.get('proxy_account_name')
@property
def proxy_account(self) -> str | None:
return self.__meta.get('proxy_account')

Loading…
Cancel
Save