/* (C) 2025 Linnea Gräf - Licensed to everyone under the BSD 3 Clause License */ package moe.nea.prickly.config; import java.util.List; import java.util.stream.Collectors; import lombok.ToString; public class Config { private static final ConfigPath ROOT = new ConfigPath("PRICKLY"); private static final ConfigPath NET = ROOT.join("NET"); private static final ConfigPath AUTH = ROOT.join("AUTH"); public static final int PORT = NET.join("PORT").requireInt(); public static final String COOKIE = AUTH.join("COOKIE").getString().orElse("AUTH_COOKIE"); public static final String SECRET = AUTH.join("SECRET").requireString(); public static final String HOST = NET.join("HOST").getString().orElse("0"); public static final List APPLICATIONS = ROOT.join("APPLICATION").findChildren().map(Application::new).collect(Collectors.toList()); @ToString public static class Application extends ConfigStruct { Application(ConfigPath path) { super(path); } public final String SLUG = path.lastPart(); public final String NAME = path.join("NAME").requireString(); public final String HOMEPAGE = path.join("HOMEPAGE").requireString(); } static class ConfigStruct { protected final ConfigPath path; protected ConfigStruct(ConfigPath path) { this.path = path; } } }