package com.airlock.iam.oauth2.api.domain.model;

import java.util.Collection;
import java.util.Set;
import lombok.NonNull;

public record OAuth2Scopes(@NonNull Set<OAuth2Scope> scopesAsSet) {
   public OAuth2Scopes {
      if (scopesAsSet == null) {
         throw new NullPointerException("scopesAsSet is marked non-null but is null");
      }

      scopesAsSet = Set.copyOf(scopesAsSet);
   }

   public static OAuth2Scopes emptyScopes() {
      return new OAuth2Scopes(Set.of());
   }

   public static OAuth2Scopes scopesFromStrings(Collection<String> scopeStrings) {
      return new OAuth2Scopes(OAuth2Scope.convertToScopes(scopeStrings));
   }
}
