ad-password-self-service/utils/feishu/api_drive_folder.py

95 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding: utf-8
from __future__ import absolute_import, division, print_function, unicode_literals
from typing import TYPE_CHECKING, Tuple
from utils.feishu.dt_drive import DriveCreateFile, DriveFileToken, DriveFolderMeta
from utils.feishu.dt_help import make_datatype
if TYPE_CHECKING:
from utils.feishu.api import OpenLark
class APIDriveFolderMixin(object):
def create_drive_folder(self, user_access_token, folder_token, title):
"""新建文件夹
:type self: OpenLark
:param user_access_token: user_access_token
:type user_access_token: str
:param folder_token: 父文件夹的 token
:type folder_token: str
:param title: 要创建的文件夹名称
:type title: str
:return: 文件夹元信息
:rtype: DriveFolderMeta
该接口用于根据 folder_token 在该 folder 下创建文件夹
https://open.feishu.cn/document/ukTMukTMukTM/ukTNzUjL5UzM14SO1MTN
"""
url = self._gen_request_url('/open-apis/drive/explorer/v2/folder/{}'.format(folder_token))
body = {
'title': title,
}
res = self._post(url, body=body, auth_token=user_access_token)
return make_datatype(DriveCreateFile, res['data'])
def get_drive_folder_meta(self, user_access_token, folder_token):
"""获取文件夹元信息
:type self: OpenLark
:param user_access_token: user_access_token
:type user_access_token: str
:param folder_token: 文件夹的 token
:type folder_token: str
:return: 文件夹元信息
:rtype: DriveFolderMeta
该接口用于根据 folder_token 获取该文件夹的元信息
https://open.feishu.cn/document/ukTMukTMukTM/uAjNzUjLwYzM14CM2MTN
"""
url = self._gen_request_url('/open-apis/drive/explorer/v2/folder/{}/meta'.format(folder_token))
res = self._get(url, auth_token=user_access_token)
return make_datatype(DriveFolderMeta, res['data'])
def get_drive_root_folder_meta(self, user_access_token):
"""获取root folder我的空间 meta
:type self: OpenLark
:param user_access_token: user_access_token
:type user_access_token: str
:return: 文件夹元信息
:rtype: DriveFolderMeta
该接口用于获取 "我的文档" 的元信息
https://open.feishu.cn/document/ukTMukTMukTM/uAjNzUjLwYzM14CM2MTN
"""
url = self._gen_request_url('/open-apis/drive/explorer/v2/root_folder/meta')
res = self._get(url, auth_token=user_access_token)
return DriveFolderMeta(id=res['data']['id'],
token=res['data']['token'],
own_uid=res['data']['user_id'])
def get_drive_folder_children(self, user_access_token, folder_token):
"""获取文件夹下的文档清单
:type self: OpenLark
:param user_access_token: user_access_token
:type user_access_token: str
:param folder_token: 文件夹的 token
:type folder_token: str
:return: 该文件夹的文档清单,如 doc、sheet、bitable、folder
:rtype: list[DriveFileToken]
该接口用于获取 "我的文档" 的元信息
https://open.feishu.cn/document/ukTMukTMukTM/uEjNzUjLxYzM14SM2MTN
"""
url = self._gen_request_url('/open-apis/drive/explorer/v2/folder/{}/children'.format(folder_token))
res = self._get(url, auth_token=user_access_token)
return [make_datatype(DriveFileToken, i) for _, i in res['data']['children'].items()]