package helps import ( "context" "github.com/router-for-me/CLIProxyAPI/v7/internal/logging" "github.com/router-for-me/CLIProxyAPI/v7/internal/util" cliproxyauth "github.com/router-for-me/CLIProxyAPI/v7/sdk/cliproxy/auth" cliproxyexecutor "github.com/router-for-me/CLIProxyAPI/v7/sdk/cliproxy/executor") // EnsureSessionContext ensures that ctx carries the internal session identity// for $CPA-SESSION-ID expansion in custom headers.func EnsureSessionContext(ctx context.Context, opts cliproxyexecutor.Options, payload []byte) context.Context { if ctx == nil { ctx = context.Background() } if id := util.SessionIDFromContext(ctx); id != "" { return ctx } if util.HasExplicitSessionID(ctx) { return ctx } if meta := logging.GetClientRequestMetadata(ctx); meta.SessionID != "" { return util.WithSessionID(ctx, meta.SessionID) } evalPayload := opts.OriginalRequest if len(evalPayload) == 0 { evalPayload = payload } canonical := cliproxyauth.CanonicalSessionID(opts.Headers, evalPayload, opts.Metadata) if canonical != "" { return util.WithSessionID(ctx, canonical) } return ctx}
package helps
import (
"context"
"github.com/router-for-me/CLIProxyAPI/v7/internal/logging"
"github.com/router-for-me/CLIProxyAPI/v7/internal/util"
cliproxyauth "github.com/router-for-me/CLIProxyAPI/v7/sdk/cliproxy/auth"
cliproxyexecutor "github.com/router-for-me/CLIProxyAPI/v7/sdk/cliproxy/executor"
)
// EnsureSessionContext ensures that ctx carries the internal session identity
// for $CPA-SESSION-ID expansion in custom headers.
func EnsureSessionContext(ctx context.Context, opts cliproxyexecutor.Options, payload []byte) context.Context {
if ctx == nil {
ctx = context.Background()
}
if id := util.SessionIDFromContext(ctx); id != "" {
return ctx
}
if util.HasExplicitSessionID(ctx) {
return ctx
}
if meta := logging.GetClientRequestMetadata(ctx); meta.SessionID != "" {
return util.WithSessionID(ctx, meta.SessionID)
}
evalPayload := opts.OriginalRequest
if len(evalPayload) == 0 {
evalPayload = payload
}
canonical := cliproxyauth.CanonicalSessionID(opts.Headers, evalPayload, opts.Metadata)
if canonical != "" {
return util.WithSessionID(ctx, canonical)
}
return ctx
}