package com.airlock.iam.oauth2.infrastructure.factory.rest;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.oauth2.application.configuration.clientauthentication.OAuth2HeaderClientSecretMethodConfig;
import com.airlock.iam.oauth2.domain.service.clientauthentication.clientsecret.OAuth2HeaderClientSecretMethodSettings;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

@ModuleForConfig(OAuth2HeaderClientSecretMethodConfig.class)
public final class OAuth2HeaderClientSecretMethodModule extends PrivateModule {
   @Provides
   @Exposed
   OAuth2HeaderClientSecretMethodSettings provideOAuth2HeaderClientSecretMethodSettings(OAuth2HeaderClientSecretMethodConfig config) {
      return OAuth2HeaderClientSecretMethodSettings.builder()
         .headerField(config.getHeaderField())
         .headerPrefix(config.getHeaderPrefix())
         .clientSecretFormat(config.getClientSecretFormat())
         .base64EncodeClientSecretValue(config.isBase64EncodeClientSecretValue())
         .build();
   }

   protected void configure() {
   }
}
