feat: バージョンの自動検出機能を追加 close #54

pull/55/head
yupix 2 years ago
parent bd40462816
commit a7560c368a
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Added
#### バージョンの自動検出機能が追加されました(β)
これはデフォルトで有効になっており、有効の間は自動的に `/api/meta` からバージョンを推論します。機能としては以下の通りです
- 11, 12, 13にヒットした場合それらにバージョンを変更する
- ヒットしなかった場合は何もしない
Misskey公式のバージョンニングを元に判断している為、独自のバージョニングを行っているフォーク等では正常に動作しない可能性があります。その際は `client.config.use_version_autodetect = False` とすることで無効にすることが可能です。また、手動でバージョンを設定する場合もoffにしてください。
一部のAPIはバージョンとフォークの種類で判断しています。そのため公式のバージョン的には使用できないが、フォークの機能として存在するという場合は報告をくださればサポートします。
- Added `remove_none` argument to request method.
- Added method to`ClientActions` class the given below.
- `get_announcements`

@ -1,5 +1,5 @@
from dataclasses import dataclass
from typing import Literal, TypedDict
from typing import Literal
@dataclass
@ -26,6 +26,7 @@ class Config:
is_ayuskey: bool = False,
use_version: Literal[13, 12, 11] = 12,
cache: CacheConfigData | None = None,
use_version_autodetect: bool = True,
) -> None:
self.distro: IMisskeyDistribution = distro
self.is_ssl: bool = is_ssl
@ -33,6 +34,7 @@ class Config:
self.is_ayuskey: bool = is_ayuskey
self.use_version: Literal[13, 12, 11] = use_version
self.cache: CacheConfig = CacheConfig(cache or CacheConfigData())
self.use_version_autodetect: bool = use_version_autodetect
def from_dict(
self,
@ -41,6 +43,7 @@ class Config:
is_ayuskey: bool | None = None,
use_version: Literal[13, 12, 11] | None = None,
cache: CacheConfigData | None = None,
use_version_autodetect: bool | None = None,
):
self.host = host or self.host
self.is_ssl = is_ssl if is_ssl is not None else self.is_ssl
@ -48,6 +51,7 @@ class Config:
self.use_version = use_version or self.use_version
if cache:
self.cache = CacheConfig(cache)
self.use_version_autodetect = use_version_autodetect or self.use_version_autodetect
config = Config()

@ -10,6 +10,7 @@ from mipac import __version__
from mipac.config import config
from mipac.errors.base import APIError
from mipac.types.endpoints import ENDPOINTS
from mipac.types.meta import IMeta
from mipac.types.user import IUserDetailed
from mipac.util import _from_json, remove_dict_empty, upper_to_lower
@ -117,4 +118,9 @@ class HTTPClient:
)
self._session = aiohttp.ClientSession(ws_response_class=MisskeyClientWebSocketResponse)
data: IUserDetailed = await self.request(Route('POST', '/api/i'), auth=True)
if config.use_version_autodetect:
meta: IMeta = await self.request(Route('POST', '/api/meta'), auth=True)
use_version = int(meta['version'].split('.')[0])
if isinstance(use_version, int) and use_version in (13, 12, 11):
config.use_version = use_version
return data

Loading…
Cancel
Save