Release Candidate Version 1.6
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
public enum NotImplementedError: Error, CustomStringConvertible {
|
||||
case notImplemented
|
||||
@@ -27,3 +28,43 @@ public enum NetworkError: String, Error {
|
||||
case dataError = "Invalid data error."
|
||||
}
|
||||
|
||||
public enum ServerError: Error {
|
||||
case unknownError, missingRequestBody, duplicateRecipe, noImage, missingRecipeName, recipeNotFound, deleteFailed, requestUnsuccessful
|
||||
|
||||
|
||||
static func decodeFromURLResponse(response: HTTPURLResponse?) -> ServerError? {
|
||||
guard let response = response else {
|
||||
return ServerError.unknownError
|
||||
}
|
||||
print("Status code: ", response.statusCode)
|
||||
switch response.statusCode {
|
||||
case 200...299: return nil
|
||||
case 400: return .missingRequestBody
|
||||
case 404: return .recipeNotFound
|
||||
case 409: return .duplicateRecipe
|
||||
case 406: return .noImage
|
||||
case 422: return .missingRecipeName
|
||||
case 500: return .requestUnsuccessful
|
||||
case 502: return .deleteFailed
|
||||
default: return ServerError.unknownError
|
||||
}
|
||||
}
|
||||
|
||||
var localizedDescription: LocalizedStringKey {
|
||||
switch self {
|
||||
case .noImage: return "The recipe has no image whose MIME type matches the Accept header"
|
||||
case .missingRecipeName: return "There was no name in the request given for the recipe. Cannot save the recipe."
|
||||
default: return "An unknown server error occured."
|
||||
}
|
||||
}
|
||||
|
||||
var localizedTitle: LocalizedStringKey {
|
||||
switch self {
|
||||
case .missingRequestBody: return "Missing Request Body"
|
||||
case .duplicateRecipe: return "Duplicate Recipe"
|
||||
case .noImage: return "Image MIME Error"
|
||||
case .missingRecipeName: return "Missing Name"
|
||||
default: return "Error"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user