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

import com.airlock.iam.common.application.configuration.language.LanguageSettings;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Objects;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;

public class BrowserLanguageExtractor implements DisplayLanguageExtractor {
   private final HttpServletRequest request;

   public BrowserLanguageExtractor(HttpServletRequest request) {
      Objects.requireNonNull(request, "request must not be null");
      this.request = request;
   }

   @Override
   public Optional<DisplayLanguage> extract(LanguageSettings languageSettings) {
      String acceptedLanguagesHeader = this.request.getHeader("Accept-Language");
      return StringUtils.isBlank(acceptedLanguagesHeader)
         ? Optional.empty()
         : Optional.of(
            new DisplayLanguage(StringUtils.substring(StringUtils.trimToEmpty(acceptedLanguagesHeader), 0, 2), DisplayLanguageSourceType.BROWSER_LANGUAGE)
         );
   }
}
