mirror of
https://github.com/zbjdonald/synology-drive-api.git
synced 2025-07-21 23:50:18 +00:00
49 lines
1.8 KiB
Python
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)
|