Initial implementation of APKINDEX, fetching, reading, parsing, & merging

This commit is contained in:
2024-11-08 21:22:33 +11:00
parent f6cbddb608
commit 941dfae317
18 changed files with 877 additions and 65 deletions

View File

@ -0,0 +1,26 @@
// SPDX-License-Identifier: Apache-2.0
import Foundation
struct ApkIndexDownloader {
func downloadFile(remote remoteURL: URL, destination destLocalURL: URL) {
let sem = DispatchSemaphore.init(value: 0)
let downloadTask = URLSession.shared.downloadTask(with: remoteURL) { url, response, error in
if let localURL = url {
do {
// Replace existing APKINDEX.tar.gz files
if FileManager.default.fileExists(atPath: destLocalURL.path()) {
try FileManager.default.removeItem(at: destLocalURL)
}
// Move temporary to the new location
try FileManager.default.moveItem(at: localURL, to: destLocalURL)
} catch {
print("Download error: \(error.localizedDescription)")
}
}
sem.signal()
}
downloadTask.resume()
sem.wait()
}
}