import Foundation public enum ApiError: LocalizedError, Equatable { case generic case message(String) case httpError(Int) case invalidLoginOrPassword public var errorDescription: String? { switch self { case .generic: return "Something bad happened" case .message(let message): return message case .httpError(let status): return "General http error (status \(status))" case .invalidLoginOrPassword: return "Invalid login or password" } } init(code: Int) { switch code { case 0: self = .invalidLoginOrPassword default: self = .generic } } public func code() -> Int? { switch self { case .invalidLoginOrPassword: return 0 default: return nil } } }