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

import com.airlock.iam.oauth2.application.configuration.OAuth2AuthorizationServerConfigSpec;
import com.airlock.iam.oauth2.infrastructure.credential.OAuth2AccessTokenExtractionService;
import com.airlock.iam.oauth2.infrastructure.credential.OAuth2BearerAccessTokenExtraction;
import com.airlock.iam.oauth2.infrastructure.validation.OAuth2AccessTokenAccessValidator;
import com.airlock.iam.oauth2.infrastructure.validation.OpenIdConnectUserInfoAccess;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

public class OpenIdConnectUserInfoAccessModule extends PrivateModule {
   @Provides
   OAuth2AccessTokenExtractionService provideAccessTokenExtraction(OAuth2AuthorizationServerConfigSpec configSpec) {
      return new OAuth2BearerAccessTokenExtraction(configSpec.tokenRepresentation());
   }

   @Exposed
   @Provides
   OpenIdConnectUserInfoAccess provideUserInfoAccess(OAuth2AccessTokenAccessValidator accessValidator) {
      return new OpenIdConnectUserInfoAccess(accessValidator);
   }

   protected void configure() {
   }
}
