| 1234567891011121314151617181920212223242526272829303132 |
- import Foundation
- enum OpenAIHTTPError {
- static func userMessage(statusCode: Int, data: Data) -> String {
- switch statusCode {
- case 401, 403:
- return UserFacingError.generic
- case 429:
- return "Too many requests. Please wait a moment and try again."
- case 500...599:
- return "The service is temporarily unavailable. Please try again."
- default:
- if let message = errorMessage(from: data),
- let sanitized = UserFacingError.sanitized(message) {
- return sanitized
- }
- return UserFacingError.generic
- }
- }
- private static func errorMessage(from data: Data) -> String? {
- struct APIErrorResponse: Decodable {
- struct APIError: Decodable {
- let message: String
- }
- let error: APIError
- }
- return (try? JSONDecoder().decode(APIErrorResponse.self, from: data))?.error.message
- }
- }
|