package com.airlock.iam.oauth2.infrastructure.codegrant;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.base.api.infrastructure.plugin.PluginConfigToLogic;
import com.airlock.iam.oauth2.api.domain.model.provider.scope.OAuth2ScopeCondition;
import com.airlock.iam.oauth2.application.configuration.OAuth2CustomScopesSettingsConfig;
import com.airlock.iam.oauth2.domain.model.codegrant.OAuth2ScopesSettings;
import jakarta.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;

@LogicForConfig(OAuth2CustomScopesSettingsConfig.class)
public final class OAuth2CustomScopesSettings implements OAuth2ScopesSettings {
   private final List<OAuth2ScopeCondition> conditions;

   @Inject
   public OAuth2CustomScopesSettings(OAuth2CustomScopesSettingsConfig config, PluginConfigToLogic pluginConfigToLogic) {
      this.conditions = config.getConditions().stream().map(pluginConfigToLogic::getLogic).collect(Collectors.toList());
   }

   @Override
   public List<OAuth2ScopeCondition> scopeConditions() {
      return this.conditions;
   }
}
