From 61bb5acdffd2dcf3f90386129a46d8282df0713e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 30 Jan 2025 12:10:30 +0100 Subject: [PATCH] refactor(ProxyController): Updated to add default headers --- .../Configs/OriginServerParams.cs | 2 +- .../Controllers/ProxyController.cs | 13 +++++++++---- src/DigitalData.Swagger.Proxy/appsettings.json | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs b/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs index 7851bdc..9c3546e 100644 --- a/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs +++ b/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs @@ -4,6 +4,6 @@ { public required string Url { get; init; } - public Dictionary? DefaultHeaders { get; init; } + public Dictionary DefaultHeaders { get; init; } = new(); } } \ No newline at end of file diff --git a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs index c78d96d..2c68ca8 100644 --- a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs +++ b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs @@ -11,12 +11,12 @@ using System.Threading.Tasks; [ApiController] public class ProxyController(IOptions originServerParamsOptions) : ControllerBase { - private readonly OriginServerParams origin = originServerParamsOptions.Value; + private readonly OriginServerParams _origin = originServerParamsOptions.Value; [HttpPost("{servicetierName}/ODataV4/{webserviceName}_CreateInvoice")] public async Task Redir([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company) { - var res = await origin.Url + var res = await _origin.Url .AppendPathSegment(servicetierName) .AppendPathSegment("ODataV4") .AppendPathSegment(webserviceName + "_CreateInvoice") @@ -24,9 +24,14 @@ public class ProxyController(IOptions originServerParamsOpti //.WithOAuthBearerToken("my_oauth_token") .PostAsync(); + //merge with default headers + var mergedDictionary = _origin.DefaultHeaders + .Concat(res.Headers.ToDictionary(kv => kv.Name, kv => kv.Value)) + .ToDictionary(kv => kv.Key, kv => kv.Value); + // set headers - foreach (var (Name, Value) in res.Headers) - HttpContext.Response.Headers[Name] = Value; + foreach (var header in mergedDictionary) + HttpContext.Response.Headers[header.Key] = header.Value; // set cookies foreach (var (Name, Value) in res.Cookies.ToKeyValuePairs()) diff --git a/src/DigitalData.Swagger.Proxy/appsettings.json b/src/DigitalData.Swagger.Proxy/appsettings.json index b9d7a31..6dd8d2c 100644 --- a/src/DigitalData.Swagger.Proxy/appsettings.json +++ b/src/DigitalData.Swagger.Proxy/appsettings.json @@ -9,7 +9,7 @@ "OriginServer": { "Url": "https://localhost:7248", "DefaultHeaders": { - + "foo": "bar" } } }