Skip to content

Commit 9974bf5

Browse files
Merge pull request #295 from TransactionProcessing/task/#294_configurable_api_addresses
make api addresses configurable
2 parents 7754c6b + dee2489 commit 9974bf5

2 files changed

Lines changed: 37 additions & 14 deletions

File tree

TransactionProcessing.MerchantPos/Program.cs

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,37 @@
8585
builder.Services.AddScoped<MerchantRuntime>();
8686
builder.Services.AddSingleton<IMerchantRuntimeFactory, MerchantRuntimeFactory>();
8787
builder.Services.AddSingleton<MerchantMetrics>();
88-
builder.Services.AddSingleton<Func<String, String>>(
89-
new Func<String, String>(configSetting =>
90-
{
91-
return configSetting switch
92-
{
93-
"SecurityService" => "https://localhost:5001",
94-
"TransactionProcessorACL" => "http://localhost:5003",
95-
"TransactionProcessorApi" => "http://localhost:5002",
96-
"EstateReportingApi" => "http://localhost:5004",
97-
"TestHost" => "http://localhost:9000",
98-
_ => string.Empty,
99-
};
100-
}));
88+
//builder.Services.AddSingleton<Func<String, String>>(
89+
// configSetting =>
90+
// {
91+
// return configSetting switch
92+
// {
93+
// "SecurityService" => "https://localhost:5001",
94+
// "TransactionProcessorACL" => "http://localhost:5003",
95+
// "TransactionProcessorApi" => "http://localhost:5002",
96+
// "TestHost" => "http://localhost:9000",
97+
// _ => string.Empty,
98+
// };
99+
// });
100+
101+
// Replace the existing AddSingleton<Func<String, String>>(...) registration with this:
102+
builder.Services.AddSingleton<Func<string, string>>(sp =>
103+
{
104+
// Resolve IConfiguration from the DI container
105+
var config = sp.GetRequiredService<IConfiguration>().GetSection("ApiConfiguration");
106+
107+
// Return a small resolver that looks up keys in the ApiConfiguration section (case-insensitive)
108+
return (string configSetting) =>
109+
{
110+
if (string.IsNullOrWhiteSpace(configSetting))
111+
return string.Empty;
112+
113+
// Section indexer is case-sensitive by default, so use GetChildren() to perform case-insensitive lookup
114+
var child = config.GetChildren()
115+
.FirstOrDefault(c => string.Equals(c.Key, configSetting, StringComparison.OrdinalIgnoreCase));
116+
return child?.Value ?? string.Empty;
117+
};
118+
});
101119
// Health checks
102120
builder.Services.AddHealthChecks();
103121

TransactionProcessing.MerchantPos/appsettings.staging.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,12 @@
5656
//}
5757
]
5858
},
59-
59+
"ApiConfiguration": {
60+
"SecurityService": "https://192.168.1.163:5001",
61+
"TransactionProcessorACL": "http://192.168.1.163:5003",
62+
"TransactionProcessorApi": "http://192.168.1.163:5002",
63+
"TestHost": "http://192.168.1.163:9000"
64+
},
6065
"ConnectionStrings": {
6166
"MerchantDb": "Data Source=merchant.db"
6267
},

0 commit comments

Comments
 (0)