Pull Request 33520 suggestions Injected AppSettings instead of using GetEnvironmentVariable at Services level When debugging only app.Services.GetRequiredService<IPCRBService>(); Get ready to use VSCode IDE Align .editorconfig files
133 lines
8.8 KiB
C#
133 lines
8.8 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace FabApprovalWorkerService.Models;
|
|
|
|
public record AppSettings(string AsmHtrTrainingGroupName,
|
|
string CleansTrainingGroupName,
|
|
string EpiProTrainingGroupName,
|
|
string BaseUrl,
|
|
string Company,
|
|
string DbConnectionString,
|
|
string EnvironmentName,
|
|
bool ShouldSendEmail,
|
|
string WorkerServiceMonInResource,
|
|
string FqaTrainingGroupName,
|
|
string MonInSite,
|
|
string NewBaseUrl,
|
|
string OldBaseUrl,
|
|
string PackagingAndLabelingTrainingGroupName,
|
|
string SiProductionTrainingGroupName,
|
|
string UserCertificationRecordsFilePath,
|
|
string WorkingDirectoryName) {
|
|
|
|
public override string ToString() {
|
|
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
|
|
return result;
|
|
}
|
|
|
|
public static AppSettings Get(IConfigurationRoot configurationRoot) {
|
|
AppSettings? result;
|
|
try {
|
|
#pragma warning disable IL3050, IL2026
|
|
result = configurationRoot.Get<AppSettings>() ?? throw new Exception();
|
|
#pragma warning restore IL3050, IL2026
|
|
} catch (Exception) {
|
|
List<string> paths = [];
|
|
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) {
|
|
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
|
continue;
|
|
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
|
continue;
|
|
paths.Add(physicalFileProvider.Root);
|
|
}
|
|
|
|
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
internal static void SetEnvironmentVariables(HostApplicationBuilder builder) {
|
|
builder.Configuration.AddUserSecrets<Program>();
|
|
AppSettings appSettings = Get(builder.Configuration);
|
|
Environment.SetEnvironmentVariable("AsmHtrTrainingGroupName", appSettings.AsmHtrTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("CleansTrainingGroupName", appSettings.CleansTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("EpiProTrainingGroupName", appSettings.EpiProTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("FabApprovalBaseUrl", appSettings.BaseUrl);
|
|
Environment.SetEnvironmentVariable("FabApprovalDbConnectionString", appSettings.DbConnectionString);
|
|
Environment.SetEnvironmentVariable("FabApprovalEnvironmentName", appSettings.EnvironmentName);
|
|
Environment.SetEnvironmentVariable("FabApprovalShouldSendEmail", appSettings.ShouldSendEmail.ToString());
|
|
Environment.SetEnvironmentVariable("FabApprovalWorkerServiceMonInResource", appSettings.WorkerServiceMonInResource);
|
|
Environment.SetEnvironmentVariable("FqaTrainingGroupName", appSettings.FqaTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("MonInSite", appSettings.MonInSite);
|
|
Environment.SetEnvironmentVariable("NewFabApprovalBaseUrl", appSettings.NewBaseUrl);
|
|
Environment.SetEnvironmentVariable("OldFabApprovalUrl", appSettings.OldBaseUrl);
|
|
Environment.SetEnvironmentVariable("PackagingAndLabelingTrainingGroupName", appSettings.PackagingAndLabelingTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("SiProductionTrainingGroupName", appSettings.SiProductionTrainingGroupName);
|
|
Environment.SetEnvironmentVariable("UserCertificationRecordsFilePath", appSettings.UserCertificationRecordsFilePath);
|
|
}
|
|
|
|
internal static AppSettings LoadEnvironmentVariables() {
|
|
AppSettings result;
|
|
try {
|
|
string asmHtrTrainingGroupName = Environment.GetEnvironmentVariable("AsmHtrTrainingGroupName") ??
|
|
throw new ArgumentNullException("AsmHtrTrainingGroupName environment variable not found");
|
|
string cleansTrainingGroupName = Environment.GetEnvironmentVariable("CleansTrainingGroupName") ??
|
|
throw new ArgumentNullException("CleansTrainingGroupName environment variable not found");
|
|
string epiProTrainingGroupName = Environment.GetEnvironmentVariable("EpiProTrainingGroupName") ??
|
|
throw new ArgumentNullException("EpiProTrainingGroupName environment variable not found");
|
|
string baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
|
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
|
string dbConnectionString = Environment.GetEnvironmentVariable("FabApprovalDbConnectionString") ??
|
|
throw new ArgumentNullException("FabApprovalDbConnectionString environment variable not found");
|
|
string environmentName = Environment.GetEnvironmentVariable("FabApprovalEnvironmentName") ??
|
|
throw new ArgumentNullException("FabApprovalEnvironmentName environment variable not found");
|
|
if (!bool.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out bool shouldSendEmail))
|
|
throw new ArgumentNullException("FabApprovalShouldSendEmail environment variable not found");
|
|
string workerServiceMonInResource = Environment.GetEnvironmentVariable("FabApprovalWorkerServiceMonInResource") ??
|
|
throw new ArgumentNullException("FabApprovalWorkerServiceMonInResource environment variable not found");
|
|
string fqaTrainingGroupName = Environment.GetEnvironmentVariable("FqaTrainingGroupName") ??
|
|
throw new ArgumentNullException("FqaTrainingGroupName environment variable not found");
|
|
string monInSite = Environment.GetEnvironmentVariable("MonInSite") ??
|
|
throw new ArgumentNullException("MonInSite environment variable not found");
|
|
string newBaseUrl = Environment.GetEnvironmentVariable("NewFabApprovalBaseUrl") ??
|
|
throw new ArgumentNullException("NewFabApprovalBaseUrl environment variable not found");
|
|
string oldBaseUrl = Environment.GetEnvironmentVariable("OldFabApprovalUrl") ??
|
|
throw new ArgumentNullException("OldFabApprovalUrl environment variable not found");
|
|
string packagingAndLabelingTrainingGroupName = Environment.GetEnvironmentVariable("PackagingAndLabelingTrainingGroupName") ??
|
|
throw new ArgumentNullException("PackagingAndLabelingTrainingGroupName environment variable not found");
|
|
string siProductionTrainingGroupName = Environment.GetEnvironmentVariable("SiProductionTrainingGroupName") ??
|
|
throw new ArgumentNullException("SiProductionTrainingGroupName environment variable not found");
|
|
string userCertificationRecordsFilePath = Environment.GetEnvironmentVariable("UserCertificationRecordsFilePath") ??
|
|
throw new ArgumentNullException("UserCertificationRecordsFilePath environment variable not found");
|
|
result = new(AsmHtrTrainingGroupName: asmHtrTrainingGroupName,
|
|
CleansTrainingGroupName: cleansTrainingGroupName,
|
|
EpiProTrainingGroupName: epiProTrainingGroupName,
|
|
BaseUrl: baseUrl,
|
|
Company: "Infineon Technologies Americas Corp.",
|
|
DbConnectionString: dbConnectionString,
|
|
EnvironmentName: environmentName,
|
|
ShouldSendEmail: shouldSendEmail,
|
|
WorkerServiceMonInResource: workerServiceMonInResource,
|
|
FqaTrainingGroupName: fqaTrainingGroupName,
|
|
MonInSite: monInSite,
|
|
NewBaseUrl: newBaseUrl,
|
|
OldBaseUrl: oldBaseUrl,
|
|
PackagingAndLabelingTrainingGroupName: packagingAndLabelingTrainingGroupName,
|
|
SiProductionTrainingGroupName: siProductionTrainingGroupName,
|
|
UserCertificationRecordsFilePath: userCertificationRecordsFilePath,
|
|
WorkingDirectoryName: "IFXApps");
|
|
} catch (Exception ex) {
|
|
NLog.LogManager.GetCurrentClassLogger().Error($"Unable to load environment variables, because {ex.Message}");
|
|
throw;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(AppSettings))]
|
|
internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext {
|
|
} |