MCPcopy
hub / github.com/songquanpeng/one-api / RelayErrorHandler

Function RelayErrorHandler

relay/controller/error.go:55–101  ·  view source on GitHub ↗
(resp *http.Response)

Source from the content-addressed store, hash-verified

53}
54
55func RelayErrorHandler(resp *http.Response) (ErrorWithStatusCode *model.ErrorWithStatusCode) {
56 if resp == nil {
57 return &model.ErrorWithStatusCode{
58 StatusCode: 500,
59 Error: model.Error{
60 Message: "resp is nil",
61 Type: "upstream_error",
62 Code: "bad_response",
63 },
64 }
65 }
66 ErrorWithStatusCode = &model.ErrorWithStatusCode{
67 StatusCode: resp.StatusCode,
68 Error: model.Error{
69 Message: "",
70 Type: "upstream_error",
71 Code: "bad_response_status_code",
72 Param: strconv.Itoa(resp.StatusCode),
73 },
74 }
75 responseBody, err := io.ReadAll(resp.Body)
76 if err != nil {
77 return
78 }
79 if config.DebugEnabled {
80 logger.SysLog(fmt.Sprintf("error happened, status code: %d, response: \n%s", resp.StatusCode, string(responseBody)))
81 }
82 err = resp.Body.Close()
83 if err != nil {
84 return
85 }
86 var errResponse GeneralErrorResponse
87 err = json.Unmarshal(responseBody, &errResponse)
88 if err != nil {
89 return
90 }
91 if errResponse.Error.Message != "" {
92 // OpenAI format error, so we override the default one
93 ErrorWithStatusCode.Error = errResponse.Error
94 } else {
95 ErrorWithStatusCode.Error.Message = errResponse.ToMessage()
96 }
97 if ErrorWithStatusCode.Error.Message == "" {
98 ErrorWithStatusCode.Error.Message = fmt.Sprintf("bad response status code %d", resp.StatusCode)
99 }
100 return
101}

Callers 3

testChannelFunction · 0.92
RelayTextHelperFunction · 0.85
RelayAudioHelperFunction · 0.85

Calls 2

ToMessageMethod · 0.95
SysLogFunction · 0.92

Tested by

no test coverage detected