sub2api/backend/internal/service/gateway_claude_runtime_headers.go
win 435ae221bc
Some checks failed
CI / test (push) Failing after 1m32s
CI / golangci-lint (push) Failing after 31s
Security Scan / backend-security (push) Failing after 1m32s
Security Scan / frontend-security (push) Failing after 9s
x
2026-04-16 19:11:47 +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
}