Move Infrastructure.Configuration into Configuration (#291)

This commit is contained in:
Aaron Po
2026-09-12 15:59:37 -04:00
committed by GitHub
parent 180ed41e68
commit 78d0eaa739
26 changed files with 27 additions and 27 deletions

View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Configuration</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference
Include="Microsoft.Extensions.Configuration.Abstractions"
Version="10.0.1"
/>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,32 @@
using Microsoft.Extensions.Configuration;
namespace Configuration;
public static class ConfigurationHelpers
{
public static string GetKeyOrThrow(IConfiguration configuration, string key) =>
configuration[key]
?? throw new InvalidOperationException($"The {key} environment variable is not set.");
public static bool GetBooleanKeyOrThrow(IConfiguration configuration, string key)
{
string value = GetKeyOrThrow(configuration, key);
return bool.TryParse(value, out bool result)
? result
: throw new InvalidOperationException(
$"The {key} environment variable is set to '{value}', which is not a valid boolean."
);
}
public static int GetIntKeyOrThrow(IConfiguration configuration, string key)
{
string value = GetKeyOrThrow(configuration, key);
return int.TryParse(value, out int result)
? result
: throw new InvalidOperationException(
$"The {key} environment variable is set to '{value}', which is not a valid integer."
);
}
}

View File

@@ -0,0 +1,38 @@
namespace Configuration;
public static class ConfigurationKeys
{
public const string AccessTokenSecret = "ACCESS_TOKEN_SECRET";
public const string RefreshTokenSecret = "REFRESH_TOKEN_SECRET";
public const string ConfirmationTokenSecret = "CONFIRMATION_TOKEN_SECRET";
/// <summary>
/// Fallback configuration section path for the access-token signing key, checked when
/// <see cref="AccessTokenSecret" /> is not set.
/// </summary>
public const string JwtSecretKeyFallback = "Jwt:SecretKey";
public const string WebsiteBaseUrl = "WEBSITE_BASE_URL";
public const string SmtpHost = "SMTP_HOST";
public const string SmtpPort = "SMTP_PORT";
public const string SmtpUsername = "SMTP_USERNAME";
public const string SmtpPassword = "SMTP_PASSWORD";
public const string SmtpUseSsl = "SMTP_USE_SSL";
public const string SmtpFromEmail = "SMTP_FROM_EMAIL";
public const string SmtpFromName = "SMTP_FROM_NAME";
public const string SeaweedFsServiceUrl = "SEAWEEDFS_SERVICE_URL";
public const string SeaweedFsAccessKeyId = "SEAWEEDFS_ACCESS_KEY_ID";
public const string SeaweedFsSecretAccessKey = "SEAWEEDFS_SECRET_ACCESS_KEY";
public const string SeaweedFsBucket = "SEAWEEDFS_BUCKET";
public const string DbServer = "DB_SERVER";
public const string DbUser = "DB_USER";
public const string DbPassword = "DB_PASSWORD";
public const string DbName = "DB_NAME";
public const string DbConnectionString = "DB_CONNECTION_STRING";
public const string DbTrustServerCertificate = "DB_TRUST_SERVER_CERTIFICATE";
public const string ClearDatabase = "CLEAR_DATABASE";
}