summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/prickly/config/Config.java
blob: 624b1e3e542a2bab46cae335f9569dd6bec4f42b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* (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<Application> 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;
		}
	}
}