aboutsummaryrefslogtreecommitdiff
path: root/cmnext-cli/src/Settings/AppConfig.cs
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2024-01-14 18:38:58 -0500
committerLibravatar vnugent <public@vaughnnugent.com>2024-01-14 18:38:58 -0500
commit2889b3dd10de9a5df42f3f8ab2171b52893ac3f4 (patch)
treede8c02ae251e2b5cc4b1db6a0ce10ecb7fb89119 /cmnext-cli/src/Settings/AppConfig.cs
parentbfeadbf69f60effe405609ba15bec57eca989ade (diff)
cli-dev branch
Diffstat (limited to 'cmnext-cli/src/Settings/AppConfig.cs')
-rw-r--r--cmnext-cli/src/Settings/AppConfig.cs80
1 files changed, 80 insertions, 0 deletions
diff --git a/cmnext-cli/src/Settings/AppConfig.cs b/cmnext-cli/src/Settings/AppConfig.cs
new file mode 100644
index 0000000..8ec1cbb
--- /dev/null
+++ b/cmnext-cli/src/Settings/AppConfig.cs
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2024 Vaughn Nugent
+*
+* Package: CMNext.Cli
+* File: Program.cs
+*
+* CMNext.Cli is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published
+* by the Free Software Foundation, either version 2 of the License,
+* or (at your option) any later version.
+*
+* CMNext.Cli is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with CMNext.Cli. If not, see http://www.gnu.org/licenses/.
+*/
+
+using System.IO;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+using CMNext.Cli.Site;
+using CMNext.Cli.Storage;
+
+namespace CMNext.Cli.Settings
+{
+ public sealed class AppConfig : IStorable
+ {
+ [JsonPropertyName("url")]
+ public string BaseAddress { get; set; } = string.Empty;
+
+ [JsonPropertyName("endpoints")]
+ public CMNextEndpointMap Endpoints { get; set; } = new();
+
+ [JsonPropertyName("auth")]
+ public string VauthCommands { get; set; } = "vauth --silent";
+
+ bool IStorable.Load(Stream data)
+ {
+ if (data.Length == 0)
+ {
+ return false;
+ }
+
+ AppConfig config = JsonSerializer.Deserialize<AppConfig>(data) ?? new();
+
+ //Set values
+ Endpoints = config.Endpoints;
+ BaseAddress = config.BaseAddress;
+ return true;
+ }
+
+ void IStorable.Save(Stream data)
+ {
+ //Write the instance to the stream
+ JsonSerializer.Serialize(data, this);
+ }
+ }
+
+ public sealed class CMNextEndpointMap : ICMNextEndpointMap
+ {
+ [JsonPropertyName("channels")]
+ public string ChannelPath { get; set; } = "/blog/channels";
+
+ [JsonPropertyName("posts")]
+ public string PostPath { get; set; } = "/blog/posts";
+
+ [JsonPropertyName("content")]
+ public string ContentPath { get; set; } = "/blog/content";
+
+ [JsonPropertyName("login")]
+ public string LoginPath { get; set; } = "/account/pki";
+
+ [JsonPropertyName("logout")]
+ public string LogoutPath { get; set; } = "/account/logout";
+ }
+} \ No newline at end of file