From 451e02986988dfc7dfbed2b3a5c1e80bdfc4160e Mon Sep 17 00:00:00 2001 From: Loretta Date: Tue, 14 Jul 2026 07:47:07 +0200 Subject: [PATCH] Centralize BaseUrl logic via AcEnv; enforce fail-fast Refactored BaseUrl handling so FruitBankConstClient delegates all access to AcEnv.BaseUrl in AyCode.Core, ensuring a single source of truth and fail-fast validation. Removed redundant _baseUrl field and logic from FruitBankConstClient. Updated startup files to hydrate BaseUrl from configuration and improved comments to clarify the new delegation and configuration conventions. --- FruitBank.Common/FruitBankConstClient.cs | 17 ++++++----------- FruitBankHybrid.Web.Client/Program.cs | 4 ++-- FruitBankHybrid.Web/Program.cs | 3 ++- FruitBankHybrid/MauiProgram.cs | 3 ++- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/FruitBank.Common/FruitBankConstClient.cs b/FruitBank.Common/FruitBankConstClient.cs index e22c2f15..f02fdf00 100644 --- a/FruitBank.Common/FruitBankConstClient.cs +++ b/FruitBank.Common/FruitBankConstClient.cs @@ -7,19 +7,14 @@ public static class FruitBankConstClient { public static string DefaultLocale = "en-US"; - // A nop szerver base URL-je. Induláskor a host tölti fel az appsettings "AyCode:Urls:BaseUrl"-ből - // (ld. Program.cs / MauiProgram.cs). Az fbHub ÉS a loggerHub is EBBŐL az egy értékből származik (+/fbHub, +/loggerHub). - // Default: null — ha nincs beállítva, az OLVASÁS exception-t dob, nem megy tovább csendben hiányzó/rossz URL-lel. - // A környezet-váltás az appsettings-ben történik: - // dev: https://localhost:59579 | prod: https://shop.fruitbank.hu | test: https://fruitbank.mangoweb.hu | android: http://10.0.2.2:59579 - private static string? _baseUrl; + // DELEGÁT az AcEnv.BaseUrl-re (AyCode.Core framework, 2026-07): az érték EGY helyen, a kereten él + // (fail-fast: hidratálatlan olvasás exception). A hostok induláskor hidratálják az appsettings + // "AyCode:Urls:BaseUrl"-ből; az fbHub és a loggerHub URL-je is ebből származik (+/fbHub, +/loggerHub). + // Környezet-értékek: dev https://localhost:59579 | prod https://shop.fruitbank.hu | test https://fruitbank.mangoweb.hu | android http://10.0.2.2:59579 public static string BaseUrl { - get => !string.IsNullOrWhiteSpace(_baseUrl) - ? _baseUrl - : throw new InvalidOperationException("FruitBankConstClient.BaseUrl nincs beállítva — a host indulásakor hidratáld az appsettings 'AyCode:Urls:BaseUrl' értékéből (Program.cs / MauiProgram.cs)."); - - set => _baseUrl = value; + get => AcEnv.BaseUrl; + set => AcEnv.BaseUrl = value; } // A szerver-környezet (PROD/DEV) — az érték KIZÁRÓLAG a szerver IsProdEnvironment() válaszából jöhet diff --git a/FruitBankHybrid.Web.Client/Program.cs b/FruitBankHybrid.Web.Client/Program.cs index 3a192601..1efc4a38 100644 --- a/FruitBankHybrid.Web.Client/Program.cs +++ b/FruitBankHybrid.Web.Client/Program.cs @@ -18,8 +18,8 @@ using Microsoft.Extensions.Options; var builder = WebAssemblyHostBuilder.CreateDefault(args); -// Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is az AyCode:Urls:BaseUrl-ből származik. -// A loggerHub writer a FruitBankConstClient.BaseUrl-t olvassa, ezért induláskor onnan hidratáljuk. +// Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is a BaseUrl-ből származik +// (a FruitBankConstClient.BaseUrl az AcEnv.BaseUrl keret-állapotra delegál — fail-fast). FruitBankConstClient.BaseUrl = builder.Configuration["AyCode:Urls:BaseUrl"] ?? throw new InvalidOperationException("Hiányzik az 'AyCode:Urls:BaseUrl' az appsettings-ből — a hub-ok URL-je ebből származik."); diff --git a/FruitBankHybrid.Web/Program.cs b/FruitBankHybrid.Web/Program.cs index b0d26ca2..0e3c3702 100644 --- a/FruitBankHybrid.Web/Program.cs +++ b/FruitBankHybrid.Web/Program.cs @@ -17,7 +17,8 @@ using Microsoft.Extensions.Options; var builder = WebApplication.CreateBuilder(args); -// Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is az AyCode:Urls:BaseUrl-ből származik. +// Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is a BaseUrl-ből származik +// (a FruitBankConstClient.BaseUrl az AcEnv.BaseUrl keret-állapotra delegál — fail-fast). FruitBankConstClient.BaseUrl = builder.Configuration["AyCode:Urls:BaseUrl"] ?? throw new InvalidOperationException("Hiányzik az 'AyCode:Urls:BaseUrl' az appsettings-ből — a hub-ok URL-je ebből származik."); diff --git a/FruitBankHybrid/MauiProgram.cs b/FruitBankHybrid/MauiProgram.cs index 9d15e19b..a9207cb7 100644 --- a/FruitBankHybrid/MauiProgram.cs +++ b/FruitBankHybrid/MauiProgram.cs @@ -47,7 +47,8 @@ namespace FruitBankHybrid } } - // Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is az AyCode:Urls:BaseUrl-ből származik. + // Hub-URL-ek EGY forrásból: az fbHub és a loggerHub is a BaseUrl-ből származik + // (a FruitBankConstClient.BaseUrl az AcEnv.BaseUrl keret-állapotra delegál — fail-fast). FruitBankConstClient.BaseUrl = builder.Configuration["AyCode:Urls:BaseUrl"] ?? throw new InvalidOperationException("Hiányzik az 'AyCode:Urls:BaseUrl' az appsettings-ből — a hub-ok URL-je ebből származik.");