package proxy

import (
	"context"
	"strings"
)

type clusterIDContextKey struct{}

type sharedResourceDashboardContextKey struct{}

func contextWithClusterID(ctx context.Context, clusterID string) context.Context {
	clusterID = normalizeClusterID(clusterID)
	if clusterID == "" {
		return ctx
	}
	return context.WithValue(ctx, clusterIDContextKey{}, clusterID)
}

func clusterIDFromContext(ctx context.Context) string {
	clusterID, _ := ctx.Value(clusterIDContextKey{}).(string)
	return clusterID
}

func contextWithSharedResourceDashboard(ctx context.Context) context.Context {
	return context.WithValue(ctx, sharedResourceDashboardContextKey{}, true)
}

func isSharedResourceDashboardContext(ctx context.Context) bool {
	enabled, _ := ctx.Value(sharedResourceDashboardContextKey{}).(bool)
	return enabled
}

func normalizeClusterID(clusterID string) string {
	clusterID = strings.TrimSpace(clusterID)
	if parts := strings.Split(clusterID, "/"); len(parts) == 2 {
		return parts[0]
	}
	return clusterID
}
