import Foundation public enum ApiErrorCode: Int, CustomStringConvertible, Codable { case invalidLoginOrPassword = 0 public var description: String { switch self { case .invalidLoginOrPassword: return "Invalid login or password" } } } public class ApiError: LocalizedError { public let httpStatus: Int public let message: String? public let code: ApiErrorCode? init(httpStatus: Int, message: String? = nil, code: ApiErrorCode? = nil) { self.httpStatus = httpStatus self.message = message self.code = code } public var errorDescription: String? { if let code = code { return code.description } if let message = message { return message } return "General http error (status \(self.httpStatus))" } }