From 813abf24e0d4eb6d7adc1a35cd023d806c29c735 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Mon, 3 Feb 2025 06:54:16 +0100 Subject: [PATCH 1/2] fix Signed-off-by: Marino Faggiana --- Sources/NextcloudKit/NKMonitor.swift | 99 ++++++++++------------------ 1 file changed, 33 insertions(+), 66 deletions(-) diff --git a/Sources/NextcloudKit/NKMonitor.swift b/Sources/NextcloudKit/NKMonitor.swift index b9edea5b..5a8154bd 100644 --- a/Sources/NextcloudKit/NKMonitor.swift +++ b/Sources/NextcloudKit/NKMonitor.swift @@ -29,30 +29,40 @@ final class NKMonitor: EventMonitor, Sendable { self.nkCommonInstance.delegate?.request(request, didParseResponse: response) let groupDefaults = UserDefaults(suiteName: NextcloudKit.shared.nkCommonInstance.groupIdentifier) - // - // Error 401, append the account in groupDefaults Unauthorized array - // if let statusCode = response.response?.statusCode { - if statusCode == 401, - let headerValue = request.request?.allHTTPHeaderFields?["X-NC-CheckUnauthorized"], - headerValue.lowercased() == "true", - let account = request.request?.allHTTPHeaderFields?["X-NC-Account"] as? String, - let session = nkCommonInstance.getSession(account: account) { - let serverUrlFileName = session.urlBase + "/remote.php/dav/files/" + session.userId - self.readFile(serverUrlFileName: serverUrlFileName, account: account) { account, error in - /* - var unauthorizedArray = groupDefaults?.array(forKey: "Unauthorized") as? [String] ?? [] - if !unauthorizedArray.contains(account) { - unauthorizedArray.append(account) - groupDefaults?.set(unauthorizedArray, forKey: "Unauthorized") - - self.nkCommonInstance.writeLog("Unauthorized set for account: \(account)") - } - */ - } - } else if statusCode == 503 { - print("503 Service Unavailable") - } + + // + // Error 401, append the account in groupDefaults Unauthorized array + // + + if statusCode == 401, + let headerValue = request.request?.allHTTPHeaderFields?["X-NC-CheckUnauthorized"], + headerValue.lowercased() == "true", + let account = request.request?.allHTTPHeaderFields?["X-NC-Account"] as? String { + + var unauthorizedArray = groupDefaults?.array(forKey: "Unauthorized") as? [String] ?? [] + if !unauthorizedArray.contains(account) { + unauthorizedArray.append(account) + groupDefaults?.set(unauthorizedArray, forKey: "Unauthorized") + + self.nkCommonInstance.writeLog("Unauthorized set for account: \(account)") + } + + + // + // Error 503, append the account in groupDefaults Unavailable array + // + } else if statusCode == 503, + let account = request.request?.allHTTPHeaderFields?["X-NC-Account"] as? String { + + var unauthorizedArray = groupDefaults?.array(forKey: "Unavailable") as? [String] ?? [] + if !unauthorizedArray.contains(account) { + unauthorizedArray.append(account) + groupDefaults?.set(unauthorizedArray, forKey: "Unavailable") + + self.nkCommonInstance.writeLog("Unavailable set for account: \(account)") + } + } } // @@ -77,47 +87,4 @@ final class NKMonitor: EventMonitor, Sendable { } } } - - func readFile(serverUrlFileName: String, - account: String, - options: NKRequestOptions = NKRequestOptions(), - taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }, - completion: @escaping (_ account: String, _ error: NKError) -> Void) { - /// - options.contentType = "application/xml" - /// - guard let nkSession = nkCommonInstance.getSession(account: account), - let url = serverUrlFileName.encodedToUrl, - var headers = nkCommonInstance.getStandardHeaders(account: account, checkUnauthorized: true, options: options) else { - return options.queue.async { completion(account, .urlError) } - } - - let method = HTTPMethod(rawValue: "PROPFIND") - headers.update(name: "Depth", value: "0") - var urlRequest: URLRequest - - do { - try urlRequest = URLRequest(url: url, method: method, headers: headers) - urlRequest.httpBody = NKDataFileXML(nkCommonInstance: self.nkCommonInstance).getRequestBodyFile(createProperties: options.createProperties, removeProperties: options.removeProperties).data(using: .utf8) - - } catch { - return options.queue.async { completion(account, NKError(error: error)) } - } - - nkSession.sessionData.request(urlRequest, interceptor: NKInterceptor()).validate(statusCode: 200..<300).onURLSessionTaskCreation { task in - task.taskDescription = options.taskDescription - taskHandler(task) - }.responseData(queue: self.nkCommonInstance.backgroundQueue) { response in - if self.nkCommonInstance.levelLog > 0 { - debugPrint(response) - } - switch response.result { - case .failure(let error): - let error = NKError(error: error, afResponse: response, responseData: response.data) - options.queue.async { completion(account, error) } - case .success: - options.queue.async { completion(account, .success) } - } - } - } } From 01786002a52b5a407cf5b23238fab1dabd0e75f8 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Mon, 3 Feb 2025 06:56:58 +0100 Subject: [PATCH 2/2] cod Signed-off-by: Marino Faggiana --- Sources/NextcloudKit/NKCommon.swift | 2 -- Sources/NextcloudKit/NKMonitor.swift | 1 - 2 files changed, 3 deletions(-) diff --git a/Sources/NextcloudKit/NKCommon.swift b/Sources/NextcloudKit/NKCommon.swift index b20237b0..d87296af 100644 --- a/Sources/NextcloudKit/NKCommon.swift +++ b/Sources/NextcloudKit/NKCommon.swift @@ -25,8 +25,6 @@ public protocol NextcloudKitDelegate: AnyObject, Sendable { func downloadComplete(fileName: String, serverUrl: String, etag: String?, date: Date?, dateLastModified: Date?, length: Int64, task: URLSessionTask, error: NKError) func uploadComplete(fileName: String, serverUrl: String, ocId: String?, etag: String?, date: Date?, size: Int64, task: URLSessionTask, error: NKError) - - func request(_ request: DataRequest, didParseResponse response: AFDataResponse) } public struct NKCommon: Sendable { diff --git a/Sources/NextcloudKit/NKMonitor.swift b/Sources/NextcloudKit/NKMonitor.swift index 5a8154bd..3369eacc 100644 --- a/Sources/NextcloudKit/NKMonitor.swift +++ b/Sources/NextcloudKit/NKMonitor.swift @@ -26,7 +26,6 @@ final class NKMonitor: EventMonitor, Sendable { } func request(_ request: DataRequest, didParseResponse response: AFDataResponse) { - self.nkCommonInstance.delegate?.request(request, didParseResponse: response) let groupDefaults = UserDefaults(suiteName: NextcloudKit.shared.nkCommonInstance.groupIdentifier) if let statusCode = response.response?.statusCode {