From e78e921dd2551a76e5521d2e0a6d10ae7a2a73ba Mon Sep 17 00:00:00 2001 From: nns Date: Tue, 26 May 2026 11:27:16 +0500 Subject: [PATCH] =?UTF-8?q?chore(moysklad):=20=D0=B1=D0=B0=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D0=B9=20URL=20MoySklad=20=E2=80=94=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20(MoySklad:BaseUrl)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MoySkladClient.BaseUrl был константой api.moysklad.ru, из-за чего импорт нельзя было протестировать без боевого токена. Регистрация HttpClient теперь берёт BaseAddress из MoySklad:BaseUrl (дефолт — прежний боевой URL), так что e2e/интеграционные тесты наводят клиент на mock-сервер, не трогая прод. MoySkladClient не меняем — он уже делает BaseAddress ??= const. Co-Authored-By: Claude Opus 4.7 --- src/food-market.api/Program.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/food-market.api/Program.cs b/src/food-market.api/Program.cs index 7f6f297..acc33f8 100644 --- a/src/food-market.api/Program.cs +++ b/src/food-market.api/Program.cs @@ -157,7 +157,15 @@ builder.Services.AddSwaggerGen(); // MoySklad import integration. Auto-decompress gzip responses from MoySklad's edge. - builder.Services.AddHttpClient() + // BaseAddress берётся из конфигурации (MoySklad:BaseUrl) с дефолтом на боевой + // api.moysklad.ru — так интеграцию можно навести на mock-сервер в e2e/интеграционных + // тестах, не трогая прод. Трейлинг-слэш обязателен (RFC 3986 §5.3, см. MoySkladClient). + builder.Services.AddHttpClient(http => + { + var baseUrl = builder.Configuration["MoySklad:BaseUrl"]; + if (!string.IsNullOrWhiteSpace(baseUrl)) + http.BaseAddress = new Uri(baseUrl); + }) .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate,