diff --git a/Package.swift b/Package.swift index f38c574d..e93c7b9c 100644 --- a/Package.swift +++ b/Package.swift @@ -11,7 +11,7 @@ let package = Package( name: "NextcloudKit", platforms: [ .macOS(.v10_15), - .iOS(.v12), + .iOS(.v13), .tvOS(.v13), .watchOS(.v6), .visionOS(.v1) diff --git a/Sources/NextcloudKit/NextcloudKit+API.swift b/Sources/NextcloudKit/NextcloudKit+API.swift index 7dbad3e1..8d381e95 100644 --- a/Sources/NextcloudKit/NextcloudKit+API.swift +++ b/Sources/NextcloudKit/NextcloudKit+API.swift @@ -205,6 +205,15 @@ public extension NextcloudKit { } } + func getServerStatus(serverUrl: String, + options: NKRequestOptions = NKRequestOptions()) async -> NextcloudKit.ServerInfoResult { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.getServerStatus(serverUrl: serverUrl) { _, serverInfoResult in + continuation.resume(returning: serverInfoResult) + } + }) + } + // MARK: - func downloadPreview(url: URL, @@ -240,6 +249,16 @@ public extension NextcloudKit { } } + func downloadPreview(url: URL, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.downloadPreview(url: url, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } + func downloadPreview(fileId: String, width: Int = 1024, height: Int = 1024, @@ -282,6 +301,17 @@ public extension NextcloudKit { } } + func downloadPreview(fileId: String, + etag: String? = nil, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, width: Int, height: Int, etag: String?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.downloadPreview(fileId: fileId, etag: etag, account: account, options: options) { account, width, height, etag, responseData, error in + continuation.resume(returning: (account: account, width: width, height: height, etag: etag, responseData: responseData, error: error)) + } + }) + } + func downloadTrashPreview(fileId: String, width: Int = 512, height: Int = 512, @@ -490,6 +520,16 @@ public extension NextcloudKit { } } + func getUserMetadata(account: String, + userId: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, userProfile: NKUserProfile?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.getUserMetadata(account: account, userId: userId) { account, userProfile, responseData, error in + continuation.resume(returning: (account: account, userProfile: userProfile, responseData: responseData, error: error)) + } + }) + } + func getUserProfile(account: String, options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, diff --git a/Sources/NextcloudKit/NextcloudKit+E2EE.swift b/Sources/NextcloudKit/NextcloudKit+E2EE.swift index 7644a8db..f75db087 100644 --- a/Sources/NextcloudKit/NextcloudKit+E2EE.swift +++ b/Sources/NextcloudKit/NextcloudKit+E2EE.swift @@ -48,6 +48,17 @@ public extension NextcloudKit { } } + func markE2EEFolder(fileId: String, + delete: Bool, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.markE2EEFolder(fileId: fileId, delete: delete, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } + func lockE2EEFolder(fileId: String, e2eToken: String?, e2eCounter: String?, @@ -101,6 +112,20 @@ public extension NextcloudKit { } } + func lockE2EEFolder(fileId: String, + e2eToken: String?, + e2eCounter: String?, + method: String, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, e2eToken: String?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.lockE2EEFolder(fileId: fileId, e2eToken: e2eToken, e2eCounter: e2eCounter, method: method, account: account, options: options) { account, e2eToken, responseData, error in + continuation.resume(returning: (account: account, e2eToken: e2eToken, responseData: responseData, error: error)) + } + }) + } + + func getE2EEMetadata(fileId: String, e2eToken: String?, account: String, @@ -201,6 +226,20 @@ public extension NextcloudKit { } } + func putE2EEMetadata(fileId: String, + e2eToken: String, + e2eMetadata: String?, + signature: String?, + method: String, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, metadata: String?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.putE2EEMetadata(fileId: fileId, e2eToken: e2eToken, e2eMetadata: e2eMetadata, signature: signature, method: method, account: account, options: options) { account, metadata, responseData, error in + continuation.resume(returning: (account: account, metadata: metadata, responseData: responseData, error: error)) + } + }) + } + // MARK: - func getE2EECertificate(user: String? = nil, @@ -257,6 +296,16 @@ public extension NextcloudKit { } } + func getE2EECertificate(user: String? = nil, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, certificate: String?, certificateUser: String?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.getE2EECertificate(user: user, account: account, options: options) { account, certificate, certificateUser, responseData, error in + continuation.resume(returning: (account: account, certificate: certificate, certificateUser: certificateUser, responseData: responseData, error: error)) + } + }) + } + func getE2EEPrivateKey(account: String, options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, diff --git a/Sources/NextcloudKit/NextcloudKit+Livephoto.swift b/Sources/NextcloudKit/NextcloudKit+Livephoto.swift index 1e84cd70..318d72bd 100644 --- a/Sources/NextcloudKit/NextcloudKit+Livephoto.swift +++ b/Sources/NextcloudKit/NextcloudKit+Livephoto.swift @@ -48,4 +48,15 @@ public extension NextcloudKit { } } } + + func setLivephoto(serverUrlfileNamePath: String, + livePhotoFile: String, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.setLivephoto(serverUrlfileNamePath: serverUrlfileNamePath, livePhotoFile: livePhotoFile, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } } diff --git a/Sources/NextcloudKit/NextcloudKit+NCText.swift b/Sources/NextcloudKit/NextcloudKit+NCText.swift index c5f1661e..4e4c703e 100644 --- a/Sources/NextcloudKit/NextcloudKit+NCText.swift +++ b/Sources/NextcloudKit/NextcloudKit+NCText.swift @@ -7,10 +7,10 @@ import Alamofire import SwiftyJSON public extension NextcloudKit { - func NCTextObtainEditorDetails(account: String, - options: NKRequestOptions = NKRequestOptions(), - taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, - completion: @escaping (_ account: String, _ editors: [NKEditorDetailsEditors], _ creators: [NKEditorDetailsCreators], _ responseData: AFDataResponse?, _ error: NKError) -> Void) { + func textObtainEditorDetails(account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, + completion: @escaping (_ account: String, _ editors: [NKEditorDetailsEditors], _ creators: [NKEditorDetailsCreators], _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files/api/v1/directEditing" var editors: [NKEditorDetailsEditors] = [] var creators: [NKEditorDetailsCreators] = [] @@ -70,13 +70,13 @@ public extension NextcloudKit { } } - func NCTextOpenFile(fileNamePath: String, - fileId: String? = nil, - editor: String, - account: String, - options: NKRequestOptions = NKRequestOptions(), - taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, - completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { + func textOpenFile(fileNamePath: String, + fileId: String? = nil, + editor: String, + account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, + completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { guard let fileNamePath = fileNamePath.urlEncoded else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -109,10 +109,10 @@ public extension NextcloudKit { } } - func NCTextGetListOfTemplates(account: String, - options: NKRequestOptions = NKRequestOptions(), - taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, - completion: @escaping (_ account: String, _ templates: [NKEditorTemplates]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { + func textGetListOfTemplates(account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, + completion: @escaping (_ account: String, _ templates: [NKEditorTemplates]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files/api/v1/directEditing/templates/text/textdocumenttemplate" var templates: [NKEditorTemplates] = [] guard let nkSession = nkCommonInstance.getSession(account: account), @@ -151,14 +151,22 @@ public extension NextcloudKit { } } - func NCTextCreateFile(fileNamePath: String, - editorId: String, - creatorId: String, - templateId: String, - account: String, - options: NKRequestOptions = NKRequestOptions(), - taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, - completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { + func textGetListOfTemplates(account: String, options: NKRequestOptions = NKRequestOptions()) async -> (account: String, templates: [NKEditorTemplates]?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + textGetListOfTemplates(account: account) { account, templates, responseData, error in + continuation.resume(returning: (account: account, templates: templates, responseData: responseData, error: error)) + } + }) + } + + func textCreateFile(fileNamePath: String, + editorId: String, + creatorId: String, + templateId: String, + account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, + completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { guard let fileNamePath = fileNamePath.urlEncoded else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift b/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift index 9bd3dea2..e2bb8311 100644 --- a/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift +++ b/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift @@ -50,4 +50,13 @@ public extension NextcloudKit { } options.queue.async { request(tosRequest) } } + + func getRecommendedFiles(account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, recommendations: [NKRecommendation]?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.getRecommendedFiles(account: account, options: options) { account, recommendations, responseData, error in + continuation.resume(returning: (account: account, recommendations: recommendations, responseData: responseData, error: error)) + } + }) + } } diff --git a/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift b/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift index eb73e694..5abb0df0 100644 --- a/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift +++ b/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift @@ -90,6 +90,14 @@ public extension NextcloudKit { } } + func getTemplatesRichdocuments(typeTemplate: String, account: String, options: NKRequestOptions = NKRequestOptions()) async -> (account: String, templates: [NKRichdocumentsTemplate]?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.getTemplatesRichdocuments(typeTemplate: typeTemplate, account: account, options: options) { account, templates, responseData, error in + continuation.resume(returning: (account: account, templates: templates, responseData: responseData, error: error)) + } + }) + } + func createRichdocuments(path: String, templateId: String, account: String, diff --git a/Sources/NextcloudKit/NextcloudKit+WebDAV.swift b/Sources/NextcloudKit/NextcloudKit+WebDAV.swift index afbe4ed6..2f863e79 100644 --- a/Sources/NextcloudKit/NextcloudKit+WebDAV.swift +++ b/Sources/NextcloudKit/NextcloudKit+WebDAV.swift @@ -52,6 +52,16 @@ public extension NextcloudKit { } } + func createFolder(serverUrlFileName: String, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, ocId: String?, date: Date?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, account: account, options: options) { account, ocId, date, responseData, error in + continuation.resume(returning: (account: account, ocId: ocId, date: date, responseData: responseData, error: error)) + } + }) + } + func deleteFileOrFolder(serverUrlFileName: String, account: String, options: NKRequestOptions = NKRequestOptions(), @@ -87,6 +97,16 @@ public extension NextcloudKit { } } + func deleteFileOrFolder(serverUrlFileName: String, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.deleteFileOrFolder(serverUrlFileName: serverUrlFileName, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } + func moveFileOrFolder(serverUrlFileNameSource: String, serverUrlFileNameDestination: String, overwrite: Bool, @@ -131,6 +151,18 @@ public extension NextcloudKit { } } + func moveFileOrFolder(serverUrlFileNameSource: String, + serverUrlFileNameDestination: String, + overwrite: Bool, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.moveFileOrFolder(serverUrlFileNameSource: serverUrlFileNameSource, serverUrlFileNameDestination: serverUrlFileNameDestination, overwrite: overwrite, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } + func copyFileOrFolder(serverUrlFileNameSource: String, serverUrlFileNameDestination: String, overwrite: Bool, @@ -176,6 +208,18 @@ public extension NextcloudKit { } } + func copyFileOrFolder(serverUrlFileNameSource: String, + serverUrlFileNameDestination: String, + overwrite: Bool, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.copyFileOrFolder(serverUrlFileNameSource: serverUrlFileNameSource, serverUrlFileNameDestination: serverUrlFileNameDestination, overwrite: overwrite, account: account, options: options) { account, responseData, error in + continuation.resume(returning: (account: account, responseData: responseData, error: error)) + } + }) + } + func readFileOrFolder(serverUrlFileName: String, depth: String, showHiddenFiles: Bool = true, @@ -238,6 +282,19 @@ public extension NextcloudKit { } } + func readFileOrFolder(serverUrlFileName: String, + depth: String, + showHiddenFiles: Bool = true, + requestBody: Data? = nil, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> (account: String, files: [NKFile]?, responseData: AFDataResponse?, error: NKError) { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: depth, showHiddenFiles: showHiddenFiles, requestBody: requestBody, account: account, options: options) { account, files, responseData, error in + continuation.resume(returning: (account: account, files: files, responseData: responseData, error: error)) + } + }) + } + func getFileFromFileId(fileId: String? = nil, link: String? = nil, account: String, @@ -445,6 +502,17 @@ public extension NextcloudKit { } } + func setFavorite(fileName: String, + favorite: Bool, + account: String, + options: NKRequestOptions = NKRequestOptions()) async -> NKError { + await withUnsafeContinuation({ continuation in + NextcloudKit.shared.setFavorite(fileName: fileName, favorite: favorite, account: account) { _, _, error in + continuation.resume(returning: error) + } + }) + } + func listingFavorites(showHiddenFiles: Bool, includeHiddenFiles: [String] = [], account: String,