package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.common.api.domain.model.user.CurrentLocale;
import com.airlock.iam.common.application.locale.LocalePreferenceConfiguration;
import com.airlock.iam.common.domain.model.locale.LocalePreferences;
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 LocaleModule extends PrivateModule {
   @Provides
   @RequestScoped
   @Exposed
   LocalePreferences localePreferences(LocalePreferenceConfiguration config) {
      return config.getPreferences();
   }

   @Provides
   @RequestScoped
   @Exposed
   CurrentLocale currentLocale(HttpServletRequest request, LocalePreferences preferences) {
      String acceptLanguage = request.getHeader("Accept-Language");
      return new CurrentLocale(preferences.forAcceptLanguage(acceptLanguage));
   }

   protected void configure() {
   }
}
