package com.airlock.iam.login.application.service.location;

import com.airlock.iam.login.api.domain.model.location.interpret.LocationInterpretation;
import com.airlock.iam.login.api.domain.model.location.interpret.LocationInterpreters;
import jakarta.inject.Inject;
import java.net.URI;
import java.util.Collections;
import java.util.List;

public class LocationService {
   private final List<LocationInterpreters> interpreters;

   @Inject
   public LocationService(List<LocationInterpreters> interpreters) {
      this.interpreters = interpreters;
   }

   public LocationInterpretation interpret(URI uri) {
      return this.interpreters
         .stream()
         .filter(interpreter -> interpreter.canInterpret(uri))
         .findFirst()
         .map(interpreter -> interpreter.interpret(uri))
         .orElseGet(() -> new LocationInterpretation(Collections.emptyMap()));
   }
}
