@@ -725,119 +725,7 @@ public extension NextcloudKit {
725725 }
726726 }
727727
728- /// Searches media files within a specified date range on the server.
729- ///
730- /// - Parameters:
731- /// - path: The directory path to search within (default is empty string for root).
732- /// - lessDate: The upper bound date filter (files older than this).
733- /// - greaterDate: The lower bound date filter (files newer than this).
734- /// - elementDate: The file date attribute to filter on (e.g., "created", "modified").
735- /// - limit: Maximum number of files to return.
736- /// - account: The Nextcloud account identifier.
737- /// - options: Optional request options (headers, queue, etc.).
738- /// - taskHandler: Callback for monitoring the underlying `URLSessionTask`.
739- /// - completion: Completion handler returning:
740- /// - account: The account used for the request.
741- /// - files: Optional array of matching `NKFile` objects.
742- /// - responseData: Raw Alamofire response data.
743- /// - error: An `NKError` describing success or failure.
744- func searchMedia( path: String = " " ,
745- lessDate: Any ,
746- greaterDate: Any ,
747- elementDate: String ,
748- limit: Int ,
749- account: String ,
750- options: NKRequestOptions = NKRequestOptions ( ) ,
751- taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in } ,
752- completion: @escaping ( _ account: String , _ files: [ NKFile ] ? , _ responseData: AFDataResponse < Data > ? , _ error: NKError ) -> Void ) {
753- guard let nkSession = nkCommonInstance. nksessions. session ( forAccount: account) else {
754- return options. queue. async { completion ( account, nil , nil , . urlError) }
755- }
756- let files : [ NKFile ] = [ ]
757- let elementDate = elementDate + " / "
758- var greaterDateString : String ? , lessDateString : String ?
759- let href = " /files/ " + nkSession. userId + path
760- if let lessDate = lessDate as? Date {
761- lessDateString = lessDate. formatted ( using: " yyyy-MM-dd'T'HH:mm:ssZZZZZ " )
762- } else if let lessDate = lessDate as? Int {
763- lessDateString = String ( lessDate)
764- }
765- if let greaterDate = greaterDate as? Date {
766- greaterDateString = greaterDate. formatted ( using: " yyyy-MM-dd'T'HH:mm:ssZZZZZ " )
767- } else if let greaterDate = greaterDate as? Int {
768- greaterDateString = String ( greaterDate)
769- }
770- guard let lessDateString, let greaterDateString else {
771- return options. queue. async { completion ( account, files, nil , . invalidDate) }
772- }
773-
774- let httpBodyString = String ( format: NKDataFileXML ( nkCommonInstance: self . nkCommonInstance) . getRequestBodySearchMedia ( createProperties: options. createProperties, removeProperties: options. removeProperties) , href, elementDate, elementDate, lessDateString, elementDate, greaterDateString, String ( limit) )
775-
776- guard let httpBody = httpBodyString. data ( using: . utf8) else {
777- return options. queue. async {
778- completion ( account, files, nil , . invalidData)
779- }
780- }
781-
782-
783- search ( serverUrl: nkSession. urlBase, httpBody: httpBody, showHiddenFiles: false , includeHiddenFiles: [ ] , account: account, options: options) { task in
784- taskHandler ( task)
785- } completion: { account, files, responseData, error in
786- options. queue. async { completion ( account, files, responseData, error) }
787- }
788- }
789-
790- /// Asynchronously searches media files with date filters.
791- ///
792- /// - Parameters:
793- /// - path: Directory path to search.
794- /// - lessDate: Upper date bound filter.
795- /// - greaterDate: Lower date bound filter.
796- /// - elementDate: File date attribute to filter on.
797- /// - limit: Maximum number of results.
798- /// - account: Nextcloud account identifier.
799- /// - options: Optional request options.
800- /// - taskHandler: Callback for URLSessionTask monitoring.
801- ///
802- /// - Returns: A tuple containing:
803- /// - account: Account used for the request.
804- /// - files: Optional array of `NKFile` matching results.
805- /// - responseData: Raw server response data.
806- /// - error: Resulting `NKError`.
807- func searchMediaAsync( path: String = " " ,
808- lessDate: Any ,
809- greaterDate: Any ,
810- elementDate: String ,
811- limit: Int ,
812- account: String ,
813- options: NKRequestOptions = NKRequestOptions ( ) ,
814- taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in }
815- ) async -> (
816- account: String ,
817- files: [ NKFile ] ? ,
818- responseData: AFDataResponse < Data > ? ,
819- error: NKError
820- ) {
821- await withCheckedContinuation { continuation in
822- searchMedia ( path: path,
823- lessDate: lessDate,
824- greaterDate: greaterDate,
825- elementDate: elementDate,
826- limit: limit,
827- account: account,
828- options: options,
829- taskHandler: taskHandler) { account, files, responseData, error in
830- continuation. resume ( returning: (
831- account: account,
832- files: files,
833- responseData: responseData,
834- error: error
835- ) )
836- }
837- }
838- }
839-
840- /// Performs a private search request with a custom HTTP body on the server.
728+ /// Performs a search request with a custom HTTP body on the server.
841729 ///
842730 /// - Parameters:
843731 /// - serverUrl: The base URL of the Nextcloud server.
@@ -852,14 +740,14 @@ public extension NextcloudKit {
852740 /// - files: Optional array of `NKFile` matching the search.
853741 /// - responseData: Raw response data from Alamofire.
854742 /// - error: An `NKError` indicating success or failure.
855- private func search( serverUrl: String ,
856- httpBody: Data ,
857- showHiddenFiles: Bool ,
858- includeHiddenFiles: [ String ] ,
859- account: String ,
860- options: NKRequestOptions = NKRequestOptions ( ) ,
861- taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in } ,
862- completion: @escaping ( _ account: String , _ files: [ NKFile ] ? , _ responseData: AFDataResponse < Data > ? , _ error: NKError ) -> Void ) {
743+ func search( serverUrl: String ,
744+ httpBody: Data ,
745+ showHiddenFiles: Bool ,
746+ includeHiddenFiles: [ String ] ,
747+ account: String ,
748+ options: NKRequestOptions = NKRequestOptions ( ) ,
749+ taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in } ,
750+ completion: @escaping ( _ account: String , _ files: [ NKFile ] ? , _ responseData: AFDataResponse < Data > ? , _ error: NKError ) -> Void ) {
863751 guard let nkSession = nkCommonInstance. nksessions. session ( forAccount: account) ,
864752 let headers = nkCommonInstance. getStandardHeaders ( account: account, options: options, contentType: " application/xml " , accept: " application/xml " ) else {
865753 return options. queue. async { completion ( account, nil , nil , . urlError) }
@@ -914,13 +802,13 @@ public extension NextcloudKit {
914802 /// - files: Optional array of `NKFile` results.
915803 /// - responseData: Raw response data.
916804 /// - error: Resulting `NKError`.
917- private func searchAsync( serverUrl: String ,
918- httpBody: Data ,
919- showHiddenFiles: Bool ,
920- includeHiddenFiles: [ String ] ,
921- account: String ,
922- options: NKRequestOptions = NKRequestOptions ( ) ,
923- taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in }
805+ func searchAsync( serverUrl: String ,
806+ httpBody: Data ,
807+ showHiddenFiles: Bool ,
808+ includeHiddenFiles: [ String ] ,
809+ account: String ,
810+ options: NKRequestOptions = NKRequestOptions ( ) ,
811+ taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in }
924812 ) async -> (
925813 account: String ,
926814 files: [ NKFile ] ? ,
0 commit comments