Skip to content

Commit 611c81b

Browse files
committed
Move ConfigurationFilepath constant to DirectoryStructureUtility
1 parent c72de3d commit 611c81b

File tree

3 files changed

+23
-13
lines changed

3 files changed

+23
-13
lines changed

RealTimeWeatherMonitoringApp/Infrastructure/Factory/ConfigurationFactory.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,28 @@ namespace RealTimeWeatherMonitoringApp.Infrastructure.Factory;
77

88
public class ConfigurationFactory : IConfigurationFactory
99
{
10-
private const string BotConfigurationFilePath = "Infrastructure/Configuration/configuration.json";
11-
1210
private static readonly Lazy<JsonSerializerOptions> JsonOptions = new(() => new JsonSerializerOptions
1311
{
1412
PropertyNameCaseInsensitive = true,
1513
Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) }
1614
});
1715

18-
private readonly Lazy<IEnumerable<BotConfiguration>> _botConfigurations = new(() =>
16+
private readonly Lazy<IEnumerable<BotConfiguration>> _botConfigurations;
17+
18+
public ConfigurationFactory(string configurationFilepath)
1919
{
20-
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
21-
var fullPath = Path.Combine(baseDirectory, BotConfigurationFilePath);
22-
var jsonText = File.ReadAllText(fullPath);
20+
_botConfigurations = new Lazy<IEnumerable<BotConfiguration>>(() =>
21+
{
22+
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
23+
var fullPath = Path.Combine(baseDirectory, configurationFilepath);
24+
var jsonText = File.ReadAllText(fullPath);
2325

24-
var botDict = JsonSerializer.Deserialize<Dictionary<string, BotConfiguration>>(jsonText, JsonOptions.Value);
25-
return botDict == null
26-
? Enumerable.Empty<BotConfiguration>()
27-
: botDict.Select(kvp => kvp.Value with { Name = kvp.Key });
28-
});
26+
var botDict = JsonSerializer.Deserialize<Dictionary<string, BotConfiguration>>(jsonText, JsonOptions.Value);
27+
return botDict == null
28+
? Enumerable.Empty<BotConfiguration>()
29+
: botDict.Select(kvp => kvp.Value with { Name = kvp.Key });
30+
});
31+
}
2932

3033
public IEnumerable<BotConfiguration> CreateBotConfigurations() => _botConfigurations.Value;
3134
}

RealTimeWeatherMonitoringApp/Presentation/Utility/DependencyInjector.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public static IServiceProvider CreateServiceProvider()
2929

3030
private static void InjectInfrastructure(IServiceCollection services)
3131
{
32-
services.AddSingleton<IConfigurationFactory, ConfigurationFactory>();
32+
services.AddSingleton<IConfigurationFactory, ConfigurationFactory>(_ =>
33+
new ConfigurationFactory(DirectoryStructureUtility.ConfigurationFilepath));
3334
services.AddSingleton<IEvaluatorFactory<WeatherData>, WeatherEvaluatorFactory>();
3435
services.AddSingleton<IBotFactory<WeatherData>, BotFactory<WeatherData>>();
3536
services.AddSingleton<IBotInitializer<WeatherData>, BotInitializer<WeatherData>>();
@@ -47,7 +48,8 @@ private static void InjectApplication(IServiceCollection services)
4748
services.AddSingleton<IAutoParsingService<WeatherData>>(_ =>
4849
{
4950
var service = new AutoParsingService<WeatherData>();
50-
foreach (var parserType in DirectoryStructureUtility.GetAllTypes(DirectoryStructureUtility.ParsersNamespace))
51+
foreach (var parserType in
52+
DirectoryStructureUtility.GetAllTypes(DirectoryStructureUtility.ParsersNamespace))
5153
{
5254
if (Activator.CreateInstance(parserType) is IParsingStrategy<WeatherData> parser)
5355
service.AddStrategy(parser);

RealTimeWeatherMonitoringApp/Presentation/Utility/DirectoryStructureUtility.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ public static class DirectoryStructureUtility
99
/// </summary>
1010
public const string ParsersNamespace = "RealTimeWeatherMonitoringApp.Infrastructure.Parsers";
1111

12+
/// <summary>
13+
/// Where configuration json file resides.
14+
/// </summary>
15+
public const string ConfigurationFilepath = "Infrastructure/Configuration/configuration.json";
16+
1217
/// <summary>
1318
/// Retrieves all types within a specified namespace.
1419
/// </summary>

0 commit comments

Comments
 (0)