package auth

import "context"

type requestMetaKey struct{}

// RequestMeta carries client audit fields injected by handlers.
type RequestMeta struct {
	ClientIP  string
	UserAgent string
}

// WithRequestMeta attaches client metadata to context.
func WithRequestMeta(ctx context.Context, meta RequestMeta) context.Context {
	return context.WithValue(ctx, requestMetaKey{}, meta)
}

// RequestMetaFromContext reads client metadata from context.
func RequestMetaFromContext(ctx context.Context) RequestMeta {
	if ctx == nil {
		return RequestMeta{}
	}
	if meta, ok := ctx.Value(requestMetaKey{}).(RequestMeta); ok {
		return meta
	}
	return RequestMeta{}
}
