error.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package dto
  2. import (
  3. "encoding/json"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/types"
  6. )
  7. //type OpenAIError struct {
  8. // Message string `json:"message"`
  9. // Type string `json:"type"`
  10. // Param string `json:"param"`
  11. // Code any `json:"code"`
  12. //}
  13. type OpenAIErrorWithStatusCode struct {
  14. Error types.OpenAIError `json:"error"`
  15. StatusCode int `json:"status_code"`
  16. LocalError bool
  17. }
  18. type GeneralErrorResponse struct {
  19. Error json.RawMessage `json:"error"`
  20. Message string `json:"message"`
  21. Msg string `json:"msg"`
  22. Err string `json:"err"`
  23. ErrorMsg string `json:"error_msg"`
  24. Header struct {
  25. Message string `json:"message"`
  26. } `json:"header"`
  27. Response struct {
  28. Error struct {
  29. Message string `json:"message"`
  30. } `json:"error"`
  31. } `json:"response"`
  32. }
  33. func (e GeneralErrorResponse) TryToOpenAIError() *types.OpenAIError {
  34. var openAIError types.OpenAIError
  35. if len(e.Error) > 0 {
  36. err := common.Unmarshal(e.Error, &openAIError)
  37. if err == nil && openAIError.Message != "" {
  38. return &openAIError
  39. }
  40. }
  41. return nil
  42. }
  43. func (e GeneralErrorResponse) ToMessage() string {
  44. if len(e.Error) > 0 {
  45. switch common.GetJsonType(e.Error) {
  46. case "object":
  47. var openAIError types.OpenAIError
  48. err := common.Unmarshal(e.Error, &openAIError)
  49. if err == nil && openAIError.Message != "" {
  50. return openAIError.Message
  51. }
  52. case "string":
  53. var msg string
  54. err := common.Unmarshal(e.Error, &msg)
  55. if err == nil && msg != "" {
  56. return msg
  57. }
  58. default:
  59. return string(e.Error)
  60. }
  61. }
  62. if e.Message != "" {
  63. return e.Message
  64. }
  65. if e.Msg != "" {
  66. return e.Msg
  67. }
  68. if e.Err != "" {
  69. return e.Err
  70. }
  71. if e.ErrorMsg != "" {
  72. return e.ErrorMsg
  73. }
  74. if e.Header.Message != "" {
  75. return e.Header.Message
  76. }
  77. if e.Response.Error.Message != "" {
  78. return e.Response.Error.Message
  79. }
  80. return ""
  81. }