diff options
author | Yuuta Liang <yuuta@yuuta.moe> | 2022-07-13 11:16:27 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2022-07-13 11:16:27 -0700 |
commit | 85045e1e4a15e0a5657d189e83dd202a2c37f2b0 (patch) | |
tree | 944bc9ee7a86bd413dfc940e210f21d2434ec7d3 /src/main/java/moe/ymc/acron/config/json/Client.java | |
download | acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar.gz acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar.bz2 acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.zip |
First Commit
Signed-off-by: Trumeet <yuuta@yuuta.moe>
Diffstat (limited to 'src/main/java/moe/ymc/acron/config/json/Client.java')
-rw-r--r-- | src/main/java/moe/ymc/acron/config/json/Client.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/moe/ymc/acron/config/json/Client.java b/src/main/java/moe/ymc/acron/config/json/Client.java new file mode 100644 index 0000000..4d31308 --- /dev/null +++ b/src/main/java/moe/ymc/acron/config/json/Client.java @@ -0,0 +1,45 @@ +package moe.ymc.acron.config.json; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.auth.Action; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +class Client implements ConfigJsonObject<moe.ymc.acron.auth.Client> { + @SerializedName("id") + private final String id; + + @SerializedName("token") + private final String token; + + @SerializedName("policy_mode") + private final Action policyMode; + + @SerializedName("rules") + private final List<Rule> rules; + + private Client(String id, + String token, + Action policyMode, + List<Rule> rules) { + this.id = id; + this.token = token; + this.policyMode = policyMode; + this.rules = rules; + } + + @Override + public @NotNull moe.ymc.acron.auth.Client create(boolean startup) throws ConfigDeserializationException { + if (id == null || id.trim().equals("") || + token == null || token.trim().equals("")) { + throw new ConfigDeserializationException(".clients[].id or .clients[].token is not supplied."); + } + return new moe.ymc.acron.auth.Client(id, + token, + policyMode == null ? Action.DENY : policyMode, + rules == null ? new moe.ymc.acron.auth.Rule[]{} : + rules.stream().map(rule -> rule.create(startup)).toList() + .toArray(new moe.ymc.acron.auth.Rule[rules.size()])); + } +} |