package com.airlock.iam.common.infrastructure.i18n;

import com.airlock.iam.base.misc.json.JsonCoding;
import com.google.common.io.Resources;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.ws.rs.core.UriBuilder;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Map;

public class ClasspathI18nJsonLoader implements I18nJsonLoader {
   private final String basePath;

   @Override
   public Map<String, Object> loadJson(String jsonResource) {
      try {
         String path = UriBuilder.fromPath(this.basePath).path(jsonResource).build(new Object[0]).getPath();
         URL url = Resources.getResource(path);
         String text = Resources.toString(url, StandardCharsets.UTF_8);
         return JsonCoding.fromJson(text);
      } catch (IOException e) {
         throw new IllegalStateException(e);
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   public ClasspathI18nJsonLoader(String basePath) {
      this.basePath = basePath;
   }
}
