aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Configs/ApplicationConfiguration.cs
blob: bc77fd5a7d07249fc8ada3d2d409bab76c7b3d32 (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
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;

namespace Timeline.Configs
{
    public static class ApplicationConfiguration
    {
        public const string WorkDirectoryKey = "WorkDirectory";
        public const string DefaultWorkDirectoryName = "timeline";
        public const string DatabaseFileName = "timeline.db";
        public const string DatabaseBackupDirectoryName = "backup";
        public const string FrontEndKey = "FrontEnd";
        public const string DisableAutoBackupKey = "DisableAutoBackup";

        public static bool CheckIsValidBoolString(string? value, string configPath, Boolean defaultValue)
        {
            if (value is null)
            {
                return defaultValue;
            }

            var true_strings = new List<string> { "true", "1", "y", "yes", "on" };
            var false_strings = new List<string> { "false", "0", "n", "no", "off" };

            if (true_strings.Contains(value.ToLowerInvariant()))
            {
                return true;
            }
            else if (false_strings.Contains(value.ToLowerInvariant()))
            {
                return false;
            }
            else
            {
                throw new Exception($"Invalid boolean value {value} in config {configPath}.");
            }
        }

        public static bool GetBoolConfig(IConfiguration configuration, string configPath, bool defaultValue)
        {
            var value = configuration.GetValue<string?>(configPath);
            return CheckIsValidBoolString(value, configPath, defaultValue);
        }
    }
}