package com.airlock.iam.saml2.infrastructure.factory.idp;

import com.airlock.iam.saml2.application.service.idp.Saml2SpInitiatedSsoService;
import com.airlock.iam.saml2.infrastructure.service.Saml2SessionProvider;
import com.airlock.iam.saml2.infrastructure.service.Saml2SessionProviderImpl;
import com.airlock.iam.saml2.infrastructure.service.idp.Saml2AuthnRequestExtractor;
import com.airlock.iam.saml2.infrastructure.service.idp.Saml2AuthnRequestExtractorImpl;
import com.airlock.iam.saml2.infrastructure.service.idp.Saml2SessionTerminationService;
import com.airlock.iam.saml2.infrastructure.service.idp.Saml2SessionTerminationServiceImpl;
import com.airlock.iam.saml2.infrastructure.service.idp.Saml2SpInitiatedSsoServiceImpl;
import com.google.inject.PrivateModule;
import com.google.inject.servlet.RequestScoped;

public final class Saml2SpInitiatedSsoServiceModule extends PrivateModule {
   protected void configure() {
      this.bind(Saml2SessionProvider.class).to(Saml2SessionProviderImpl.class).in(RequestScoped.class);
      this.bind(Saml2SessionTerminationService.class).to(Saml2SessionTerminationServiceImpl.class).in(RequestScoped.class);
      this.bind(Saml2AuthnRequestExtractor.class).to(Saml2AuthnRequestExtractorImpl.class).in(RequestScoped.class);
      this.bind(Saml2SpInitiatedSsoService.class).to(Saml2SpInitiatedSsoServiceImpl.class).in(RequestScoped.class);
      this.expose(Saml2SpInitiatedSsoService.class);
   }
}
