OpenAIHTTPError.swift 997 B

1234567891011121314151617181920212223242526272829303132
  1. import Foundation
  2. enum OpenAIHTTPError {
  3. static func userMessage(statusCode: Int, data: Data) -> String {
  4. switch statusCode {
  5. case 401, 403:
  6. return UserFacingError.generic
  7. case 429:
  8. return "Too many requests. Please wait a moment and try again."
  9. case 500...599:
  10. return "The service is temporarily unavailable. Please try again."
  11. default:
  12. if let message = errorMessage(from: data),
  13. let sanitized = UserFacingError.sanitized(message) {
  14. return sanitized
  15. }
  16. return UserFacingError.generic
  17. }
  18. }
  19. private static func errorMessage(from data: Data) -> String? {
  20. struct APIErrorResponse: Decodable {
  21. struct APIError: Decodable {
  22. let message: String
  23. }
  24. let error: APIError
  25. }
  26. return (try? JSONDecoder().decode(APIErrorResponse.self, from: data))?.error.message
  27. }
  28. }