package com.airlock.iam.apipolicyservice.app.infrastructure.factory;

import com.airlock.iam.apipolicyservice.app.infrastructure.Configuration;
import com.airlock.iam.core.misc.util.context.ContextExtractor;
import com.airlock.iam.plugin.api.config.ConfigurationContext;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import com.google.inject.servlet.RequestScoped;
import jakarta.servlet.http.HttpServletRequest;

public class ApiPolicyServiceConfigurationContextModule extends PrivateModule {
   @Provides
   @RequestScoped
   @Exposed
   ConfigurationContext provideConfigurationContext(HttpServletRequest request) {
      ContextExtractor contextExtractor = Configuration.getInstance().getApiPolicyServiceAppConfig(ConfigurationContext.defaultContext()).getContextExtractor();
      return contextExtractor.getContext(request).orElse(ConfigurationContext.defaultContext());
   }

   protected void configure() {
   }
}
