Skip to content

Commit bb946a7

Browse files
Refactor Startup configuration: replace direct access to Configuration with GetConfigValue method for improved maintainability and error handling.
1 parent 92dd2ac commit bb946a7

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

src/XtremeIdiots.Portal.Web/Startup.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,32 +50,32 @@ public void ConfigureServices(IServiceCollection services)
5050

5151
services.AddInvisionApiClient(options =>
5252
{
53-
options.BaseUrl = Configuration["XtremeIdiots:Forums:BaseUrl"] ?? throw new InvalidOperationException("XtremeIdiots:Forums:BaseUrl configuration is required");
54-
options.ApiKey = Configuration["XtremeIdiots:Forums:ApiKey"] ?? throw new InvalidOperationException("XtremeIdiots:Forums:ApiKey configuration is required");
53+
options.BaseUrl = GetConfigValue("XtremeIdiots:Forums:BaseUrl", "XtremeIdiots:Forums:BaseUrl configuration is required");
54+
options.ApiKey = GetConfigValue("XtremeIdiots:Forums:ApiKey", "XtremeIdiots:Forums:ApiKey configuration is required");
5555
});
5656

5757
services.AddAdminActionTopics();
5858
services.AddScoped<IDemoManager, DemoManager>();
5959

6060
services.AddRepositoryApiClient(options => options
61-
.WithBaseUrl(Configuration["RepositoryApi:BaseUrl"] ?? throw new InvalidOperationException("RepositoryApi:BaseUrl configuration is required"))
62-
.WithEntraIdAuthentication(Configuration["RepositoryApi:ApplicationAudience"] ?? throw new InvalidOperationException("RepositoryApi:ApplicationAudience configuration is required")));
61+
.WithBaseUrl(GetConfigValue("RepositoryApi:BaseUrl", "RepositoryApi:BaseUrl configuration is required"))
62+
.WithEntraIdAuthentication(GetConfigValue("RepositoryApi:ApplicationAudience", "RepositoryApi:ApplicationAudience configuration is required")));
6363

6464
services.AddServersApiClient(options => options
65-
.WithBaseUrl(Configuration["ServersIntegrationApi:BaseUrl"] ?? throw new InvalidOperationException("ServersIntegrationApi:BaseUrl configuration is required"))
66-
.WithEntraIdAuthentication(Configuration["ServersIntegrationApi:ApplicationAudience"] ?? throw new InvalidOperationException("ServersIntegrationApi:ApplicationAudience configuration is required")));
65+
.WithBaseUrl(GetConfigValue("ServersIntegrationApi:BaseUrl", "ServersIntegrationApi:BaseUrl configuration is required"))
66+
.WithEntraIdAuthentication(GetConfigValue("ServersIntegrationApi:ApplicationAudience", "ServersIntegrationApi:ApplicationAudience configuration is required")));
6767

6868
services.AddGeoLocationApiClient(options => options
69-
.WithBaseUrl(Configuration["GeoLocationApi:BaseUrl"] ?? throw new InvalidOperationException("GeoLocationApi:BaseUrl configuration is required"))
70-
.WithApiKeyAuthentication(Configuration["GeoLocationApi:ApiKey"] ?? throw new InvalidOperationException("GeoLocationApi:ApiKey configuration is required"))
71-
.WithEntraIdAuthentication(Configuration["GeoLocationApi:ApplicationAudience"] ?? throw new InvalidOperationException("GeoLocationApi:ApplicationAudience configuration is required")));
69+
.WithBaseUrl(GetConfigValue("GeoLocationApi:BaseUrl", "GeoLocationApi:BaseUrl configuration is required"))
70+
.WithApiKeyAuthentication(GetConfigValue("GeoLocationApi:ApiKey", "GeoLocationApi:ApiKey configuration is required"))
71+
.WithEntraIdAuthentication(GetConfigValue("GeoLocationApi:ApplicationAudience", "GeoLocationApi:ApplicationAudience configuration is required")));
7272

7373
services.AddXtremeIdiotsAuth();
7474
services.AddAuthorization(options => options.AddXtremeIdiotsPolicies());
7575

7676
services.AddCors(options =>
7777
{
78-
var corsOrigin = Configuration["XtremeIdiots:Forums:BaseUrl"] ?? throw new InvalidOperationException("XtremeIdiots:Forums:BaseUrl configuration is required");
78+
var corsOrigin = GetConfigValue("XtremeIdiots:Forums:BaseUrl", "XtremeIdiots:Forums:BaseUrl configuration is required");
7979
options.AddPolicy("CorsPolicy",
8080
builder => builder
8181
.WithOrigins(corsOrigin)
@@ -149,4 +149,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
149149
var identityDataContext = scope.ServiceProvider.GetRequiredService<IdentityDataContext>();
150150
identityDataContext.Database.Migrate();
151151
}
152+
153+
private string GetConfigValue(string key, string missingMessage)
154+
{
155+
return Configuration[key]
156+
?? Configuration[$"XtremeIdiots.Portal.Web:{key}"]
157+
?? throw new InvalidOperationException(missingMessage);
158+
}
152159
}

0 commit comments

Comments
 (0)