| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package hooks
- import (
- "net/http"
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/constant"
- "github.com/QuantumNous/new-api/core/interfaces"
- "github.com/gin-gonic/gin"
- )
- // BuildHookContext 从Gin Context构建HookContext
- func BuildHookContext(c *gin.Context) *interfaces.HookContext {
- ctx := &interfaces.HookContext{
- GinContext: c,
- Request: c.Request,
- Data: make(map[string]interface{}),
- }
-
- // 提取Channel信息
- if channelID, ok := common.GetContextKey(c, constant.ContextKeyChannelId); ok {
- if id, ok := channelID.(int); ok {
- ctx.ChannelID = id
- }
- }
-
- if channelType, ok := common.GetContextKey(c, constant.ContextKeyChannelType); ok {
- if t, ok := channelType.(int); ok {
- ctx.ChannelType = t
- }
- }
-
- if channelName, ok := common.GetContextKey(c, constant.ContextKeyChannelName); ok {
- if name, ok := channelName.(string); ok {
- ctx.ChannelName = name
- }
- }
-
- // 提取Model信息
- if originalModel, ok := common.GetContextKey(c, constant.ContextKeyOriginalModel); ok {
- if m, ok := originalModel.(string); ok {
- ctx.OriginalModel = m
- ctx.Model = m // 使用OriginalModel作为Model
- }
- }
-
- // 提取User信息
- if userID, ok := common.GetContextKey(c, constant.ContextKeyUserId); ok {
- if id, ok := userID.(int); ok {
- ctx.UserID = id
- }
- }
-
- if tokenID, ok := common.GetContextKey(c, constant.ContextKeyTokenId); ok {
- if id, ok := tokenID.(int); ok {
- ctx.TokenID = id
- }
- }
-
- if group, ok := common.GetContextKey(c, constant.ContextKeyUsingGroup); ok {
- if g, ok := group.(string); ok {
- ctx.Group = g
- }
- }
-
- return ctx
- }
- // UpdateHookContextWithResponse 更新HookContext的Response信息
- func UpdateHookContextWithResponse(ctx *interfaces.HookContext, resp *http.Response, body []byte) {
- ctx.Response = resp
- ctx.ResponseBody = body
- }
- // UpdateHookContextWithRequest 更新HookContext的Request信息
- func UpdateHookContextWithRequest(ctx *interfaces.HookContext, body []byte) {
- ctx.RequestBody = body
- }
|