1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
// SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
// SPDX-License-Identifier: GPL-2.0-or-later
import Foundation
import NextcloudFileProviderKit
import NextcloudKit
import OSLog
func fetchItemMetadata(itemRelativePath: String, account: Account, kit: NextcloudKit) async -> NKFile? {
func slashlessPath(_ string: String) -> String {
var strCopy = string
if strCopy.hasPrefix("/") {
strCopy.removeFirst()
}
if strCopy.hasSuffix("/") {
strCopy.removeLast()
}
return strCopy
}
guard let nksession = kit.nkCommonInstance.nksessions.session(forAccount: account.ncKitAccount) else {
return nil
}
let urlBase = slashlessPath(nksession.urlBase)
let davSuffix = slashlessPath(nksession.dav)
let userId = nksession.userId
let itemRelPath = slashlessPath(itemRelativePath)
let itemFullServerPath = "\(urlBase)/\(davSuffix)/files/\(userId)/\(itemRelPath)"
return await withCheckedContinuation { continuation in
kit.readFileOrFolder(serverUrlFileName: itemFullServerPath, depth: "0", account: account.ncKitAccount) { account, files, data, error in
guard error == .success else {
continuation.resume(returning: nil)
return
}
continuation.resume(returning: files?.first)
}
}
}
|