-
Notifications
You must be signed in to change notification settings - Fork 2
/
Helper.cs
154 lines (128 loc) · 5.03 KB
/
Helper.cs
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using System;
using System.Collections.Generic;
using System.IO;
using ConfigurationHelper.Classes;
using Microsoft.Extensions.Configuration;
using SecurityHelper;
using Environment = ConfigurationHelper.Classes.Environment;
namespace ConfigurationHelper
{
public class Helper
{
/// <summary>
/// Configuration file name to read from.
/// * Add path if needed
/// * Change file name for secondary configuration files
/// </summary>
public static string ConfigurationFileName { get; set; } = "appsettings.json";
/// <summary>
/// Connection string for application database stored in appsettings.json
/// Another option would be to have the full connection string in the json file.
/// </summary>
/// <returns></returns>
public static string ConnectionString()
{
InitMainConfiguration();
var applicationSettings = InitOptions<DatabaseSettings>("database");
var connectionString =
$"Data Source={applicationSettings.DatabaseServer};" +
$"Initial Catalog={applicationSettings.Catalog};" +
"Integrated Security=True";
return connectionString;
}
/// <summary>
/// Determine if EF logging should be used
/// </summary>
/// <returns></returns>
public static bool UseLogging()
{
InitMainConfiguration();
var applicationSettings = InitOptions<ApplicationSettings>("database");
return applicationSettings.UsingLogging;
}
/// <summary>
/// Get connection string based on environment
/// </summary>
public static string GetConnectionString()
{
return ConfigurationMainBuilderRoot()
.GetConnectionString(InitOptions<Environment>("Environment").Production ?
"ProductionConnection" :
"DevelopmentConnection");
}
/// <summary>
/// Read encrypted connection string
/// </summary>
/// <returns></returns>
public static string GetConnectionStringSecure()
{
return ApplicationConfiguration.Reader(ConfigurationMainBuilderRoot()
.GetConnectionString(InitOptions<Environment>("Environment").Production ?
"ProductionConnection" :
"DevelopmentConnection"));
}
/// <summary>
/// Get connection strings for environments and see if dev or prod is to be used
/// to connection to a database.
/// </summary>
/// <returns></returns>
public static ConnectionStrings GetSettings()
{
try
{
InitMainConfiguration();
var connectionStrings = InitOptions<ConnectionStrings>("ConnectionStrings");
var environment = InitOptions<Environment>("Environment");
return new ConnectionStrings()
{
DevelopmentConnection = connectionStrings.DevelopmentConnection,
ProductionConnection = connectionStrings.ProductionConnection,
IsProduction = environment.Production
};
}
catch (Exception)
{
return null;
}
}
public static List<TableContainer> ColumnTableContainers()
{
var config = InitMainConfiguration();
return config.GetSection("TableContainer").Get<List<TableContainer>>();
}
public static GeneralSettings Configuration()
{
InitMainConfiguration();
return InitOptions<GeneralSettings>("GeneralSettings");
}
/// <summary>
/// Initialize ConfigurationBuilder for appsettings
/// </summary>
/// <returns>IConfigurationRoot</returns>
private static IConfigurationRoot InitMainConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(ConfigurationFileName);
return builder.Build();
}
private static IConfigurationRoot ConfigurationMainBuilderRoot()
{
var builder = new ConfigurationBuilder();
builder.AddJsonFile(ConfigurationFileName, optional: false);
var configuration = builder.Build();
return configuration;
}
/// <summary>
/// Generic method to read a section from the json configuration file.
/// </summary>
/// <typeparam name="T">Class type</typeparam>
/// <param name="section">Section to read</param>
/// <returns>Instance of T</returns>
public static T InitOptions<T>(string section) where T : new()
{
var config = InitMainConfiguration();
return config.GetSection(section).Get<T>();
}
}
}