package com.airlock.iam.oauth2.domain.model;

import com.airlock.iam.base.api.domain.model.exception.FailureException;
import com.airlock.iam.base.misc.log.LogUtil;
import com.nimbusds.langtag.LangTag;
import com.nimbusds.langtag.LangTagException;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public class OAuth2Language {
   private final LangTag langTag;

   public static OAuth2Language oAuth2Language(String languageTag) {
      try {
         return new OAuth2Language(LangTag.parse(languageTag));
      } catch (LangTagException e) {
         throw new FailureException("Invalid language " + LogUtil.logSafeQuote(languageTag), e);
      }
   }

   public String asLanguageTagString() {
      return this.langTag.toString();
   }

   @Override
   public String toString() {
      return this.asLanguageTagString();
   }

   @SuppressFBWarnings(justification = "generated code")
   private OAuth2Language(LangTag langTag) {
      this.langTag = langTag;
   }
}
