axonhub / internal /contexts /source.go
llzai's picture
Upload 1793 files
9853396 verified
package contexts
import (
"context"
"github.com/looplj/axonhub/internal/ent/request"
)
// WithSource stores the request source in the context.
func WithSource(ctx context.Context, source request.Source) context.Context {
container := getContainer(ctx)
container.Source = &source
return withContainer(ctx, container)
}
// GetSource retrieves the request source from the context.
func GetSource(ctx context.Context) (request.Source, bool) {
container := getContainer(ctx)
if container.Source != nil {
return *container.Source, true
}
return request.SourceAPI, false
}
// GetSourceOrDefault retrieves the request source from the context, or returns the default value if it doesn't exist.
func GetSourceOrDefault(ctx context.Context, defaultSource request.Source) request.Source {
if source, ok := GetSource(ctx); ok {
return source
}
return defaultSource
}