From f8f87aec095e2dde09b8dd6535ac30b448dcf124 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 18 Mar 2024 19:58:30 +0800 Subject: [PATCH] Fix ShareCapabilities parsing Signed-off-by: Claudio Cambra --- .../FileProviderUIExt/ShareCapabilities.swift | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareCapabilities.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareCapabilities.swift index 6560a9d8d..61f454809 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareCapabilities.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareCapabilities.swift @@ -75,11 +75,24 @@ struct ShareCapabilities { } init(json: Data) { - guard let anyJson = try? JSONSerialization.jsonObject(with: json, options: []), - let jsonDict = anyJson as? [String : Any], - let sharingCapabilities = jsonDict["files_sharing"] as? [String : Any] + guard let anyJson = try? JSONSerialization.jsonObject(with: json, options: []) else { + let jsonString = String(data: json, encoding: .utf8) ?? "UNKNOWN" + Logger.shareCapabilities.error( + "Received capabilities is not valid JSON! \(jsonString, privacy: .public)" + ) + return + } + + guard let jsonDict = anyJson as? [String : Any], + let ocsData = jsonDict["ocs"] as? [String : Any], + let receivedData = ocsData["data"] as? [String : Any], + let capabilities = receivedData["capabilities"] as? [String : Any], + let sharingCapabilities = capabilities["files_sharing"] as? [String : Any] else { - Logger.shareCapabilities.error("Could not parse share capabilities!") + let jsonString = anyJson as? [String : Any] ?? ["UNKNOWN" : "UNKNOWN"] + Logger.shareCapabilities.error( + "Could not parse share capabilities! \(jsonString, privacy: .public)" + ) return } apiEnabled = sharingCapabilities["api_enabled"] as? Bool ?? false -- 2.30.2