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

import com.airlock.iam.plugin.framework.domain.model.property.EnumPropertyTranslator;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;

public enum PkceCodeChallengeMethodClientOverride implements EnumPropertyTranslator {
   DEFAULT("Default from Authorization Code Flow/Grant", Optional.empty()),
   PKCE_NOT_ENFORCED(PkceCodeChallengeMethod.PKCE_NOT_ENFORCED.getDisplayValue(), Optional.of(PkceCodeChallengeMethod.PKCE_NOT_ENFORCED)),
   S256(PkceCodeChallengeMethod.S256.getDisplayValue(), Optional.of(PkceCodeChallengeMethod.S256)),
   PLAIN_OR_S256(PkceCodeChallengeMethod.PLAIN_OR_S256.getDisplayValue(), Optional.of(PkceCodeChallengeMethod.PLAIN_OR_S256));

   private final String displayValue;
   private final Optional<PkceCodeChallengeMethod> pkceCodeChallengeMethod;

   @SuppressFBWarnings(justification = "generated code")
   public String getDisplayValue() {
      return this.displayValue;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<PkceCodeChallengeMethod> getPkceCodeChallengeMethod() {
      return this.pkceCodeChallengeMethod;
   }

   @SuppressFBWarnings(justification = "generated code")
   PkceCodeChallengeMethodClientOverride(final String displayValue, final Optional<PkceCodeChallengeMethod> pkceCodeChallengeMethod) {
      this.displayValue = displayValue;
      this.pkceCodeChallengeMethod = pkceCodeChallengeMethod;
   }
}
