feat: get_all_attached_notes メソッドを追加

pull/109/head
yupix 7 months ago
parent 7599d20230
commit 6e7fd405b9
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -1,8 +1,9 @@
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING, AsyncGenerator from typing import TYPE_CHECKING, AsyncGenerator, override
from mipac.abstract.action import AbstractAction from mipac.abstract.action import AbstractAction
from mipac.errors.base import ParameterError
from mipac.http import HTTPClient, Route from mipac.http import HTTPClient, Route
from mipac.models.drive import File from mipac.models.drive import File
from mipac.models.note import Note from mipac.models.note import Note
@ -53,7 +54,10 @@ class ClientFileActions(AbstractAction):
file_id = file_id or self.__file_ids file_id = file_id or self.__file_ids
data = { if file_id is None:
raise ParameterError("file_id is required")
body = {
"sinceId": since_id, "sinceId": since_id,
"untilId": until_id, "untilId": until_id,
"limit": limit, "limit": limit,
@ -61,10 +65,41 @@ class ClientFileActions(AbstractAction):
} }
raw_notes: list[INote] = await self._session.request( raw_notes: list[INote] = await self._session.request(
Route("POST", "/api/drive/files/attached-notes"), json=data, auth=True Route("POST", "/api/drive/files/attached-notes"), json=body, auth=True
) )
return [Note(raw_note, client=self._client) for raw_note in raw_notes] return [Note(raw_note, client=self._client) for raw_note in raw_notes]
async def get_all_attached_notes(
self,
since_id: str | None = None,
until_id: str | None = None,
limit: int = 10,
*,
file_id: str | None = None,
) -> AsyncGenerator[Note, None]:
file_id = file_id or self.__file_ids
if file_id is None:
raise ParameterError("file_id is required")
body = {
"sinceId": since_id,
"untilId": until_id,
"limit": limit,
"fileId": file_id,
}
pagination = Pagination[INote](
self._session,
Route("POST", "/api/drive/files/attached-notes"),
json=body,
auth=True,
)
while pagination.is_final is False:
for raw_note in await pagination.next():
yield Note(raw_note, client=self._client)
async def delete(self, *, file_id: str | None = None) -> bool: async def delete(self, *, file_id: str | None = None) -> bool:
"""Delete a file """Delete a file
@ -219,6 +254,7 @@ class FileActions(ClientFileActions):
for raw_file in await pagination.next(): for raw_file in await pagination.next():
yield File(raw_file, client=self._client) yield File(raw_file, client=self._client)
@override
async def get_attached_notes( async def get_attached_notes(
self, self,
file_id: str, file_id: str,
@ -251,6 +287,17 @@ class FileActions(ClientFileActions):
since_id=since_id, until_id=until_id, limit=limit, file_id=file_id since_id=since_id, until_id=until_id, limit=limit, file_id=file_id
) )
@override
async def get_all_attached_notes(
self,
file_id: str,
since_id: str | None = None,
until_id: str | None = None,
limit: int = 10,
) -> AsyncGenerator[Note, None]:
async for i in super().get_all_attached_notes(since_id, until_id, limit, file_id=file_id):
yield i
@credentials_required @credentials_required
async def check_existence(self, md5: str) -> bool: async def check_existence(self, md5: str) -> bool:
"""Check if a file exists in the drive """Check if a file exists in the drive

Loading…
Cancel
Save