Spaces:
Build error
Build error
| package relay | |
| import ( | |
| "fmt" | |
| "one-api/dto" | |
| relaycommon "one-api/relay/common" | |
| "one-api/service" | |
| "one-api/types" | |
| "github.com/gin-gonic/gin" | |
| "github.com/gorilla/websocket" | |
| ) | |
| func WssHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *types.NewAPIError) { | |
| info.InitChannelMeta(c) | |
| adaptor := GetAdaptor(info.ApiType) | |
| if adaptor == nil { | |
| return types.NewError(fmt.Errorf("invalid api type: %d", info.ApiType), types.ErrorCodeInvalidApiType, types.ErrOptionWithSkipRetry()) | |
| } | |
| adaptor.Init(info) | |
| //var requestBody io.Reader | |
| //firstWssRequest, _ := c.Get("first_wss_request") | |
| //requestBody = bytes.NewBuffer(firstWssRequest.([]byte)) | |
| statusCodeMappingStr := c.GetString("status_code_mapping") | |
| resp, err := adaptor.DoRequest(c, info, nil) | |
| if err != nil { | |
| return types.NewError(err, types.ErrorCodeDoRequestFailed) | |
| } | |
| if resp != nil { | |
| info.TargetWs = resp.(*websocket.Conn) | |
| defer info.TargetWs.Close() | |
| } | |
| usage, newAPIError := adaptor.DoResponse(c, nil, info) | |
| if newAPIError != nil { | |
| // reset status code 重置状态码 | |
| service.ResetStatusCode(newAPIError, statusCodeMappingStr) | |
| return newAPIError | |
| } | |
| service.PostWssConsumeQuota(c, info, info.UpstreamModelName, usage.(*dto.RealtimeUsage), "") | |
| return nil | |
| } | |