mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-02 04:20:50 +08:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package executor
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
|
)
|
|
|
|
// recordAPIRequest stores the upstream request payload in Gin context for request logging.
|
|
func recordAPIRequest(ctx context.Context, cfg *config.Config, payload []byte) {
|
|
if cfg == nil || !cfg.RequestLog || len(payload) == 0 {
|
|
return
|
|
}
|
|
if ginCtx, ok := ctx.Value("gin").(*gin.Context); ok && ginCtx != nil {
|
|
ginCtx.Set("API_REQUEST", bytes.Clone(payload))
|
|
}
|
|
}
|
|
|
|
// appendAPIResponseChunk appends an upstream response chunk to Gin context for request logging.
|
|
func appendAPIResponseChunk(ctx context.Context, cfg *config.Config, chunk []byte) {
|
|
if cfg == nil || !cfg.RequestLog {
|
|
return
|
|
}
|
|
data := bytes.TrimSpace(bytes.Clone(chunk))
|
|
if len(data) == 0 {
|
|
return
|
|
}
|
|
if ginCtx, ok := ctx.Value("gin").(*gin.Context); ok && ginCtx != nil {
|
|
if existing, exists := ginCtx.Get("API_RESPONSE"); exists {
|
|
if prev, okBytes := existing.([]byte); okBytes {
|
|
prev = append(prev, data...)
|
|
prev = append(prev, []byte("\n\n")...)
|
|
ginCtx.Set("API_RESPONSE", prev)
|
|
return
|
|
}
|
|
}
|
|
ginCtx.Set("API_RESPONSE", data)
|
|
}
|
|
}
|