mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-04-20 22:51:45 +00:00
refactor(runtime, openai): simplify header management and remove redundant websocket logging logic
This commit is contained in:
@@ -811,7 +811,7 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth *
|
|||||||
ginHeaders = ginCtx.Request.Header.Clone()
|
ginHeaders = ginCtx.Request.Header.Clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgUserAgent, cfgBetaFeatures := codexHeaderDefaults(cfg, auth)
|
_, cfgBetaFeatures := codexHeaderDefaults(cfg, auth)
|
||||||
ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "")
|
ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "")
|
||||||
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "")
|
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "")
|
||||||
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "")
|
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "")
|
||||||
@@ -827,11 +827,10 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth *
|
|||||||
betaHeader = codexResponsesWebsocketBetaHeaderValue
|
betaHeader = codexResponsesWebsocketBetaHeaderValue
|
||||||
}
|
}
|
||||||
headers.Set("OpenAI-Beta", betaHeader)
|
headers.Set("OpenAI-Beta", betaHeader)
|
||||||
ensureHeaderWithConfigPrecedence(headers, ginHeaders, "User-Agent", cfgUserAgent, codexUserAgent)
|
|
||||||
|
|
||||||
if strings.Contains(headers.Get("User-Agent"), "Mac OS") {
|
if strings.Contains(headers.Get("User-Agent"), "Mac OS") {
|
||||||
misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString())
|
misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString())
|
||||||
}
|
}
|
||||||
|
headers.Del("User-Agent")
|
||||||
|
|
||||||
isAPIKey := false
|
isAPIKey := false
|
||||||
if auth != nil && auth.Attributes != nil {
|
if auth != nil && auth.Attributes != nil {
|
||||||
|
|||||||
@@ -33,9 +33,6 @@ const (
|
|||||||
wsDoneMarker = "[DONE]"
|
wsDoneMarker = "[DONE]"
|
||||||
wsTurnStateHeader = "x-codex-turn-state"
|
wsTurnStateHeader = "x-codex-turn-state"
|
||||||
wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
|
wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
|
||||||
wsPayloadLogMaxSize = 2048
|
|
||||||
wsBodyLogMaxSize = 64 * 1024
|
|
||||||
wsBodyLogTruncated = "\n[websocket log truncated]\n"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var responsesWebsocketUpgrader = websocket.Upgrader{
|
var responsesWebsocketUpgrader = websocket.Upgrader{
|
||||||
@@ -894,71 +891,18 @@ func appendWebsocketEvent(builder *strings.Builder, eventType string, payload []
|
|||||||
if builder == nil {
|
if builder == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if builder.Len() >= wsBodyLogMaxSize {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
trimmedPayload := bytes.TrimSpace(payload)
|
trimmedPayload := bytes.TrimSpace(payload)
|
||||||
if len(trimmedPayload) == 0 {
|
if len(trimmedPayload) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if builder.Len() > 0 {
|
if builder.Len() > 0 {
|
||||||
if !appendWebsocketLogString(builder, "\n") {
|
builder.WriteString("\n")
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if !appendWebsocketLogString(builder, "websocket.") {
|
builder.WriteString("websocket.")
|
||||||
return
|
builder.WriteString(eventType)
|
||||||
}
|
builder.WriteString("\n")
|
||||||
if !appendWebsocketLogString(builder, eventType) {
|
builder.Write(trimmedPayload)
|
||||||
return
|
builder.WriteString("\n")
|
||||||
}
|
|
||||||
if !appendWebsocketLogString(builder, "\n") {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !appendWebsocketLogBytes(builder, trimmedPayload, len(wsBodyLogTruncated)) {
|
|
||||||
appendWebsocketLogString(builder, wsBodyLogTruncated)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
appendWebsocketLogString(builder, "\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
func appendWebsocketLogString(builder *strings.Builder, value string) bool {
|
|
||||||
if builder == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
remaining := wsBodyLogMaxSize - builder.Len()
|
|
||||||
if remaining <= 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if len(value) <= remaining {
|
|
||||||
builder.WriteString(value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
builder.WriteString(value[:remaining])
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func appendWebsocketLogBytes(builder *strings.Builder, value []byte, reserveForSuffix int) bool {
|
|
||||||
if builder == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
remaining := wsBodyLogMaxSize - builder.Len()
|
|
||||||
if remaining <= 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if len(value) <= remaining {
|
|
||||||
builder.Write(value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
limit := remaining - reserveForSuffix
|
|
||||||
if limit < 0 {
|
|
||||||
limit = 0
|
|
||||||
}
|
|
||||||
if limit > len(value) {
|
|
||||||
limit = len(value)
|
|
||||||
}
|
|
||||||
builder.Write(value[:limit])
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func websocketPayloadEventType(payload []byte) string {
|
func websocketPayloadEventType(payload []byte) string {
|
||||||
@@ -974,15 +918,8 @@ func websocketPayloadPreview(payload []byte) string {
|
|||||||
if len(trimmedPayload) == 0 {
|
if len(trimmedPayload) == 0 {
|
||||||
return "<empty>"
|
return "<empty>"
|
||||||
}
|
}
|
||||||
preview := trimmedPayload
|
previewText := strings.ReplaceAll(string(trimmedPayload), "\n", "\\n")
|
||||||
if len(preview) > wsPayloadLogMaxSize {
|
|
||||||
preview = preview[:wsPayloadLogMaxSize]
|
|
||||||
}
|
|
||||||
previewText := strings.ReplaceAll(string(preview), "\n", "\\n")
|
|
||||||
previewText = strings.ReplaceAll(previewText, "\r", "\\r")
|
previewText = strings.ReplaceAll(previewText, "\r", "\\r")
|
||||||
if len(trimmedPayload) > wsPayloadLogMaxSize {
|
|
||||||
return fmt.Sprintf("%s...(truncated,total=%d)", previewText, len(trimmedPayload))
|
|
||||||
}
|
|
||||||
return previewText
|
return previewText
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user