From 54eca6fcebf1c2bb30ae7136dd511af9ad6ad97c Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 30 Jan 2025 10:20:00 +0100 Subject: [PATCH] =?UTF-8?q?feat(ProxyController):=20Umleitungsendpunkt=20f?= =?UTF-8?q?=C3=BCr=20Post-Requests=20mit=20dem=20Muster=20=E2=80=9E{Servic?= =?UTF-8?q?etierName}/ODataV4/{WebserviceName}=5FCreateInvoice=E2=80=9C=20?= =?UTF-8?q?implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProxyController.cs | 38 +++++++++++++++++++ .../DigitalData.Swagger.Proxy.csproj | 3 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs diff --git a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs new file mode 100644 index 0000000..bf0a3ff --- /dev/null +++ b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs @@ -0,0 +1,38 @@ +namespace DigitalData.Swagger.Proxy.Controllers; + +using DigitalData.Swagger.Proxy.Configs; +using Flurl; +using Flurl.Http; +using Flurl.Util; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using System.Threading.Tasks; + +[ApiController] +public class ProxyController(IOptions originServerParamsOptions) : ControllerBase +{ + 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 + .AppendPathSegment(servicetierName) + .AppendPathSegment("ODataV4") + .AppendPathSegment(webserviceName) + .AppendPathSegment("_CreateInvoice") + .SetQueryParams(new { company }) + //.WithOAuthBearerToken("my_oauth_token") + .PostAsync(); + + // set headers + foreach (var (Name, Value) in res.Headers) + HttpContext.Response.Headers[Name] = Value; + + // set cookies + foreach (var (Name, Value) in res.Cookies.ToKeyValuePairs()) + HttpContext.Response.Cookies.Append(Name, Value.ToString() ?? string.Empty); + + return StatusCode(res.StatusCode, res); + } +} \ No newline at end of file diff --git a/src/DigitalData.Swagger.Proxy/DigitalData.Swagger.Proxy.csproj b/src/DigitalData.Swagger.Proxy/DigitalData.Swagger.Proxy.csproj index 9daa180..070465e 100644 --- a/src/DigitalData.Swagger.Proxy/DigitalData.Swagger.Proxy.csproj +++ b/src/DigitalData.Swagger.Proxy/DigitalData.Swagger.Proxy.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -7,6 +7,7 @@ +