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 @@ +