diff --git a/Sources/NextcloudKit/NKCommon.swift b/Sources/NextcloudKit/NKCommon.swift index 6670c4e5..bd461328 100644 --- a/Sources/NextcloudKit/NKCommon.swift +++ b/Sources/NextcloudKit/NKCommon.swift @@ -283,7 +283,9 @@ public struct NKCommon: Sendable { return "\(identifier).\(account)" } - public func getStandardHeaders(account: String, options: NKRequestOptions? = nil) -> HTTPHeaders? { + public func getStandardHeaders(account: String, + options: NKRequestOptions? = nil, + contentType: String = "application/x-www-form-urlencoded") -> HTTPHeaders? { guard let session = nksessions.session(forAccount: account) else { return nil } @@ -294,14 +296,7 @@ public struct NKCommon: Sendable { if let customUserAgent = options?.customUserAgent { headers.update(.userAgent(customUserAgent)) } - if let contentType = options?.contentType { - headers.update(.contentType(contentType)) - } else { - headers.update(.contentType("application/x-www-form-urlencoded")) - } - if options?.contentType != "application/xml" { - headers.update(name: "Accept", value: "application/json") - } + headers.update(.contentType(contentType)) headers.update(name: "OCS-APIRequest", value: "true") for (key, value) in options?.customHeader ?? [:] { headers.update(name: key, value: value) @@ -328,10 +323,7 @@ public struct NKCommon: Sendable { return headers } - public func createStandardUrl(serverUrl: String, endpoint: String, options: NKRequestOptions) -> URLConvertible? { - if let endpoint = options.endpoint { - return URL(string: endpoint) - } + public func createStandardUrl(serverUrl: String, endpoint: String) -> URLConvertible? { guard var serverUrl = serverUrl.urlEncoded else { return nil } if serverUrl.last != "/" { serverUrl = serverUrl + "/" } diff --git a/Sources/NextcloudKit/NextcloudKit+API.swift b/Sources/NextcloudKit/NextcloudKit+API.swift index b9239d86..9b6fe8bc 100644 --- a/Sources/NextcloudKit/NextcloudKit+API.swift +++ b/Sources/NextcloudKit/NextcloudKit+API.swift @@ -102,7 +102,7 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -169,7 +169,7 @@ public extension NextcloudKit { var externalSites: [NKExternalSite] = [] let endpoint = "ocs/v2.php/apps/external/api/v1" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, externalSites, nil, .urlError) } } @@ -261,7 +261,7 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ responseData: AFDataResponse?, ServerInfoResult) -> Void) { let endpoint = "status.php" - guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint, options: options) else { + guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint) else { return options.queue.async { completion(nil, ServerInfoResult.failure(.urlError)) } } var headers: HTTPHeaders? @@ -438,7 +438,7 @@ public extension NextcloudKit { // let endpoint = "index.php/core/preview?fileId=\(fileId)&x=\(width)&y=\(height)&a=\(crop)&mode=\(cropMode)&forceIcon=\(forceIcon)&mimeFallback=\(mimeFallback)&etag=\(etag)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, width, height, nil, nil, .urlError) } } @@ -550,7 +550,7 @@ public extension NextcloudKit { let endpoint = "index.php/apps/files_trashbin/preview?fileId=\(fileId)&x=\(width)&y=\(height)&a=\(crop)&mode=\(cropMode)&forceIcon=\(forceIcon)&mimeFallback=\(mimeFallback)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, width, height, nil, .urlError) } } @@ -644,7 +644,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ imageAvatar: UIImage?, _ imageOriginal: UIImage?, _ etag: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/avatar/\(user)/\(sizeImage)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, nil, .urlError) } } @@ -861,12 +861,10 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ userProfile: NKUserProfile?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/cloud/users/\(userId)" - /// - options.contentType = "application/json" - /// + guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json") else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -934,12 +932,9 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ userProfile: NKUserProfile?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/cloud/user" - /// - options.contentType = "application/json" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json") else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -1055,15 +1050,15 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ wipe: Bool, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/core/wipe/check" let parameters: [String: Any] = ["token": token] - /// - options.contentType = "application/json" - /// - guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint, options: options) else { + + guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint) else { return options.queue.async { completion(account, false, nil, .urlError) } } - var headers: HTTPHeaders? + var headers: HTTPHeaders = [ + "Content-Type": "application/json", + ] if let userAgent = options.customUserAgent { - headers = [HTTPHeader.userAgent(userAgent)] + headers.add(.userAgent(userAgent)) } unauthorizedSession.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers).validate(statusCode: 200..<300).onURLSessionTaskCreation { task in @@ -1134,15 +1129,14 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/core/wipe/success" let parameters: [String: Any] = ["token": token] - /// - options.contentType = "application/json" - /// - guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint, options: options) else { + guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint) else { return options.queue.async { completion(account, nil, .urlError) } } - var headers: HTTPHeaders? + var headers: HTTPHeaders = [ + "Content-Type": "application/json", + ] if let userAgent = options.customUserAgent { - headers = [HTTPHeader.userAgent(userAgent)] + headers.add(.userAgent(userAgent)) } unauthorizedSession.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers).validate(statusCode: 200..<300).onURLSessionTaskCreation { task in @@ -1238,7 +1232,7 @@ public extension NextcloudKit { } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, activities, activityFirstKnown, activityLastGiven, nil, .urlError) } } @@ -1366,7 +1360,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ notifications: [NKNotifications]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/notifications/api/v2/notifications" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -1481,7 +1475,7 @@ public extension NextcloudKit { var url: URLConvertible? if serverUrl == nil { let endpoint = "ocs/v2.php/apps/notifications/api/v2/notifications/\(idNotification)" - url = self.nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options) + url = self.nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint) } else { url = serverUrl?.asUrl } @@ -1562,7 +1556,7 @@ public extension NextcloudKit { "format": "json" ] guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -1633,12 +1627,10 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/security_guard/diagnostics" - /// - options.contentType = "application/json" - /// + guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json") else { return options.queue.async { completion(account, nil, .urlError) } } var urlRequest: URLRequest diff --git a/Sources/NextcloudKit/NextcloudKit+Assistant.swift b/Sources/NextcloudKit/NextcloudKit+Assistant.swift index 1b9bdf6a..ac39694a 100644 --- a/Sources/NextcloudKit/NextcloudKit+Assistant.swift +++ b/Sources/NextcloudKit/NextcloudKit+Assistant.swift @@ -21,7 +21,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ types: [NKTextProcessingTaskType]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/textprocessing/tasktypes" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -99,7 +99,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ task: NKTextProcessingTask?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/textprocessing/schedule" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -184,7 +184,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ task: NKTextProcessingTask?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/textprocessing/task/\(taskId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -259,7 +259,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ task: NKTextProcessingTask?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/textprocessing/task/\(taskId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -334,7 +334,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ task: [NKTextProcessingTask]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/textprocessing/tasks/app/\(appId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+AssistantV2.swift b/Sources/NextcloudKit/NextcloudKit+AssistantV2.swift index 1f544c76..20dbead4 100644 --- a/Sources/NextcloudKit/NextcloudKit+AssistantV2.swift +++ b/Sources/NextcloudKit/NextcloudKit+AssistantV2.swift @@ -23,7 +23,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ types: [TaskTypeData]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/taskprocessing/tasktypes" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -104,7 +104,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ task: AssistantTask?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/taskprocessing/schedule" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -185,7 +185,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ tasks: TaskList?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/taskprocessing/tasks?taskType=\(taskType)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -260,7 +260,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "/ocs/v2.php/taskprocessing/task/\(taskId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Capabilities.swift b/Sources/NextcloudKit/NextcloudKit+Capabilities.swift index 11d289ed..61d34244 100644 --- a/Sources/NextcloudKit/NextcloudKit+Capabilities.swift +++ b/Sources/NextcloudKit/NextcloudKit+Capabilities.swift @@ -28,7 +28,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ capabilities: NKCapabilities.Capabilities?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v1.php/cloud/capabilities" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Comments.swift b/Sources/NextcloudKit/NextcloudKit+Comments.swift index 25d25a2d..fb16f8fc 100644 --- a/Sources/NextcloudKit/NextcloudKit+Comments.swift +++ b/Sources/NextcloudKit/NextcloudKit+Comments.swift @@ -20,11 +20,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ items: [NKComments]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } let serverUrlEndpoint = nkSession.urlBase + "/" + nkSession.dav + "/comments/files/\(fileId)" @@ -108,11 +105,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - /// - options.contentType = "application/json" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json") else { return options.queue.async { completion(account, nil, .urlError) } } let serverUrlEndpoint = nkSession.urlBase + "/" + nkSession.dav + "/comments/files/\(fileId)" @@ -192,11 +186,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, .urlError) } } let serverUrlEndpoint = nkSession.urlBase + "/" + nkSession.dav + "/comments/files/\(fileId)/\(messageId)" @@ -346,11 +337,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, .urlError) } } let serverUrlEndpoint = nkSession.urlBase + "/" + nkSession.dav + "/comments/files/\(fileId)" diff --git a/Sources/NextcloudKit/NextcloudKit+Dashboard.swift b/Sources/NextcloudKit/NextcloudKit+Dashboard.swift index 0f9c15e5..03c20df7 100644 --- a/Sources/NextcloudKit/NextcloudKit+Dashboard.swift +++ b/Sources/NextcloudKit/NextcloudKit+Dashboard.swift @@ -23,7 +23,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ dashboardWidgets: [NCCDashboardWidget]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/dashboard/api/v1/widgets" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -101,7 +101,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ dashboardApplications: [NCCDashboardApplication]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/dashboard/api/v1/widget-items?widgets[]=\(items)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+E2EE.swift b/Sources/NextcloudKit/NextcloudKit+E2EE.swift index 92343616..77fd6dd7 100644 --- a/Sources/NextcloudKit/NextcloudKit+E2EE.swift +++ b/Sources/NextcloudKit/NextcloudKit+E2EE.swift @@ -29,7 +29,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/encrypted/\(fileId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -115,7 +115,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/lock/\(fileId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -216,7 +216,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/meta-data/\(fileId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, .urlError) } } @@ -313,7 +313,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/meta-data/\(fileId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -425,7 +425,7 @@ public extension NextcloudKit { endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/public-key" } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, .urlError) } } @@ -511,7 +511,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/private-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -585,7 +585,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/server-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -661,7 +661,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/public-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -742,7 +742,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/private-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -820,7 +820,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/public-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -884,7 +884,7 @@ public extension NextcloudKit { } let endpoint = "ocs/v2.php/apps/end_to_end_encryption/api/\(version)/private-key" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Groupfolders.swift b/Sources/NextcloudKit/NextcloudKit+Groupfolders.swift index cb877563..3e1b8c49 100644 --- a/Sources/NextcloudKit/NextcloudKit+Groupfolders.swift +++ b/Sources/NextcloudKit/NextcloudKit+Groupfolders.swift @@ -23,7 +23,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ results: [NKGroupfolders]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/apps/groupfolders/folders?applicable=1" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Hovercard.swift b/Sources/NextcloudKit/NextcloudKit+Hovercard.swift index e0939897..77cabaf7 100644 --- a/Sources/NextcloudKit/NextcloudKit+Hovercard.swift +++ b/Sources/NextcloudKit/NextcloudKit+Hovercard.swift @@ -21,7 +21,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ result: NKHovercard?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/hovercard/v1/\(userId)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Livephoto.swift b/Sources/NextcloudKit/NextcloudKit+Livephoto.swift index c3d50552..757a8fad 100644 --- a/Sources/NextcloudKit/NextcloudKit+Livephoto.swift +++ b/Sources/NextcloudKit/NextcloudKit+Livephoto.swift @@ -26,10 +26,7 @@ public extension NextcloudKit { return options.queue.async { completion(account, nil, .urlError) } } let method = HTTPMethod(rawValue: "PROPPATCH") - /// - options.contentType = "application/xml" - /// - guard let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + guard let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, .urlError) } } var urlRequest: URLRequest diff --git a/Sources/NextcloudKit/NextcloudKit+Login.swift b/Sources/NextcloudKit/NextcloudKit+Login.swift index f6e1e9ef..85457d7c 100644 --- a/Sources/NextcloudKit/NextcloudKit+Login.swift +++ b/Sources/NextcloudKit/NextcloudKit+Login.swift @@ -27,7 +27,7 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ token: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/core/getapppassword" - guard let url = self.nkCommonInstance.createStandardUrl(serverUrl: url, endpoint: endpoint, options: options) else { + guard let url = self.nkCommonInstance.createStandardUrl(serverUrl: url, endpoint: endpoint) else { return options.queue.async { completion(nil, nil, .urlError) } } var headers: HTTPHeaders = [.authorization(username: user, password: password)] @@ -116,7 +116,7 @@ public extension NextcloudKit { completion: @escaping (_ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/core/apppassword" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = self.nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint, options: options) else { + let url = self.nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint) else { return options.queue.async { completion(nil, .urlError) } } var headers: HTTPHeaders = [.authorization(username: username, password: password)] @@ -237,7 +237,7 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ token: String?, _ endpoint: String?, _ login: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/login/v2" - guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint, options: options) else { + guard let url = nkCommonInstance.createStandardUrl(serverUrl: serverUrl, endpoint: endpoint) else { return options.queue.async { completion(nil, nil, nil, nil, .urlError) } } var headers: HTTPHeaders? diff --git a/Sources/NextcloudKit/NextcloudKit+NCText.swift b/Sources/NextcloudKit/NextcloudKit+NCText.swift index 99c5e1d3..e22bca79 100644 --- a/Sources/NextcloudKit/NextcloudKit+NCText.swift +++ b/Sources/NextcloudKit/NextcloudKit+NCText.swift @@ -20,7 +20,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ editors: [NKEditorDetailsEditor]?, _ creators: [NKEditorDetailsCreator]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files/api/v1/directEditing" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, .urlError) } } @@ -114,7 +114,7 @@ public extension NextcloudKit { endpoint = "ocs/v2.php/apps/files/api/v1/directEditing/open?path=/\(fileNamePath)&fileId=\(fileId)&editorId=\(editor)" } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -187,7 +187,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ templates: [NKEditorTemplate]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files/api/v1/directEditing/templates/text/textdocumenttemplate" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -279,7 +279,7 @@ public extension NextcloudKit { endpoint = "ocs/v2.php/apps/files/api/v1/directEditing/create?path=/\(fileNamePath)&editorId=\(editorId)&creatorId=\(creatorId)&templateId=\(templateId)" } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+PushNotification.swift b/Sources/NextcloudKit/NextcloudKit+PushNotification.swift index aa3078ae..a9fa7616 100644 --- a/Sources/NextcloudKit/NextcloudKit+PushNotification.swift +++ b/Sources/NextcloudKit/NextcloudKit+PushNotification.swift @@ -28,7 +28,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ deviceIdentifier: String?, _ signature: String?, _ publicKey: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/notifications/api/v2/push" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, nil, .urlError) } } @@ -122,7 +122,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/notifications/api/v2/push" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -195,7 +195,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "devices?format=json" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = self.nkCommonInstance.createStandardUrl(serverUrl: proxyServerUrl, endpoint: endpoint, options: options), + let url = self.nkCommonInstance.createStandardUrl(serverUrl: proxyServerUrl, endpoint: endpoint), let userAgent = options.customUserAgent else { return options.queue.async { completion(account, nil, .urlError) } } @@ -285,7 +285,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "devices" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = self.nkCommonInstance.createStandardUrl(serverUrl: proxyServerUrl, endpoint: endpoint, options: options), + let url = self.nkCommonInstance.createStandardUrl(serverUrl: proxyServerUrl, endpoint: endpoint), let userAgent = options.customUserAgent else { return options.queue.async { completion(account, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift b/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift index 2b5a2121..c0b8295b 100644 --- a/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift +++ b/Sources/NextcloudKit/NextcloudKit+RecommendedFiles.swift @@ -22,12 +22,9 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ recommendations: [NKRecommendation]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/recommendations/api/v1/recommendations" - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift b/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift index 39133729..32d3b5bb 100644 --- a/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift +++ b/Sources/NextcloudKit/NextcloudKit+Richdocuments.swift @@ -23,7 +23,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/richdocuments/api/v1/document" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -97,7 +97,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ templates: [NKRichdocumentsTemplate]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/richdocuments/api/v1/templates/\(typeTemplate)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -184,7 +184,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/richdocuments/api/v1/templates/new" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -261,7 +261,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ url: String?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "index.php/apps/richdocuments/assets" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Search.swift b/Sources/NextcloudKit/NextcloudKit+Search.swift index 0bd64619..5aa7a4ed 100644 --- a/Sources/NextcloudKit/NextcloudKit+Search.swift +++ b/Sources/NextcloudKit/NextcloudKit+Search.swift @@ -36,7 +36,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/search/providers" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -163,7 +163,7 @@ public extension NextcloudKit { if let cursor = cursor { endpoint += "&cursor=\(cursor)" } - guard let url = self.nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options) + guard let url = self.nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint) else { completion(account, nil, nil, .urlError) return nil diff --git a/Sources/NextcloudKit/NextcloudKit+Share.swift b/Sources/NextcloudKit/NextcloudKit+Share.swift index df563ee2..410cc04f 100644 --- a/Sources/NextcloudKit/NextcloudKit+Share.swift +++ b/Sources/NextcloudKit/NextcloudKit+Share.swift @@ -62,7 +62,7 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ shares: [NKShare]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: parameters.endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: parameters.endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -148,7 +148,7 @@ public extension NextcloudKit { lookupString = "true" } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -314,7 +314,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ share: NKShare?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files_sharing/api/v1/shares" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -460,7 +460,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ share: NKShare?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files_sharing/api/v1/shares/\(idShare)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -582,7 +582,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/files_sharing/api/v1/shares/\(idShare)" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+ShareDownloadLimit.swift b/Sources/NextcloudKit/NextcloudKit+ShareDownloadLimit.swift index a2f78314..9b0a9682 100644 --- a/Sources/NextcloudKit/NextcloudKit+ShareDownloadLimit.swift +++ b/Sources/NextcloudKit/NextcloudKit+ShareDownloadLimit.swift @@ -24,7 +24,7 @@ public extension NextcloudKit { let options = NKRequestOptions() guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(nil, .urlError) @@ -119,7 +119,7 @@ public extension NextcloudKit { let options = NKRequestOptions() guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(.urlError) @@ -172,11 +172,9 @@ public extension NextcloudKit { func setShareDownloadLimit(account: String, token: String, limit: Int, completion: @escaping (_ error: NKError) -> Void) { let endpoint = makeEndpoint(with: token) let options = NKRequestOptions() - options.contentType = "application/json" - guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json"), var urlRequest = try? URLRequest(url: url, method: .put, headers: headers) else { return options.queue.async { completion(.urlError) diff --git a/Sources/NextcloudKit/NextcloudKit+TermsOfService.swift b/Sources/NextcloudKit/NextcloudKit+TermsOfService.swift index 7cd571b0..a3b88929 100644 --- a/Sources/NextcloudKit/NextcloudKit+TermsOfService.swift +++ b/Sources/NextcloudKit/NextcloudKit+TermsOfService.swift @@ -18,7 +18,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ tos: NKTermsOfService?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/terms_of_service/terms" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -82,12 +82,9 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/terms_of_service/sign" var urlRequest: URLRequest - /// - options.contentType = "application/json" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/json") else { return options.queue.async { completion(account, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+Upload.swift b/Sources/NextcloudKit/NextcloudKit+Upload.swift index 09023944..13c2c77a 100644 --- a/Sources/NextcloudKit/NextcloudKit+Upload.swift +++ b/Sources/NextcloudKit/NextcloudKit+Upload.swift @@ -65,6 +65,7 @@ public extension NextcloudKit { if overwrite { headers.update(name: "Overwrite", value: "true") } + headers.update(.contentType("application/octet-stream")) let request = nkSession.sessionData.upload(fileNameLocalPathUrl, to: url, method: .put, headers: headers, interceptor: NKInterceptor(nkCommonInstance: nkCommonInstance), fileManager: .default).validate(statusCode: 200..<300).onURLSessionTaskCreation(perform: { task in task.taskDescription = options.taskDescription diff --git a/Sources/NextcloudKit/NextcloudKit+UserStatus.swift b/Sources/NextcloudKit/NextcloudKit+UserStatus.swift index 6ba1101b..35e03bb2 100644 --- a/Sources/NextcloudKit/NextcloudKit+UserStatus.swift +++ b/Sources/NextcloudKit/NextcloudKit+UserStatus.swift @@ -36,7 +36,7 @@ public extension NextcloudKit { endpoint = "ocs/v2.php/apps/user_status/api/v1/user_status/\(userId)" } guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, nil, nil, false, nil, false, nil, nil, .urlError) } } @@ -133,7 +133,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/user_status/status" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -208,7 +208,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/user_status/message/predefined" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -296,7 +296,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/user_status/message/custom" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -385,7 +385,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/user_status/message" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, .urlError) } } @@ -460,7 +460,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ userStatuses: [NKUserStatus]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/predefined_statuses" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } @@ -561,7 +561,7 @@ public extension NextcloudKit { completion: @escaping (_ account: String, _ userStatuses: [NKUserStatus]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { let endpoint = "ocs/v2.php/apps/user_status/api/v1/statuses" guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options), + let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint), let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { return options.queue.async { completion(account, nil, nil, .urlError) } } diff --git a/Sources/NextcloudKit/NextcloudKit+WebDAV.swift b/Sources/NextcloudKit/NextcloudKit+WebDAV.swift index e928a6ab..72963ddb 100644 --- a/Sources/NextcloudKit/NextcloudKit+WebDAV.swift +++ b/Sources/NextcloudKit/NextcloudKit+WebDAV.swift @@ -376,12 +376,9 @@ public extension NextcloudKit { taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ files: [NKFile]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { var serverUrlFileName = serverUrlFileName - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), let url = serverUrlFileName.encodedToUrl, - var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + var headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } if depth == "0", serverUrlFileName.last == "/" { @@ -857,11 +854,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ files: [NKFile]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - /// - options.contentType = "application/xml" - /// guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } guard let url = (serverUrl + "/" + nkSession.dav).encodedToUrl else { @@ -963,11 +957,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - // - options.contentType = "application/xml" - // guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, .urlError) } } let serverUrlFileName = nkSession.urlBase + "/" + nkSession.dav + "/files/" + nkSession.userId + "/" + fileName @@ -1050,11 +1041,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ files: [NKFile]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - // - options.contentType = "application/xml" - // guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + let headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } let serverUrlFileName = nkSession.urlBase + "/" + nkSession.dav + "/files/" + nkSession.userId @@ -1148,11 +1136,8 @@ public extension NextcloudKit { options: NKRequestOptions = NKRequestOptions(), taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, completion: @escaping (_ account: String, _ items: [NKTrash]?, _ responseData: AFDataResponse?, _ error: NKError) -> Void) { - // - options.contentType = "application/xml" - // guard let nkSession = nkCommonInstance.nksessions.session(forAccount: account), - var headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else { + var headers = nkCommonInstance.getStandardHeaders(account: account, options: options, contentType: "application/xml") else { return options.queue.async { completion(account, nil, nil, .urlError) } } var serverUrlFileName = nkSession.urlBase + "/" + nkSession.dav + "/trashbin/" + nkSession.userId + "/trash/" diff --git a/Sources/NextcloudKit/NextcloudKitBackground.swift b/Sources/NextcloudKit/NextcloudKitBackground.swift index 5fbeac4b..50321d35 100644 --- a/Sources/NextcloudKit/NextcloudKitBackground.swift +++ b/Sources/NextcloudKit/NextcloudKitBackground.swift @@ -177,6 +177,7 @@ public final class NKBackground: NSObject, URLSessionTaskDelegate, URLSessionDel request.httpMethod = "PUT" request.setValue(nkSession.userAgent, forHTTPHeaderField: "User-Agent") request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") + request.setValue("application/octet-stream", forHTTPHeaderField: "Content-Type") if overwrite { request.setValue("true", forHTTPHeaderField: "Overwrite") }