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

import com.airlock.iam.base.misc.log.LogUtil;
import com.airlock.iam.oauth2.api.domain.model.OAuth2Scope;
import com.airlock.iam.oauth2.domain.model.scopepolicy.ScopePolicyInput;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

public interface ScopePolicy {
   String AUTHORIZATION_GRANT_SCOPE_POLICY = "AUTHORIZATION_GRANT_SCOPE_POLICY";
   String TOKEN_EXCHANGE_SCOPE_POLICY = "TOKEN_EXCHANGE_SCOPE_POLICY";

   boolean isValidRequestedScope(List<OAuth2Scope> var1);

   List<OAuth2Scope> processScopes(ScopePolicyInput var1);

   static String toScopeString(Collection<OAuth2Scope> scopes) {
      return LogUtil.logSafeQuote(scopes.stream().map(OAuth2Scope::name).collect(Collectors.joining(" ")));
   }
}
