package com.airlock.iam.system.config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Optional;
import org.snakeyaml.engine.v2.api.Load;
import org.snakeyaml.engine.v2.api.LoadSettings;

public class YamlLoaderFactory {
   private static final int MAX_FILESIZE_FOR_USING_MARKS = 10485760;
   private static final int MAX_FILESIZE = 20971520;

   public static Object loadFromInputStream(InputStream yamlStream) {
      long fileSize = getFileSize(yamlStream);
      return yamlLoader(fileSize).loadFromInputStream(yamlStream);
   }

   private static long getFileSize(InputStream yamlStream) {
      try {
         return yamlStream.available();
      } catch (IOException var2) {
         return 1L;
      }
   }

   private static Load yamlLoader(long size) {
      return new Load(
         LoadSettings.builder()
            .setMaxAliasesForCollections(0)
            .setLabel("IAM Configuration")
            .setUseMarks(size < 10485760L)
            .setCodePointLimit(20971520)
            .setEnvConfig(Optional.empty())
            .setSchema(new IamYamlSchema())
            .build()
      );
   }
}
