Skip to content

Commit c24fcc9

Browse files
Merge pull request #152 from nextcloud/capabilities
Capabilities
2 parents 33b8c01 + 43326a8 commit c24fcc9

6 files changed

Lines changed: 574 additions & 52 deletions

File tree

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// SPDX-FileCopyrightText: Nextcloud GmbH
2+
// SPDX-FileCopyrightText: 2025 Marino Faggiana
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
import Foundation
6+
7+
extension Data {
8+
func printJson() {
9+
do {
10+
let json = try JSONSerialization.jsonObject(with: self, options: [])
11+
let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
12+
guard let jsonString = String(data: data, encoding: .utf8) else {
13+
print("Invalid data")
14+
return
15+
}
16+
print(jsonString)
17+
} catch {
18+
print("Error: \(error.localizedDescription)")
19+
}
20+
}
21+
22+
func jsonToString() -> String {
23+
do {
24+
let json = try JSONSerialization.jsonObject(with: self, options: [])
25+
let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
26+
guard let jsonString = String(data: data, encoding: .utf8) else {
27+
print("Invalid data")
28+
return ""
29+
}
30+
return jsonString
31+
} catch {
32+
print("Error: \(error.localizedDescription)")
33+
}
34+
return ""
35+
}
36+
}

Sources/NextcloudKit/NKInterceptor.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ final class NKInterceptor: RequestInterceptor, Sendable {
3131

3232
if let array = groupDefaults.array(forKey: nkCommonInstance.groupDefaultsUnauthorized) as? [String],
3333
array.contains(account) {
34-
nkLog(tag: "AUTH", message: "Unauthorized for account: \(account)")
34+
nkLog(tag: "AUTH", emoji: .error, message: "Unauthorized for account: \(account)")
3535
let error = AFError.responseValidationFailed(reason: .unacceptableStatusCode(code: 401))
3636
return completion(.failure(error))
3737

3838
} else if let array = groupDefaults.array(forKey: nkCommonInstance.groupDefaultsUnavailable) as? [String],
3939
array.contains(account) {
40-
nkLog(tag: "SERVICE", message: "Unavailable for account: \(account)")
40+
nkLog(tag: "SERVICE", emoji: .error, message: "Unavailable for account: \(account)")
4141
let error = AFError.responseValidationFailed(reason: .unacceptableStatusCode(code: 503))
4242
return completion(.failure(error))
4343

4444
} else if let array = groupDefaults.array(forKey: nkCommonInstance.groupDefaultsToS) as? [String],
4545
array.contains(account) {
46-
nkLog(tag: "TOS", message: "Terms of service error for account: \(account)")
46+
nkLog(tag: "TOS", emoji: .error, message: "Terms of service error for account: \(account)")
4747
let error = AFError.responseValidationFailed(reason: .unacceptableStatusCode(code: 403))
4848
return completion(.failure(error))
4949
}

Sources/NextcloudKit/NKSession.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public struct NKSession: Sendable {
1212
public var password: String
1313
public var account: String
1414
public var userAgent: String
15-
public var nextcloudVersion: Int
1615
public let groupIdentifier: String
1716
public let httpMaximumConnectionsPerHost: Int
1817
public let httpMaximumConnectionsPerHostInDownload: Int
@@ -33,7 +32,6 @@ public struct NKSession: Sendable {
3332
password: String,
3433
account: String,
3534
userAgent: String,
36-
nextcloudVersion: Int,
3735
groupIdentifier: String,
3836
httpMaximumConnectionsPerHost: Int,
3937
httpMaximumConnectionsPerHostInDownload: Int,
@@ -44,7 +42,6 @@ public struct NKSession: Sendable {
4442
self.password = password
4543
self.account = account
4644
self.userAgent = userAgent
47-
self.nextcloudVersion = nextcloudVersion
4845
self.groupIdentifier = groupIdentifier
4946
self.httpMaximumConnectionsPerHost = httpMaximumConnectionsPerHost
5047
self.httpMaximumConnectionsPerHostInDownload = httpMaximumConnectionsPerHostInDownload

Sources/NextcloudKit/NextcloudKit+API.swift

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -610,45 +610,6 @@ public extension NextcloudKit {
610610
}
611611
// MARK: -
612612

613-
func getCapabilities(account: String,
614-
options: NKRequestOptions = NKRequestOptions(),
615-
taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in },
616-
completion: @escaping (_ account: String, _ responseData: AFDataResponse<Data>?, _ error: NKError) -> Void) {
617-
let endpoint = "ocs/v1.php/cloud/capabilities"
618-
guard let nkSession = nkCommonInstance.getSession(account: account),
619-
let url = nkCommonInstance.createStandardUrl(serverUrl: nkSession.urlBase, endpoint: endpoint, options: options),
620-
let headers = nkCommonInstance.getStandardHeaders(account: account, options: options) else {
621-
return options.queue.async { completion(account, nil, .urlError) }
622-
}
623-
624-
nkSession.sessionData.request(url, method: .get, encoding: URLEncoding.default, headers: headers, interceptor: NKInterceptor(nkCommonInstance: nkCommonInstance)).validate(statusCode: 200..<300).onURLSessionTaskCreation { task in
625-
task.taskDescription = options.taskDescription
626-
taskHandler(task)
627-
}.responseData(queue: self.nkCommonInstance.backgroundQueue) { response in
628-
switch response.result {
629-
case .failure(let error):
630-
let error = NKError(error: error, afResponse: response, responseData: response.data)
631-
options.queue.async { completion(account, response, error) }
632-
case .success:
633-
options.queue.async { completion(account, response, .success) }
634-
}
635-
}
636-
}
637-
638-
func getCapabilitiesAsync(account: String,
639-
options: NKRequestOptions = NKRequestOptions(),
640-
taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }) async -> (account: String, responseData: AFDataResponse<Data>?, error: NKError) {
641-
await withUnsafeContinuation { continuation in
642-
getCapabilities(account: account,
643-
options: options,
644-
taskHandler: taskHandler) { account, responseData, error in
645-
continuation.resume(returning: (account, responseData, error))
646-
}
647-
}
648-
}
649-
650-
// MARK: -
651-
652613
func getRemoteWipeStatus(serverUrl: String,
653614
token: String,
654615
account: String,

0 commit comments

Comments
 (0)