Pull Request 33523 suggestions
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
This commit is contained in:
133
FabApprovalWorkerService/Models/AppSettings.cs
Normal file
133
FabApprovalWorkerService/Models/AppSettings.cs
Normal file
@ -0,0 +1,133 @@
|
||||
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 {
|
||||
}
|
Reference in New Issue
Block a user