public async Task ProxyRequest(HttpContext context, IWMSRule matchedRule) { var uri = _contextHandler.GetRequestUri(context.Request); var proxyRequest = _wmsProxyRequestHandler.GetProxyRequest(context, matchedRule, uri); try { await _wmsProxy.ProxyTheRequest(context, proxyRequest, matchedRule); } catch (HttpRequestException ex) { context.Response.StatusCode = StatusCodes.Status503ServiceUnavailable; } _logger.LogDebug($@"Original Url: {proxyRequest.RequestUri.AbsoluteUri}, Proxied Url: {uri}, StatusCode: {context.Response.StatusCode}"); }
public async Task InvokeAsync(HttpContext context) { var uri = _contextHandler.GetRequestUri(context.Request); var matchedRule = _wmsProxyOptions.ProxyRules.FirstOrDefault(r => r.Matcher(uri)); if (matchedRule == null) { await _next(context); return; } if (matchedRule.RequiresAuthentication && !_contextHandler.UserIsAuthenticated(context.User)) { context.Response.StatusCode = StatusCodes.Status401Unauthorized; return; } await _wmsProxyManager.ProxyRequest(context, matchedRule); }