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

import com.airlock.iam.base.api.infrastructure.plugin.PluginConfigToLogic;
import com.airlock.iam.oauth2.application.configuration.resource.OAuth2ResourceEndpointConfig;
import com.airlock.iam.oauth2.infrastructure.credential.OAuth2AccessTokenExtractionService;
import com.airlock.iam.oauth2.infrastructure.validation.OAuth2ResourceAccess;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

public class OAuth2ResourceAccessModule extends PrivateModule {
   @Provides
   OAuth2AccessTokenExtractionService provideAccessTokenExtraction(OAuth2ResourceEndpointConfig endpointConfig, PluginConfigToLogic toLogic) {
      return toLogic.getLogic(endpointConfig.getAccessTokenAuthenticationConfig());
   }

   protected void configure() {
      this.bind(OAuth2ResourceAccess.class);
      this.expose(OAuth2ResourceAccess.class);
   }
}
