Files
synology-drive-api/synology_drive_api/drive.py
zbjdonald f84471e47d feat:support 2fa
pump 1.0.11
2022-12-01 23:49:54 +08:00

49 lines
1.8 KiB
Python

from typing import Optional, Union
from synology_drive_api.base import SynologySession
from synology_drive_api.files import FilesMixin
from synology_drive_api.labels import LabelsMixin
from synology_drive_api.tasks import TasksMixin
class SynologyDrive(LabelsMixin, FilesMixin, TasksMixin):
# synology login session
session: SynologySession
# if you need multiple login session and label functions, disable label cache. Default behavior is enabling cache.
enable_label_cache: bool
def __init__(self,
username: str,
password: str,
ip_address: Optional[str] = None,
port: Union[None, str, int] = None,
nas_domain: Optional[str] = None,
https: bool = True,
enable_label_cache: bool = True,
dsm_version: str = '6',
max_retry: int = 2,
otp_code: Optional[str] = None) -> None:
self.session = SynologySession(username, password, ip_address, port, nas_domain, https, dsm_version, max_retry,
otp_code)
self.enable_label_cache = enable_label_cache
def __enter__(self):
self.login()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.logout()
def login(self):
return self.session.login('SynologyDrive')
def logout(self):
return self.session.logout('SynologyDrive')
def get_info(self):
api_name = 'SYNO.SynologyDrive.Info'
info = self.session.get_api_list(api_name)
endpoint = info['path']
params = {'api': api_name, 'version': info['maxVersion'], 'method': 'get', '_sid': self.session.sid}
return self.session.http_get(endpoint, params=params)