package com.airlock.iam.login.app.infrastructure.request;

import com.airlock.iam.core.application.configuration.waf.AirlockGatewayConfig;
import com.airlock.iam.core.misc.util.airlock.AirlockWAFEnvValues;
import com.airlock.iam.login.app.misc.configuration.Loginapp;
import com.airlock.iam.login.application.configuration.gateway.LoginappGatewayConfig;
import com.airlock.iam.plugin.api.config.ConfigurationContext;
import jakarta.servlet.http.HttpServletRequest;

public final class GatewayDetector {
   public static boolean isGatewayPresent(HttpServletRequest request) {
      return Loginapp.get(ConfigurationContext.defaultContext())
         .getGatewayConfig()
         .map(LoginappGatewayConfig::getAirlockGatewaySettings)
         .map(wafConfig -> hasSomeEnvironmentCookies(request, wafConfig))
         .orElse(false);
   }

   private static boolean hasSomeEnvironmentCookies(HttpServletRequest request, AirlockGatewayConfig wafConfig) {
      return AirlockWAFEnvValues.airlockWAFEnvValues(request.getCookies(), wafConfig).hasEnvironmentCookie();
   }

   private GatewayDetector() {
   }
}
