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}");
        }
Exemple #2
0
        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);
        }