HuggingChat-Mac/Models/HFError.swift (59 lines of code) (raw):

// // HFError.swift // HuggingChat-Mac // // Created by Cyril Zakka on 8/23/24. // import Foundation enum HFError: Error { case unknown case fileLimitExceeded case genericError(Error) case networkError(Error) case httpError(Int, Data?) case verbose(String) // Only for debug purpose case modelNotFound case httpTooManyRequest case missingHFToken case httpUnauthorized case notHTTPResponse(URLResponse, Data?) case noResponse case decodeError(Error) case encodeError(Error) } extension HFError: CustomStringConvertible { var description: String { switch self { case .unknown: return "Unknown" case .fileLimitExceeded: return "File limit exceeded. A file cannot be larger than 10 MB." case .genericError(let error): return "Generic error \(error.localizedDescription)" case .networkError(let error): return "Network error: \(error.localizedDescription)" case .httpError(let code, let data): let info = "httpError code \(code)" if let data = data, let string = String(data: data, encoding: .utf8) { return "\(info) with content:\n\(string)" } return info case .verbose(let verbose): return "\(verbose)" case .modelNotFound: return "Model Not Found" case .httpTooManyRequest: return "Too Many Requests. Please try logging in." case .missingHFToken: return "Missing HF Token" case .httpUnauthorized: return "Unauthorized" case .notHTTPResponse(let response, let data): let info = "notHTTPResponse response \(response)" if let data = data, let string = String(data: data, encoding: .utf8) { return "\(info) with content:\n\(string)" } return info case .noResponse: return "No Response" case .decodeError(let error): return "decodeError \(error.localizedDescription)" case .encodeError(let error): return "encodeError \(error.localizedDescription)" } } }