package com.airlock.iam.login.domain.service.uiresource;

import com.airlock.iam.login.domain.model.uiresource.RequestUrlPatternUiResourcSetRule;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.net.URI;
import java.util.List;
import java.util.Optional;

public final class RequestUrlPatternUiResourceSetRuleService implements UiResourceSetRule {
   private final Provider<List<RequestUrlPatternUiResourcSetRule>> rules;

   @Inject
   public RequestUrlPatternUiResourceSetRuleService(Provider<List<RequestUrlPatternUiResourcSetRule>> rules) {
      this.rules = rules;
   }

   @Override
   public Optional<String> getResourceName(URI requestUri) {
      return ((List)this.rules.get())
         .stream()
         .filter(rule -> rule.isUriMatch(requestUri))
         .map(RequestUrlPatternUiResourcSetRule::uiResourceSetFileName)
         .findFirst();
   }
}
