sub2api/backend/internal/service/gateway_claude_runtime_headers.go
win 9da079a5ee
Some checks failed
Security Scan / backend-security (push) Failing after 3s
Security Scan / frontend-security (push) Failing after 5s
CI / test (push) Failing after 3s
CI / frontend (push) Failing after 3s
CI / golangci-lint (push) Failing after 3s
CI / windsurf-platform (macos-latest) (push) Has been cancelled
CI / windsurf-platform (windows-latest) (push) Has been cancelled
x
2026-04-27 19:01:41 +08:00

48 lines
1.1 KiB
Go

package service
import (
"net/http"
"strings"
claude "github.com/Wei-Shaw/sub2api/internal/pkg/claude"
)
func applyClaudeRuntimeOptionalHeaders(req *http.Request) {
if req == nil {
return
}
for key, value := range claude.OptionalAPIHeaders() {
if strings.TrimSpace(value) == "" {
continue
}
setHeaderRaw(req.Header, resolveWireCasing(key), value)
}
}
func attributionOptionsForRequest(account *Account, tokenType string) attributionBlockOptions {
return attributionBlockOptions{
Entrypoint: claude.CurrentEntrypoint(),
Workload: claude.CurrentWorkload(),
OmitCCH: shouldOmitAttributionCCH(account, tokenType),
}
}
func shouldOmitAttributionCCH(account *Account, tokenType string) bool {
if strings.EqualFold(strings.TrimSpace(tokenType), "bedrock") {
return true
}
if account == nil {
return false
}
if account.Type == AccountTypeBedrock {
return true
}
for _, key := range []string{"provider", "upstream_provider"} {
switch strings.ToLower(strings.TrimSpace(account.GetExtraString(key))) {
case "bedrock", "anthropicaws", "anthropic_aws", "mantle":
return true
}
}
return false
}