package com.airlock.iam.authentication.infrastructure.service.ui;

import com.airlock.iam.authentication.application.settings.OpenIdConnectSessionManagementSettings;
import com.airlock.iam.oauth2.api.domain.model.AuthorizationServerId;
import com.airlock.iam.oauth2.application.configuration.OAuth2AsConfigsSpec;
import com.airlock.iam.oauth2.application.configuration.OAuth2AuthorizationServerConfigSpec;
import jakarta.inject.Inject;
import java.util.Optional;

public final class OAuth2UiService {
   private final Optional<OAuth2AsConfigsSpec> oAuth2AsCentricConfigSpec;

   @Inject
   public OAuth2UiService(Optional<OAuth2AsConfigsSpec> oAuth2AsCentricConfigSpec) {
      this.oAuth2AsCentricConfigSpec = oAuth2AsCentricConfigSpec;
   }

   public Optional<OpenIdConnectSessionManagementSettings> getOpenIdConnectCheckSessionUiSettings(AuthorizationServerId authorizationServerId) {
      return this.oAuth2AsCentricConfigSpec
         .<OAuth2AuthorizationServerConfigSpec>flatMap(s -> s.findOAuth2AuthorizationServerConfigSpec(authorizationServerId))
         .flatMap(OAuth2AuthorizationServerConfigSpec::getOpenIDConnectSessionManagement)
         .map(m -> new OpenIdConnectSessionManagementSettings(m.isDebug()));
   }
}
