package com.airlock.iam.oauth2.domain.service.clientauthentication.noauthentication;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.oauth2.api.domain.model.clientauthentication.ClientAuthenticationMethod;
import com.airlock.iam.oauth2.api.domain.service.clientauthentication.OAuth2ClientAuthentication;
import com.airlock.iam.oauth2.api.domain.service.clientauthentication.OAuth2ClientAuthenticationParser;
import com.airlock.iam.oauth2.api.domain.service.clientauthentication.OAuth2ClientAuthenticationVerifier;
import com.airlock.iam.oauth2.application.configuration.clientauthentication.OAuth2NoClientAuthenticationConfig;
import com.airlock.iam.oauth2.domain.model.clientauthentication.NoClientAuthenticationPayload;
import com.airlock.iam.oauth2.domain.model.clientauthentication.method.KnownClientAuthenticationMethod;
import jakarta.inject.Inject;
import java.util.List;

@LogicForConfig(OAuth2NoClientAuthenticationConfig.class)
public final class OAuth2NoClientAuthentication implements OAuth2ClientAuthentication<NoClientAuthenticationPayload> {
   @Override
   public List<ClientAuthenticationMethod> supportedAuthenticationMethods() {
      return List.of(KnownClientAuthenticationMethod.NONE);
   }

   @Override
   public OAuth2ClientAuthenticationParser<NoClientAuthenticationPayload> authenticationParser() {
      return OAuth2NoClientAuthenticationParser.NO_AUTHENTICATION_PARSER;
   }

   @Override
   public OAuth2ClientAuthenticationVerifier<NoClientAuthenticationPayload> verifier() {
      return OAuth2NoClientAuthenticationVerifier.NO_VERIFIER;
   }
}
