From dee2489025bd599b2ff5050cb811fc13236254e1 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 23 Dec 2025 09:12:41 +0000 Subject: [PATCH] make api addresses configurable --- TransactionProcessing.MerchantPos/Program.cs | 44 +++++++++++++------ .../appsettings.staging.json | 7 ++- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/TransactionProcessing.MerchantPos/Program.cs b/TransactionProcessing.MerchantPos/Program.cs index ea17a6f..ad49f2e 100644 --- a/TransactionProcessing.MerchantPos/Program.cs +++ b/TransactionProcessing.MerchantPos/Program.cs @@ -85,19 +85,37 @@ builder.Services.AddScoped(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton>( - new Func(configSetting => - { - return configSetting switch - { - "SecurityService" => "https://localhost:5001", - "TransactionProcessorACL" => "http://localhost:5003", - "TransactionProcessorApi" => "http://localhost:5002", - "EstateReportingApi" => "http://localhost:5004", - "TestHost" => "http://localhost:9000", - _ => string.Empty, - }; - })); + //builder.Services.AddSingleton>( + // configSetting => + // { + // return configSetting switch + // { + // "SecurityService" => "https://localhost:5001", + // "TransactionProcessorACL" => "http://localhost:5003", + // "TransactionProcessorApi" => "http://localhost:5002", + // "TestHost" => "http://localhost:9000", + // _ => string.Empty, + // }; + // }); + + // Replace the existing AddSingleton>(...) registration with this: + builder.Services.AddSingleton>(sp => + { + // Resolve IConfiguration from the DI container + var config = sp.GetRequiredService().GetSection("ApiConfiguration"); + + // Return a small resolver that looks up keys in the ApiConfiguration section (case-insensitive) + return (string configSetting) => + { + if (string.IsNullOrWhiteSpace(configSetting)) + return string.Empty; + + // Section indexer is case-sensitive by default, so use GetChildren() to perform case-insensitive lookup + var child = config.GetChildren() + .FirstOrDefault(c => string.Equals(c.Key, configSetting, StringComparison.OrdinalIgnoreCase)); + return child?.Value ?? string.Empty; + }; + }); // Health checks builder.Services.AddHealthChecks(); diff --git a/TransactionProcessing.MerchantPos/appsettings.staging.json b/TransactionProcessing.MerchantPos/appsettings.staging.json index e0c3dfb..c1776e7 100644 --- a/TransactionProcessing.MerchantPos/appsettings.staging.json +++ b/TransactionProcessing.MerchantPos/appsettings.staging.json @@ -56,7 +56,12 @@ //} ] }, - + "ApiConfiguration": { + "SecurityService": "https://192.168.1.163:5001", + "TransactionProcessorACL": "http://192.168.1.163:5003", + "TransactionProcessorApi": "http://192.168.1.163:5002", + "TestHost": "http://192.168.1.163:9000" + }, "ConnectionStrings": { "MerchantDb": "Data Source=merchant.db" },