You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
3.0 KiB
66 lines
3.0 KiB
//
|
|
// NetworkManager.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 01/03/2024.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class NetworkManager {
|
|
static let shared: NetworkManager = NetworkManager()
|
|
|
|
func removeRankingData(lastDateString: String, fileName: String) {
|
|
let dateString = ["CLASSEMENT-PADEL", fileName, lastDateString].joined(separator: "-") + ".csv"
|
|
|
|
let documentsUrl:URL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL?)!
|
|
let destinationFileUrl = documentsUrl.appendingPathComponent("\(dateString)")
|
|
try? FileManager.default.removeItem(at: destinationFileUrl)
|
|
}
|
|
|
|
func downloadRankingData(lastDateString: String, fileName: String) async throws {
|
|
|
|
let dateString = ["CLASSEMENT-PADEL", fileName, lastDateString].joined(separator: "-") + ".csv"
|
|
|
|
let documentsUrl: URL = SourceFileManager.shared.rankingSourceDirectory
|
|
let destinationFileUrl = documentsUrl.appendingPathComponent("\(dateString)")
|
|
let fileURL = URL(string: "https://xlr.alwaysdata.net/static/rankings/\(dateString)")
|
|
|
|
if FileManager.default.fileExists(atPath: destinationFileUrl.path()) {
|
|
return
|
|
}
|
|
var request = URLRequest(url:fileURL!)
|
|
request.addValue("attachment;filename=\(dateString)", forHTTPHeaderField:"Content-Disposition")
|
|
request.addValue("text/csv", forHTTPHeaderField: "Content-Type")
|
|
|
|
let task = try await URLSession.shared.download(for: request)
|
|
if let urlResponse = task.1 as? HTTPURLResponse {
|
|
if urlResponse.statusCode == 200 {
|
|
|
|
//todo à voir si on en a besoin, permet de re-télécharger un csv si on détecte qu'il a été mis à jour
|
|
// if FileManager.default.fileExists(atPath: destinationFileUrl.path()) {
|
|
// if let creationDate = try checkFileCreationDate(filePath: task.0.path()), let previousCreationDate = try checkFileCreationDate(filePath: destinationFileUrl.path()) {
|
|
// print("File creation date:", creationDate)
|
|
// print("File previous creation date:", previousCreationDate)
|
|
// if previousCreationDate.isEarlierThan(creationDate) {
|
|
// try FileManager.default.removeItem(at: destinationFileUrl)
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
try FileManager.default.copyItem(at: task.0, to: destinationFileUrl)
|
|
print("dl rank data ok", lastDateString, fileName)
|
|
} else if urlResponse.statusCode == 404 && fileName == "MESSIEURS" {
|
|
print("dl rank data failed", lastDateString, fileName)
|
|
throw NetworkManagerError.fileNotYetAvailable
|
|
}
|
|
}
|
|
}
|
|
|
|
func checkFileCreationDate(filePath: String) throws -> Date? {
|
|
let fileManager = FileManager.default
|
|
let attributes = try fileManager.attributesOfItem(atPath: filePath)
|
|
return attributes[.creationDate] as? Date
|
|
}
|
|
|
|
}
|
|
|