package com.airlock.iam.oauth2.domain.service.accountlinking;

import com.airlock.iam.common.domain.model.accountlink.AccountInfo;
import com.airlock.iam.login.api.domain.model.oauth2.OAuth2Credential;
import com.airlock.iam.oauth2.domain.model.settings.OAuth2SsoIdentificationServiceSettings;
import jakarta.inject.Inject;

public class AccountLinkAccountInfoProviderImpl implements AccountLinkAccountInfoProvider {
   private final OAuth2SsoIdentificationServiceSettings settings;

   @Inject
   public AccountLinkAccountInfoProviderImpl(OAuth2SsoIdentificationServiceSettings settings) {
      this.settings = settings;
   }

   @Override
   public AccountInfo accountInfo(OAuth2Credential credential) {
      return this.settings.getAccountInfo().map(key -> AccountInfo.accountInfo(credential.getAttributeValue(key))).orElse(AccountInfo.emptyAccountInfo());
   }
}
