aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Data/Static
diff options
context:
space:
mode:
Diffstat (limited to 'code/api/src/Data/Static')
-rw-r--r--code/api/src/Data/Static/AppClaims.cs8
-rw-r--r--code/api/src/Data/Static/AppConfiguration.cs58
-rw-r--r--code/api/src/Data/Static/AppConstants.cs12
-rw-r--r--code/api/src/Data/Static/AppDateTime.cs16
-rw-r--r--code/api/src/Data/Static/AppEnvironmentVariables.cs21
-rw-r--r--code/api/src/Data/Static/AppHeaders.cs7
-rw-r--r--code/api/src/Data/Static/AppPaths.cs17
-rw-r--r--code/api/src/Data/Static/JsonSettings.cs11
8 files changed, 150 insertions, 0 deletions
diff --git a/code/api/src/Data/Static/AppClaims.cs b/code/api/src/Data/Static/AppClaims.cs
new file mode 100644
index 0000000..8b6d3a8
--- /dev/null
+++ b/code/api/src/Data/Static/AppClaims.cs
@@ -0,0 +1,8 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppClaims
+{
+ public const string USER_ID = "user_id";
+ public const string NAME = "name";
+ public const string GITHUB_ACCESS_TOKEN = "";
+}
diff --git a/code/api/src/Data/Static/AppConfiguration.cs b/code/api/src/Data/Static/AppConfiguration.cs
new file mode 100644
index 0000000..4ee7a8e
--- /dev/null
+++ b/code/api/src/Data/Static/AppConfiguration.cs
@@ -0,0 +1,58 @@
+using System.Security.Cryptography.X509Certificates;
+
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public class AppConfiguration
+{
+ public string DB_HOST { get; set; }
+ public string DB_PORT { get; set; }
+ public string DB_USER { get; set; }
+ public string DB_PASSWORD { get; set; }
+ public string DB_NAME { get; set; }
+ public string QUARTZ_DB_HOST { get; set; }
+ public string QUARTZ_DB_PORT { get; set; }
+ public string QUARTZ_DB_USER { get; set; }
+ public string QUARTZ_DB_PASSWORD { get; set; }
+ public string QUARTZ_DB_NAME { get; set; }
+ public string SEQ_API_KEY { get; set; }
+ public string SEQ_API_URL { get; set; }
+ public string SMTP_HOST { get; set; }
+ public string SMTP_PORT { get; set; }
+ public string SMTP_USER { get; set; }
+ public string SMTP_PASSWORD { get; set; }
+ public string EMAIL_FROM_ADDRESS { get; set; }
+ public string EMAIL_FROM_DISPLAY_NAME { get; set; }
+ public string PORTAL_URL { get; set; }
+ public string GITHUB_CLIENT_ID { get; set; }
+ public string GITHUB_CLIENT_SECRET { get; set; }
+ public string APP_AES_KEY { get; set; }
+ public string APP_CERT { get; set; }
+
+ public X509Certificate2 CERT1() => new (Convert.FromBase64String(APP_CERT));
+
+ public object GetPublicVersion() {
+ return new {
+ DB_HOST,
+ DB_PORT,
+ DB_USER,
+ DB_PASSWORD = DB_PASSWORD.Obfuscate() ?? "",
+ QUARTZ_DB_HOST,
+ QUARTZ_DB_PORT,
+ QUARTZ_DB_USER,
+ QUARTZ_DB_PASSWORD = QUARTZ_DB_PASSWORD.Obfuscate() ?? "",
+ SEQ_API_KEY = SEQ_API_KEY.Obfuscate() ?? "",
+ SEQ_API_URL,
+ SMTP_HOST,
+ SMTP_PORT,
+ SMTP_USER = SMTP_USER.Obfuscate() ?? "",
+ SMTP_PASSWORD = SMTP_PASSWORD.Obfuscate() ?? "",
+ EMAIL_FROM_ADDRESS,
+ EMAIL_FROM_DISPLAY_NAME,
+ PORTAL_URL,
+ GITHUB_CLIENT_ID = GITHUB_CLIENT_ID.Obfuscate() ?? "",
+ GITHUB_CLIENT_SECRET = GITHUB_CLIENT_SECRET.Obfuscate() ?? "",
+ APP_AES_KEY = APP_AES_KEY.Obfuscate() ?? "",
+ CERT1 = CERT1().PublicKey.Oid.FriendlyName
+ };
+ }
+}
diff --git a/code/api/src/Data/Static/AppConstants.cs b/code/api/src/Data/Static/AppConstants.cs
new file mode 100644
index 0000000..461317b
--- /dev/null
+++ b/code/api/src/Data/Static/AppConstants.cs
@@ -0,0 +1,12 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppConstants
+{
+ public const string API_NAME = "Great Office API";
+ public const string BASIC_AUTH_SCHEME = "BasicAuthenticationScheme";
+ public const string TOKEN_ALLOW_READ = "TOKEN_ALLOW_READ";
+ public const string TOKEN_ALLOW_CREATE = "TOKEN_ALLOW_CREATE";
+ public const string TOKEN_ALLOW_UPDATE = "TOKEN_ALLOW_UPDATE";
+ public const string TOKEN_ALLOW_DELETE = "TOKEN_ALLOW_DELETE";
+ public const string VAULT_CACHE_KEY = "VAULT_CACHE_KEY";
+}
diff --git a/code/api/src/Data/Static/AppDateTime.cs b/code/api/src/Data/Static/AppDateTime.cs
new file mode 100644
index 0000000..880d2a8
--- /dev/null
+++ b/code/api/src/Data/Static/AppDateTime.cs
@@ -0,0 +1,16 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppDateTime
+{
+ private static DateTime? dateTime;
+
+ public static DateTime UtcNow => dateTime ?? DateTime.UtcNow;
+
+ public static void Set(DateTime setDateTime) {
+ dateTime = setDateTime;
+ }
+
+ public static void Reset() {
+ dateTime = null;
+ }
+}
diff --git a/code/api/src/Data/Static/AppEnvironmentVariables.cs b/code/api/src/Data/Static/AppEnvironmentVariables.cs
new file mode 100644
index 0000000..c3f821d
--- /dev/null
+++ b/code/api/src/Data/Static/AppEnvironmentVariables.cs
@@ -0,0 +1,21 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppEnvironmentVariables
+{
+ /// <summary>
+ /// An access token that can be used to access the Hashicorp Vault instance that is available at VAULT_URL
+ /// </summary>
+ public const string VAULT_TOKEN = "VAULT_TOKEN";
+ /// <summary>
+ /// An url pointing to the Hashicorp Vault instance the app should use
+ /// </summary>
+ public const string VAULT_URL = "VAULT_URL";
+ /// <summary>
+ /// The duration of which to keep a local cached version of the configuration
+ /// </summary>
+ public const string VAULT_CACHE_TTL = "VAULT_CACHE_TTL";
+ /// <summary>
+ /// The vault key name for the main configuration json object, described by <see cref="AppConfiguration"/>
+ /// </summary>
+ public const string MAIN_CONFIG_SHEET = "MAIN_CONFIG_SHEET";
+}
diff --git a/code/api/src/Data/Static/AppHeaders.cs b/code/api/src/Data/Static/AppHeaders.cs
new file mode 100644
index 0000000..7912418
--- /dev/null
+++ b/code/api/src/Data/Static/AppHeaders.cs
@@ -0,0 +1,7 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppHeaders
+{
+ public const string BROWSER_TIME_ZONE = "X-TimeZone";
+ public const string VAULT_TOKEN = "X-Vault-Token";
+}
diff --git a/code/api/src/Data/Static/AppPaths.cs b/code/api/src/Data/Static/AppPaths.cs
new file mode 100644
index 0000000..a24f5af
--- /dev/null
+++ b/code/api/src/Data/Static/AppPaths.cs
@@ -0,0 +1,17 @@
+
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class AppPaths
+{
+ public static AppPath AppData => new() {
+ HostPath = Path.Combine(Directory.GetCurrentDirectory(), "AppData")
+ };
+
+ public static AppPath DataProtectionKeys => new() {
+ HostPath = Path.Combine(Directory.GetCurrentDirectory(), "AppData", "dp-keys")
+ };
+
+ public static AppPath Frontend => new() {
+ HostPath = Path.Combine(Directory.GetCurrentDirectory(), "Frontend")
+ };
+}
diff --git a/code/api/src/Data/Static/JsonSettings.cs b/code/api/src/Data/Static/JsonSettings.cs
new file mode 100644
index 0000000..a163c11
--- /dev/null
+++ b/code/api/src/Data/Static/JsonSettings.cs
@@ -0,0 +1,11 @@
+namespace IOL.GreatOffice.Api.Data.Static;
+
+public static class JsonSettings
+{
+ public static Action<JsonOptions> Default { get; } = options => {
+ options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+ options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
+ options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;
+ options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
+ };
+}