package com.airlock.iam.login.app.misc.configuration;

import com.airlock.iam.plugin.api.config.ConfigurationContext;
import com.airlock.iam.plugin.api.config.ConfigurationEnvironment;
import com.airlock.iam.plugin.api.config.PluginConfiguration;
import com.airlock.iam.plugin.api.exception.ConfigurationException;
import com.airlock.iam.plugin.api.exception.PropertyConfigurationException;
import com.airlock.iam.plugin.api.valuereader.StringPropertyValueReader;
import jakarta.ws.rs.core.CacheControl;
import jakarta.ws.rs.ext.RuntimeDelegate;

public final class CacheControlHeaderValidator {
   private CacheControlHeaderValidator() {
   }

   public static void checkIfAllowedHeaderValue(PluginConfiguration config, ConfigurationEnvironment env, ConfigurationContext context, String propertyName) throws ConfigurationException {
      String cacheControlHeader = StringPropertyValueReader.effectiveStringConfigValue(config, propertyName, env, context);
      if (cacheControlHeader != null) {
         try {
            RuntimeDelegate.getInstance().createHeaderDelegate(CacheControl.class).fromString(cacheControlHeader);
         } catch (IllegalArgumentException e) {
            throw new PropertyConfigurationException(config, env, context, "'" + cacheControlHeader + "' is not an allowed value.", new String[]{propertyName});
         }
      }
   }
}
