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

import com.airlock.iam.oauth2.api.domain.model.clientauthentication.ClientAuthenticationMethod;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import lombok.NonNull;

public final class KnownClientAuthenticationMethod extends ClientAuthenticationMethod {
   public static final KnownClientAuthenticationMethod BASIC_AUTH_CLIENT_SECRET = new KnownClientAuthenticationMethod("client_secret_basic");
   public static final KnownClientAuthenticationMethod POST_PARAMETERS_CLIENT_SECRET = new KnownClientAuthenticationMethod("client_secret_post");
   public static final KnownClientAuthenticationMethod PRIVATE_KEY_JWT = new KnownClientAuthenticationMethod("private_key_jwt");
   public static final KnownClientAuthenticationMethod MTLS_CERTIFICATE = new KnownClientAuthenticationMethod("tls_client_auth");
   public static final KnownClientAuthenticationMethod NONE = new KnownClientAuthenticationMethod("none");
   @NonNull
   private final String identifier;

   private KnownClientAuthenticationMethod(@NonNull String identifier) {
      if (identifier == null) {
         throw new NullPointerException("identifier is marked non-null but is null");
      }

      this.identifier = identifier;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String getIdentifier() {
      return this.identifier;
   }
}
