Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
1d73eb7
https://github.com/nextcloud/ios/issues/2390
marinofaggiana Nov 22, 2023
cbd0274
add async/await searchMedia
marinofaggiana Nov 25, 2023
31ec113
Livephoto detect (#51)
marinofaggiana Nov 28, 2023
544d8ad
cleaning
marinofaggiana Nov 30, 2023
b4df6c9
Fix build on macOS broken by freeDisk change (#53)
claucambra Dec 4, 2023
47b230f
livePhotoFile -> fileId
marinofaggiana Dec 7, 2023
e3b2ae8
rollback
marinofaggiana Dec 7, 2023
b5f351d
rollback
marinofaggiana Dec 9, 2023
992ad16
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Dec 12, 2023
e77c2dc
Fix error description chunk
marinofaggiana Dec 13, 2023
396f18b
chunk error fix
marinofaggiana Dec 13, 2023
4604eb4
errorDescription
marinofaggiana Dec 14, 2023
20f6e08
added description
marinofaggiana Dec 15, 2023
94bbdab
Change to markdown
mpivchev Dec 15, 2023
f7f618d
Added e2ee options versionApi
marinofaggiana Jan 18, 2024
77dffd8
change variable name
marinofaggiana Jan 22, 2024
28eede9
endpoint update
marinofaggiana Jan 23, 2024
14c622f
Fix chunk S3 (#56)
marinofaggiana Jan 29, 2024
41475e7
public func
marinofaggiana Feb 5, 2024
ec87ccc
lint
marinofaggiana Feb 5, 2024
d231a48
remove description
marinofaggiana Feb 7, 2024
c2e2d83
fix
marinofaggiana Feb 7, 2024
23b3555
fix
marinofaggiana Feb 7, 2024
7d61d28
fix log
marinofaggiana Feb 10, 2024
3c34cc5
Resolution - GPS (#59)
marinofaggiana Feb 28, 2024
ff4d3d1
set h, w to Double
marinofaggiana Feb 28, 2024
fa460bb
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Feb 28, 2024
4a33e6c
coding (#61)
marinofaggiana Mar 6, 2024
25e8788
normalized taskHandler
marinofaggiana Mar 8, 2024
81e1318
add filename in trash (#63)
marinofaggiana Mar 21, 2024
1e224f0
Nextcloud Assistant (#66)
marinofaggiana Apr 18, 2024
73d245f
Add support for visionOS, fix tvOS and watchOS support (#67)
claucambra Apr 22, 2024
fdbe0dc
Task description (#70)
marinofaggiana May 7, 2024
31c85f4
change TypeIconFile (#71)
marinofaggiana May 15, 2024
cc3c063
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana May 24, 2024
99c5a27
Core Preview Improvements and use only fileId
marinofaggiana Jun 21, 2024
6814775
fix
marinofaggiana Jun 21, 2024
28f1554
improvements
marinofaggiana Jun 21, 2024
35d4460
Improvements
marinofaggiana Jun 21, 2024
3b3b178
added compressionQuality
marinofaggiana Jun 23, 2024
064cf05
Improvements (#76)
marinofaggiana Jul 2, 2024
e4e557e
improved code
marinofaggiana Jul 2, 2024
3e5ffc7
fix paramenters default
marinofaggiana Jul 3, 2024
b61e465
fix paramenters default
marinofaggiana Jul 3, 2024
eb260e3
improvements
marinofaggiana Jul 5, 2024
44731fd
cod
marinofaggiana Jul 5, 2024
5b667cb
improvements
marinofaggiana Jul 6, 2024
b6917d8
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Jul 8, 2024
6b90394
downloadPreview
marinofaggiana Jul 10, 2024
85892df
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Jul 10, 2024
f75a16b
added downloadPreview url
marinofaggiana Jul 10, 2024
5fa0dd8
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Jul 10, 2024
4cf36e5
httpCookieStorage (#80)
marinofaggiana Jul 19, 2024
499fa9b
new getUserProfile()
marinofaggiana Jul 20, 2024
93b4913
change paramenter name
marinofaggiana Jul 20, 2024
f4f645f
Account (#82)
marinofaggiana Jul 31, 2024
83b75a1
cod
marinofaggiana Jul 31, 2024
f6c4c86
Revert "cod"
marinofaggiana Jul 31, 2024
f8324b8
Filename validator (#83)
mpivchev Aug 6, 2024
30c4043
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Aug 6, 2024
5023211
fix session delegate
marinofaggiana Aug 13, 2024
5ad366b
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Aug 13, 2024
0673ceb
fix
marinofaggiana Aug 13, 2024
e9c40dd
Filename validator (#92)
marinofaggiana Aug 23, 2024
6173516
WIP
mpivchev Aug 26, 2024
d421994
NextcloudKit Version 5 - Multisession (#94)
marinofaggiana Sep 24, 2024
7fc17fe
NextcloudKit V 5
marinofaggiana Sep 24, 2024
caee63d
fix
marinofaggiana Sep 24, 2024
263420e
requestCachePolicy
marinofaggiana Oct 8, 2024
49432ad
cache
marinofaggiana Oct 8, 2024
ddf9823
cache
marinofaggiana Oct 8, 2024
bbe7ae1
cache
marinofaggiana Oct 8, 2024
0c4c6b6
Add optional spaces and periods - WCF
mpivchev Sep 27, 2024
44123c3
Response (#97)
marinofaggiana Oct 14, 2024
bb750f2
ThreadSafeArray
marinofaggiana Oct 16, 2024
cdcfedb
logger delegate
marinofaggiana Oct 20, 2024
93c2b50
fix message 503
marinofaggiana Oct 21, 2024
87d6f37
public
marinofaggiana Oct 21, 2024
354bc42
fix error
marinofaggiana Oct 21, 2024
b7d757f
Add reuse compliance (#96)
AndyScherzinger Oct 22, 2024
1ad32b4
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Oct 22, 2024
14c9da5
Auto rename (#99)
mpivchev Nov 4, 2024
94fbe70
Keep original extension
mpivchev Nov 4, 2024
6d794ec
Refactor
mpivchev Nov 4, 2024
1a54b9a
License (#102)
marinofaggiana Nov 5, 2024
6f80c4d
( multipathServiceType )
marinofaggiana Nov 5, 2024
1c4389d
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Nov 6, 2024
a5b6f5c
Add more extensive test for AutoRenamer (#101)
mpivchev Nov 6, 2024
69d7822
Split NKModel.swift into designated source code files for every conta…
i2h3 Nov 14, 2024
5ddf89c
Merge pull request #105 from nextcloud/split-nkmodel
i2h3 Nov 14, 2024
0853d79
Update README.md (#106)
mpivchev Nov 25, 2024
e6e0a54
Prettier Landing Page (#108)
i2h3 Nov 25, 2024
fcfc5c7
Reenabled build on macOS. (#109)
i2h3 Nov 25, 2024
4e0a7fa
Track ocId in NKTrash items (#110)
claucambra Dec 4, 2024
c754b59
Dav pagination (#111)
marinofaggiana Dec 5, 2024
7b09fa2
Terms of Service (#112)
marinofaggiana Dec 11, 2024
0fd68b6
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Dec 14, 2024
dd022b9
Added capabilities to manage share download limits. (#107)
i2h3 Dec 20, 2024
f798517
Recommended files (#115)
marinofaggiana Dec 30, 2024
92ca88f
improvements
marinofaggiana Jan 2, 2025
bdfb63e
Allow setting custom destinations in chunked upload (#116)
claucambra Jan 10, 2025
9f85082
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Jan 16, 2025
19f484c
added httpMaximumConnectionsPerHost
marinofaggiana Jan 21, 2025
3c394ed
httpMaximumConnectionsPerHost
marinofaggiana Jan 21, 2025
f798615
appendSession
marinofaggiana Jan 21, 2025
670e3cd
cod
marinofaggiana Jan 21, 2025
935d4bc
Added feature to get download limits explicitly via OCS API.
i2h3 Jan 21, 2025
26182ad
Merge pull request #118 from nextcloud/files_downloadlimit2
i2h3 Jan 23, 2025
34d7b9e
Update FileNameValidator.swift
mpivchev Jan 23, 2025
740e605
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Jan 30, 2025
9924a98
Make NextcloudKit Swift 6 compatible (#119)
claucambra Jan 31, 2025
3c87a40
Add static/refactor
mpivchev Jan 31, 2025
31e5f49
NextcloudKitDelegate
marinofaggiana Jan 31, 2025
3ab5b95
change Name to NKMonitor
marinofaggiana Feb 1, 2025
b93eca4
Added NKInterceptor
marinofaggiana Feb 1, 2025
dce0f8c
Interceptor
marinofaggiana Feb 1, 2025
ff51b77
Interceptor
marinofaggiana Feb 1, 2025
4184d62
interceptor
marinofaggiana Feb 1, 2025
d4940fb
cleaning
marinofaggiana Feb 1, 2025
5539a14
Interceptor
marinofaggiana Feb 1, 2025
860c104
INterceptor
marinofaggiana Feb 1, 2025
e19c074
sendable
marinofaggiana Feb 1, 2025
f858b07
test
marinofaggiana Feb 1, 2025
2d6709a
cleaning
marinofaggiana Feb 1, 2025
c764644
checkUnauthorized
marinofaggiana Feb 1, 2025
97dedf7
debug
marinofaggiana Feb 2, 2025
788aadf
X-NC-CheckUnauthorized
marinofaggiana Feb 2, 2025
8fe27d5
test
marinofaggiana Feb 2, 2025
b5c71ed
cod
marinofaggiana Feb 2, 2025
8b9be41
cod
marinofaggiana Feb 2, 2025
29ba81a
cod
marinofaggiana Feb 2, 2025
ace908b
common (#121)
marinofaggiana Feb 3, 2025
f8f9a76
cleaning
marinofaggiana Feb 3, 2025
893762a
cleaning
marinofaggiana Feb 3, 2025
1c2ceee
added checkUnauthorized options
marinofaggiana Feb 3, 2025
0abd7f4
cod
marinofaggiana Feb 3, 2025
2b034e1
fix
marinofaggiana Feb 3, 2025
9a53ffb
cleaning
marinofaggiana Feb 3, 2025
a600210
cod
marinofaggiana Feb 7, 2025
9917699
Merge remote-tracking branch 'origin/main' into develop
marinofaggiana Feb 7, 2025
e5a9969
setupLog
marinofaggiana Feb 7, 2025
34ee929
dependencies version updated
marinofaggiana Feb 7, 2025
2ece4c7
improved code
marinofaggiana Feb 7, 2025
3ab309d
improved
marinofaggiana Feb 7, 2025
a4ea592
cleaning
marinofaggiana Feb 7, 2025
0107c4e
debugPrint
marinofaggiana Feb 7, 2025
f83bc68
debugprint
marinofaggiana Feb 7, 2025
1c32a75
cod
marinofaggiana Feb 7, 2025
069c774
log
marinofaggiana Feb 7, 2025
5d96731
cleaning
marinofaggiana Feb 7, 2025
1d122f9
LOG (#123)
marinofaggiana Feb 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ let package = Package(
targets: ["NextcloudKit"]),
],
dependencies: [
.package(url: "https://github.com/WeTransfer/Mocker.git", .upToNextMajor(from: "2.3.0")),
.package(url: "https://github.com/Alamofire/Alamofire", .upToNextMajor(from: "5.9.1")),
.package(url: "https://github.com/SwiftyJSON/SwiftyJSON", .upToNextMajor(from: "5.0.0")),
.package(url: "https://github.com/yahoojapan/SwiftyXMLParser", .upToNextMajor(from: "5.3.0")),
.package(url: "https://github.com/WeTransfer/Mocker.git", .upToNextMajor(from: "3.0.2")),
.package(url: "https://github.com/Alamofire/Alamofire", .upToNextMajor(from: "5.10.2")),
.package(url: "https://github.com/SwiftyJSON/SwiftyJSON", .upToNextMajor(from: "5.0.2")),
.package(url: "https://github.com/yahoojapan/SwiftyXMLParser", .upToNextMajor(from: "5.6.0")),
],
targets: [
.target(
Expand Down
14 changes: 14 additions & 0 deletions Sources/NextcloudKit/Extensions/NSLock+Extension.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// SPDX-FileCopyrightText: Nextcloud GmbH
// SPDX-FileCopyrightText: 2025 Claudio Cambra <claudio.cambra@nextcloud.com>
// SPDX-License-Identifier: GPL-3.0-or-later

import Foundation

extension NSLock {
@discardableResult
func perform<T>(_ block: () throws -> T) rethrows -> T {
lock()
defer { unlock() }
return try block()
}
}
2 changes: 1 addition & 1 deletion Sources/NextcloudKit/Models/NKDownloadLimit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
///
/// Each relates to a share of a file and is optionally provided by the [Files Download Limit](https://github.com/nextcloud/files_downloadlimit) app for Nextcloud server.
///
public class NKDownloadLimit: NSObject {
public struct NKDownloadLimit: Sendable {
///
/// The number of downloads which already happened.
///
Expand All @@ -25,7 +25,7 @@
///
public let token: String

init(count: Int, limit: Int, token: String) {

Check warning on line 28 in Sources/NextcloudKit/Models/NKDownloadLimit.swift

View workflow job for this annotation

GitHub Actions / Lint

Unneeded Synthesized Initializer Violation: This memberwise initializer would be synthesized automatically - you do not need to define it (unneeded_synthesized_initializer)
self.count = count
self.limit = limit
self.token = token
Expand Down
2 changes: 1 addition & 1 deletion Sources/NextcloudKit/Models/NKFile.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import Foundation

public class NKFile: NSObject {
public struct NKFile: Sendable {
public var account = ""
public var classFile = ""
public var commentsUnread: Bool = false
Expand Down
9 changes: 9 additions & 0 deletions Sources/NextcloudKit/Models/NKFileProperty.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,18 @@

import Foundation

#if swift(<6.0)
public class NKFileProperty: NSObject {
public var classFile: String = ""
public var iconName: String = ""
public var name: String = ""
public var ext: String = ""
}
#else
public struct NKFileProperty: Sendable {
public var classFile: String = ""
public var iconName: String = ""
public var name: String = ""
public var ext: String = ""
}
#endif
2 changes: 1 addition & 1 deletion Sources/NextcloudKit/Models/NKTermsOfService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class NKTermsOfService: NSObject {
self.data = decodedResponse.ocs.data
return true
} catch {
print("decode error:", error)
debugPrint("[DEBUG] decode error:", error)
return false
}
}
Expand Down
73 changes: 56 additions & 17 deletions Sources/NextcloudKit/NKCommon.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import MobileCoreServices
import CoreServices
#endif

public protocol NextcloudKitDelegate {
public protocol NextcloudKitDelegate: AnyObject, Sendable {
func authenticationChallenge(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)
func urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession)

Expand All @@ -25,13 +25,12 @@ public protocol NextcloudKitDelegate {

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<Value>(_ request: DataRequest, didParseResponse response: AFDataResponse<Value>)
}

public class NKCommon: NSObject {
public struct NKCommon: Sendable {
public var nksessions = ThreadSafeArray<NKSession>()
public var delegate: NextcloudKitDelegate?
public var groupIdentifier: String?

public let identifierSessionDownload: String = "com.nextcloud.nextcloudkit.session.download"
public let identifierSessionUpload: String = "com.nextcloud.nextcloudkit.session.upload"
Expand Down Expand Up @@ -82,7 +81,7 @@ public class NKCommon: NSObject {
case xls = "xls"
}

public struct UTTypeConformsToServer {
public struct UTTypeConformsToServer: Sendable {
var typeIdentifier: String
var classFile: String
var editor: String
Expand All @@ -91,9 +90,15 @@ public class NKCommon: NSObject {
var account: String
}

#if swift(<6.0)
internal var utiCache = NSCache<NSString, CFString>()
internal var mimeTypeCache = NSCache<CFString, NSString>()
internal var filePropertiesCache = NSCache<CFString, NKFileProperty>()
#else
internal var utiCache = [String: String]()
internal var mimeTypeCache = [String: String]()
internal var filePropertiesCache = [String: NKFileProperty]()
#endif
internal var internalTypeIdentifiers = ThreadSafeArray<UTTypeConformsToServer>()

public var filenamePathLog: String = ""
Expand Down Expand Up @@ -133,56 +138,77 @@ public class NKCommon: NSObject {

// MARK: - Init

override init() {
super.init()

init() {
filenamePathLog = internalPathLog + "/" + internalFilenameLog
}

// MARK: - Type Identifier

public func clearInternalTypeIdentifier(account: String) {
mutating public func clearInternalTypeIdentifier(account: String) {
internalTypeIdentifiers = internalTypeIdentifiers.filter({ $0.account != account })
}

public func addInternalTypeIdentifier(typeIdentifier: String, classFile: String, editor: String, iconName: String, name: String, account: String) {
mutating public func addInternalTypeIdentifier(typeIdentifier: String, classFile: String, editor: String, iconName: String, name: String, account: String) {
if !internalTypeIdentifiers.contains(where: { $0.typeIdentifier == typeIdentifier && $0.editor == editor && $0.account == account}) {
let newUTI = UTTypeConformsToServer(typeIdentifier: typeIdentifier, classFile: classFile, editor: editor, iconName: iconName, name: name, account: account)
internalTypeIdentifiers.append(newUTI)
}
}

public func getInternalType(fileName: String, mimeType: String, directory: Bool, account: String) -> (mimeType: String, classFile: String, iconName: String, typeIdentifier: String, fileNameWithoutExt: String, ext: String) {
mutating public func getInternalType(fileName: String, mimeType: String, directory: Bool, account: String) -> (mimeType: String, classFile: String, iconName: String, typeIdentifier: String, fileNameWithoutExt: String, ext: String) {
var ext = (fileName as NSString).pathExtension.lowercased()
var mimeType = mimeType
var classFile = "", iconName = "", typeIdentifier = "", fileNameWithoutExt = ""
var inUTI: CFString?

#if swift(<6.0)
if let cachedUTI = utiCache.object(forKey: ext as NSString) {
inUTI = cachedUTI
} else {
}
#else
if let cachedUTI = utiCache[ext] {
inUTI = cachedUTI as CFString
}
#endif
if inUTI == nil {
if let unmanagedFileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, ext as CFString, nil) {
inUTI = unmanagedFileUTI.takeRetainedValue()
if let inUTI {
#if swift(<6.0)
utiCache.setObject(inUTI, forKey: ext as NSString)
#else
utiCache[ext] = inUTI as String
#endif
}
}
}

if let inUTI = inUTI {
if let inUTI {
typeIdentifier = inUTI as String
fileNameWithoutExt = (fileName as NSString).deletingPathExtension

// contentType detect
if mimeType.isEmpty {
#if swift(<6.0)
if let cachedMimeUTI = mimeTypeCache.object(forKey: inUTI) {
mimeType = cachedMimeUTI as String
} else {
}
#else
if let cachedMimeUTI = mimeTypeCache[inUTI as String] {
mimeType = cachedMimeUTI
}
#endif

if mimeType.isEmpty {
if let mimeUTI = UTTypeCopyPreferredTagWithClass(inUTI, kUTTagClassMIMEType) {
let mimeUTIString = mimeUTI.takeRetainedValue() as String

mimeType = mimeUTIString
#if swift(<6.0)
mimeTypeCache.setObject(mimeUTIString as NSString, forKey: inUTI)
#else
mimeTypeCache[inUTI as String] = mimeUTIString as String
#endif
}
}
}
Expand All @@ -197,12 +223,21 @@ public class NKCommon: NSObject {
} else {
var fileProperties: NKFileProperty

#if swift(<6.0)
if let cachedFileProperties = filePropertiesCache.object(forKey: inUTI) {
fileProperties = cachedFileProperties
} else {
fileProperties = getFileProperties(inUTI: inUTI)
filePropertiesCache.setObject(fileProperties, forKey: inUTI)
}
#else
if let cachedFileProperties = filePropertiesCache[inUTI as String] {
fileProperties = cachedFileProperties
} else {
fileProperties = getFileProperties(inUTI: inUTI)
filePropertiesCache[inUTI as String] = fileProperties
}
#endif

classFile = fileProperties.classFile
iconName = fileProperties.iconName
Expand Down Expand Up @@ -335,7 +370,7 @@ public class NKCommon: NSObject {
writer = nil
chunk = 0
counterChunk(counter)
print("Counter: \(counter)")
debugPrint("[DEBUG] Counter: \(counter)")
counter += 1
}

Expand Down Expand Up @@ -390,7 +425,7 @@ public class NKCommon: NSObject {
return session
}

public func getStandardHeaders(account: String, options: NKRequestOptions? = nil) -> HTTPHeaders? {
public func getStandardHeaders(account: String, checkUnauthorized: Bool? = nil, options: NKRequestOptions? = nil) -> HTTPHeaders? {
guard let session = nksessions.filter({ $0.account == account }).first else { return nil}
var headers: HTTPHeaders = []

Expand All @@ -411,6 +446,10 @@ public class NKCommon: NSObject {
for (key, value) in options?.customHeader ?? [:] {
headers.update(name: key, value: value)
}
headers.update(name: "X-NC-Account", value: account)
if let checkUnauthorized {
headers.update(name: "X-NC-CheckUnauthorized", value: checkUnauthorized.description)
}
// Paginate
if let options {
if options.paginate {
Expand Down Expand Up @@ -493,7 +532,7 @@ public class NKCommon: NSObject {
let attributes = try FileManager.default.attributesOfItem(atPath: filePath)
return attributes[FileAttributeKey.size] as? Int64 ?? 0
} catch {
print(error)
debugPrint(error)
}
return 0
}
Expand Down
62 changes: 2 additions & 60 deletions Sources/NextcloudKit/NKDataFileXML.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import SwiftyXMLParser

class NKDataFileXML: NSObject {
let nkCommonInstance: NKCommon
var nkCommonInstance: NKCommon
let requestBodyComments =
"""
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
Expand Down Expand Up @@ -147,64 +147,6 @@
}

func getRequestBodySearchMedia(createProperties: [NKProperties]?, removeProperties: [NKProperties] = []) -> String {
let request = """
<?xml version=\"1.0\"?>
<d:searchrequest xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">
<d:basicsearch>
<d:select>
<d:prop>
""" + NKProperties.properties(createProperties: createProperties, removeProperties: removeProperties) + """
</d:prop>
</d:select>
<d:from>
<d:scope>
<d:href>%@</d:href>
<d:depth>infinity</d:depth>
</d:scope>
</d:from>
<d:orderby>
<d:order>
<d:prop><%@></d:prop>
<d:descending/>
</d:order>
<d:order>
<d:prop><d:displayname/></d:prop>
<d:descending/>
</d:order>
</d:orderby>
<d:where>
<d:and>
<d:or>
<d:like>
<d:prop><d:getcontenttype/></d:prop>
<d:literal>image/%%</d:literal>
</d:like>
<d:like>
<d:prop><d:getcontenttype/></d:prop>
<d:literal>video/%%</d:literal>
</d:like>
</d:or>
<d:or>
<d:and>
<d:lt>
<d:prop><%@></d:prop>
<d:literal>%@</d:literal>
</d:lt>
<d:gt>
<d:prop><%@></d:prop>
<d:literal>%@</d:literal>
</d:gt>
</d:and>
</d:or>
</d:and>
</d:where>
</d:basicsearch>
</d:searchrequest>
"""
return request
}

func getRequestBodySearchMediaWithLimit(createProperties: [NKProperties]?, removeProperties: [NKProperties] = []) -> String {
let request = """
<?xml version=\"1.0\"?>
<d:searchrequest xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">
Expand Down Expand Up @@ -297,7 +239,7 @@
return xml["ocs", "data", "apppassword"].text
}

func convertDataFile(xmlData: Data, nkSession: NKSession, showHiddenFiles: Bool, includeHiddenFiles: [String]) -> [NKFile] {

Check warning on line 242 in Sources/NextcloudKit/NKDataFileXML.swift

View workflow job for this annotation

GitHub Actions / Lint

Function Body Length Violation: Function body should span 200 lines or less excluding comments and whitespace: currently spans 245 lines (function_body_length)
var files: [NKFile] = []
let rootFiles = "/" + nkSession.dav + "/files/"
guard let baseUrl = self.nkCommonInstance.getHostName(urlString: nkSession.urlBase) else {
Expand All @@ -307,7 +249,7 @@
let elements = xml["d:multistatus", "d:response"]

for element in elements {
let file = NKFile()
var file = NKFile()
if let href = element["d:href"].text {
var fileNamePath = href
if href.last == "/" {
Expand Down
Loading