package resource

import (
	"context"
	"time"

	"github.com/kyverno/kyverno/api/kyverno"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/kube-openapi/pkg/validation/strfmt"
)

func ValidateTtlLabel(_ context.Context, object metav1.Object) error {
	labels := object.GetLabels()
	if labels == nil {
		return nil
	}
	if ttl, ok := labels[kyverno.LabelCleanupTtl]; !ok {
		return nil
	} else {
		_, err := strfmt.ParseDuration(ttl)
		if err != nil {
			// Try parsing ttlValue as a time in ISO 8601 format
			_, err := time.Parse(kyverno.ValueTtlDateTimeLayout, ttl)
			if err != nil {
				_, err = time.Parse(kyverno.ValueTtlDateLayout, ttl)
				if err != nil {
					return err
				}
			}
		}
	}
	return nil
}