package audit

import "context"

type ctxKey string

const (
	ctxKeyIP        ctxKey = "audit_ip"
	ctxKeyUserAgent ctxKey = "audit_user_agent"
)

func WithRequestInfo(ctx context.Context, ip string, userAgent string) context.Context {
	if ctx == nil {
		return nil
	}
	next := context.WithValue(ctx, ctxKeyIP, ip)
	return context.WithValue(next, ctxKeyUserAgent, userAgent)
}

func RequestInfoFromContext(ctx context.Context) (ip string, userAgent string) {
	if ctx == nil {
		return "", ""
	}
	if v := ctx.Value(ctxKeyIP); v != nil {
		if s, ok := v.(string); ok {
			ip = s
		}
	}
	if v := ctx.Value(ctxKeyUserAgent); v != nil {
		if s, ok := v.(string); ok {
			userAgent = s
		}
	}
	return ip, userAgent
}
