From 719806d0252801f7c67f46bef57a18b324c19fff Mon Sep 17 00:00:00 2001 From: zbjdonald Date: Fri, 29 Oct 2021 15:15:59 +0800 Subject: [PATCH] feat:merge pull request add copy and share file utils --- synology_drive_api/files.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/synology_drive_api/files.py b/synology_drive_api/files.py index 1356713..cdba207 100644 --- a/synology_drive_api/files.py +++ b/synology_drive_api/files.py @@ -1,4 +1,5 @@ import io +import os from pathlib import Path from time import time, sleep from typing import Optional, Union, BinaryIO @@ -31,39 +32,39 @@ def get_teamfolder_info(self): return {} return {folder_info['name']: folder_info['file_id'] for folder_info in resp['data']['items']} - def share_file(self, path: str): + + def share_file(self, share_path: str): """ - :param path: id:23333333333 or "'team-folders/folder2/'" + TODO share file more detail params + :param share_path: id:23333333333 or "'team-folders/folder2/'" """ - if path.isdigit(): - path = f"id:{path}" + if share_path.isdigit(): + share_path = f"id:{share_path}" api_name = 'SYNO.SynologyDrive.AdvanceSharing' endpoint = 'entry.cgi' - params = {'api': api_name, 'version': 1, 'method': 'create', "path": path, "role": "editor" - } + params = {'api': api_name, 'version': 1, 'method': 'create', "path": share_path, "role": "editor"} re = self.session.http_put(endpoint, params=params) - - params2 = {'api': "SYNO.SynologyDrive.AdvanceSharing", 'sharing_link': re['data']['sharing_link'], "role": "editor", - 'method': 'update', 'version': 1, 'due_date': 0, 'path': path} - # print(params) + params2 = {'api': "SYNO.SynologyDrive.AdvanceSharing", 'sharing_link': re['data']['sharing_link'], + "role": "editor", + 'method': 'update', 'version': 1, 'due_date': 0, 'path': share_path} self.session.http_put(endpoint, params=params2) return re def copy(self, source: str, dist: str) -> dict: """ - :source : id:23333333333 or "'team-folders/folder2/'" - :dist: "'team-folders/folder2/temp.odoc'" + copy file or dir + :param source : id:23333333333 or "'team-folders/folder2/'" + :param dist: "'team-folders/folder2/temp.odoc'" """ endpoint = 'entry.cgi' distpath, distname = os.path.split(dist) api_name = "SYNO.Office.Node" params = {'api': api_name, 'version': 2, 'method': 'copy', - 'to_parent_folder': distpath, 'dry_run': 'true', 'name': distname, 'title': distname[:distname.index('.')], + 'to_parent_folder': distpath, 'dry_run': 'true', 'name': distname, + 'title': distname[:distname.index('.')], 'files': f'["{source}"]'} - # print(params) return self.session.http_put(endpoint, params=params) - def list_folder(self, dir_path: str) -> dict: """ :param dir_path: '/team-folders/folder_name/folder_name1' or '430167496067125111'