mirror of
https://github.com/GayPizzaSpecifications/darwin-apk.git
synced 2025-08-03 21:41:31 +00:00
Initial implementation of APKINDEX, fetching, reading, parsing, & merging
This commit is contained in:
26
Sources/apk/Index/ApkIndexDownloader.swift
Normal file
26
Sources/apk/Index/ApkIndexDownloader.swift
Normal 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()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user