Lots of changes
This commit is contained in:
@ -7,8 +7,35 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
enum NetworkError: String, Error {
|
||||
case invalidUrl = "Invalid URL"
|
||||
case invalidResponse = "Invalid response form the server"
|
||||
case invalidData = "Data received from the server is invalid"
|
||||
enum NetworkError: String, Error, LocalizedError {
|
||||
case invalidUrl
|
||||
case invalidResponse
|
||||
case invalidData
|
||||
case noNetwork
|
||||
|
||||
var errorDescription: String? {
|
||||
switch self {
|
||||
case .invalidUrl:
|
||||
"InvalidUrl"
|
||||
case .invalidResponse:
|
||||
"InvalidResponse"
|
||||
case .invalidData:
|
||||
"Проверьте номер группы"
|
||||
case .noNetwork:
|
||||
"No network connection"
|
||||
}
|
||||
}
|
||||
|
||||
var failureReason: String {
|
||||
switch self {
|
||||
case .invalidUrl:
|
||||
"Похоже не удалось составить ссылку для api"
|
||||
case .invalidResponse:
|
||||
"Для этой недели расписания еще нет"
|
||||
case .invalidData:
|
||||
"Похоже такой группы не существует"
|
||||
case .noNetwork:
|
||||
"Проверьте подключение к интернету и попробуйте заново"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ final class NetworkManager {
|
||||
}
|
||||
|
||||
func makeUrlForWeek(_ numOfWeek: Int, _ htmlNameOfGroup: String) -> String {
|
||||
return urlForWeek + htmlNameOfGroup + "&" + String(numOfWeek)
|
||||
return urlForWeek + htmlNameOfGroup + "&week=" + String(numOfWeek)
|
||||
}
|
||||
|
||||
func getSchedule(_ group: String) async throws -> Schedule {
|
||||
@ -42,8 +42,10 @@ final class NetworkManager {
|
||||
throw NetworkError.invalidData
|
||||
}
|
||||
}
|
||||
|
||||
func getScheduleForOtherWeek(_ numOfWeek: Int, _ htmlNameOfGroup: String) async throws -> Schedule {
|
||||
let newUrlForWeek = makeUrlForWeek(numOfWeek, htmlNameOfGroup)
|
||||
print(newUrlForWeek)
|
||||
guard let url = URL(string: newUrlForWeek) else {throw NetworkError.invalidUrl}
|
||||
let (data, response) = try await URLSession.shared.data(from: url)
|
||||
guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {throw NetworkError.invalidResponse}
|
||||
|
Reference in New Issue
Block a user