From 00944831c937061181cffe0c9259ccbf804937bb Mon Sep 17 00:00:00 2001 From: yupix Date: Fri, 9 Feb 2024 08:51:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20get=5Fall=5Ffiles=20=E3=83=A1=E3=82=BD?= =?UTF-8?q?=E3=83=83=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mipac/actions/drive/files.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/mipac/actions/drive/files.py b/mipac/actions/drive/files.py index b4580cc..68cdf22 100644 --- a/mipac/actions/drive/files.py +++ b/mipac/actions/drive/files.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, AsyncGenerator from mipac.abstract.action import AbstractAction from mipac.http import HTTPClient, Route @@ -9,6 +9,7 @@ from mipac.models.note import Note from mipac.types.drive import IDriveSort, IFile from mipac.types.note import INote from mipac.utils.format import bool_to_string, remove_dict_missing +from mipac.utils.pagination import Pagination from mipac.utils.util import MISSING, credentials_required if TYPE_CHECKING: @@ -192,6 +193,32 @@ class FileActions(ClientFileActions): ) return [File(raw_file, client=self._client) for raw_file in raw_files] + async def get_all_files( + self, + limit: int = 10, + since_id: str | None = None, + until_id: str | None = None, + folder_id: str | None = None, + type: str | None = None, + sort: IDriveSort | None = None, + ) -> AsyncGenerator[File, None]: + body = { + "limit": limit, + "sinceId": since_id, + "untilId": until_id, + "folderId": folder_id, + "type": type, + "sort": sort, + } + + pagination = Pagination[IFile]( + self._session, Route("POST", "/api/drive/files"), json=body, auth=True + ) + + while pagination.is_final is False: + for raw_file in await pagination.next(): + yield File(raw_file, client=self._client) + async def get_attached_notes( self, file_id: str,