SynologyKit 1.3.9

SynologyKit 1.3.9

alexiscn维护。



  • 作者
  • xushuifeng

SynologyKit

Swift的Synology文件API。

目录

特性

  • 支持QuickConnect登录
  • 支持IP/端口登录
  • 列出共享文件夹
  • 列出共享文件
  • 获取文件信息
  • 列出虚拟文件夹
  • 收藏夹管理(列表/添加/删除/编辑/全部替换)
  • 获取文件的缩略图
  • 获取目录大小
  • 计算文件MD5
  • 目录管理(创建/重命名/列表)
  • 复制移动文件
  • 删除文件(文件夹)
  • 压缩/解压缩文件
  • 后台任务管理(列表/清除完成)
  • 下载文件
  • 上传文件

安装

CocoaPods

SynologyKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod 'SynologyKit', '~>1.3.8'

Swift 包管理器

Swift 包管理器 是一个自动分发 Swift 代码的工具,并集成到 swift 编译器中。

设置好 Swift 包后,将 SynologyKit 作为依赖项添加到 Package.swift 中的 dependencies 值就像添加到依赖项一样简单。

dependencies: [
    .package(url: "https://github.com/alexiscn/SynologyKit.git", from: "1.3.8")
]

开始使用

其他 API 可参考 群晖官方文档

创建 SynologyClient

let address = "192.168.1.5"
let port = 5000
client = SynologyClient(host: address, port: port, enableHTTPS: false)

或通过快速连接 ID

client = SynologyClient(host: "your_quick_connect_id")

登录

在创建 SynologyClient 后,您可以使用以下代码进行登录

let account = "your_synology_account"
let password = "your_synology_password"
client.login(account: account, passwd: password) { [weak self] response in
      switch response {
      case .success(let authRes):
          self?.client?.updateSessionID(authRes.sid)
          self?.handleLoginSuccess()
          print(authRes.sid)
      case .failure(let error):
          print(error.description)
      }
  }

当获取到 sid 后,应使用 SessionID 更新 SynologyClient。然后您就可以访问所有 REST API。

列出共享文件夹

在列出文件夹文件之前,您应该首先列出共享文件夹。

client.listShareFolders { response in
    switch response {
    case .success(let result):
        if let shares = result.shares {
            print("share folders count:\(shares.count)")
        }
    case .failure(let error):
        print(error)
    }
}

列出文件夹

client.listFolder(folder) { response in
    switch response {
    case .success(let result):
        if let files = result.files {
            for file in files {
                print("filename: \(file.name), path:\(file.path), isDirectory:\(file.isdir)")
            }
        }
    case .failure(let error):
        print(error)
    }
}

下载文件

下载文件和使用 Alamofire 一样简单。

let destination: DownloadRequest.Destination = { (temporaryURL, response)  in
    let options = DownloadRequest.Options.removePreviousFile
    let localURL = URL(fileURLWithPath: NSHomeDirectory().appending("/Documents/\(file.name)"))
    return (localURL,options)
}

client.downloadFile(path: file.path, to: destination).downloadProgress { progress in
    print(progress)
}.response { response in
    if response.error == nil, let path = response.fileURL?.path {
        print("File Downloaded to :\(path)")
    }
}

上传文件

使用 Alamofire 完成上传文件。

client.upload(data: data, filename: "test.json", destinationFolderPath: folder, createParents: true, options: nil) { result in
    switch result {
    case .success(let request, _, _):
        request.uploadProgress { progress in
            print(progress)
        }.response { response in
            if response.error == nil {
                print("Uploaded")
            }
        }
    case .failure(let error):
        print(error)
    }
}

搜索文件

搜索文件

var options = SynologyClient.SearchOptions();
options.pattern = "*.jpg";
client.search(atFolderPath: folderPath, options: options) { result in
    switch result {
    case .success(let task):
        for file in task.files {
            print(file.path)
        } 
    case .failure(let error):
        print(error.description)
    }
}

许可证

SynologyKit 是 MIT 许可的。 许可证