Ejemplo n.º 1
0
        /// <summary>
        ///     Forward the request to the specified upstream host.
        /// </summary>
        /// <param name="context">The HttpContext</param>
        /// <param name="upstreamHost">The upstream host to forward the request
        /// to.</param>
        /// <returns>A <see cref="ForwardContext"/> that represents the
        /// forwarding request context.</returns>
        public static ForwardContext ForwardTo(this HttpContext context, UpstreamHost upstreamHost)
        {
            var upstreamUri = upstreamHost
                              .BuildUpstreamUri(context.Request.Path, context.Request.QueryString);

            return(ForwardTo(context, upstreamUri));
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Forward the request to the specified upstream host.
        /// </summary>
        /// <param name="context">The HttpContext</param>
        /// <param name="upstreamHost">The upstream host to forward the requests
        /// to.</param>
        /// <returns>A <see cref="ForwardContext"/> that represents the
        /// forwarding request context.</returns>
        public static ForwardContext ForwardTo(this HttpContext context, UpstreamHost upstreamHost)
        {
            var uri = new Uri(UriHelper.BuildAbsolute(
                                  upstreamHost.Scheme,
                                  upstreamHost.Host,
                                  upstreamHost.PathBase,
                                  context.Request.Path,
                                  context.Request.QueryString));

            var request = context.Request.CreateProxyHttpRequest();

            request.Headers.Host = uri.Authority;
            request.RequestUri   = uri;

            IHttpClientFactory httpClientFactory;

            try
            {
                httpClientFactory = context
                                    .RequestServices
                                    .GetRequiredService <IHttpClientFactory>();
            }
            catch (InvalidOperationException exception)
            {
                throw new InvalidOperationException(
                          $"{exception.Message} Did you forget to call services.AddProxy()?",
                          exception);
            }

            var httpClient = httpClientFactory.CreateClient(ServiceCollectionExtensions.ProxyKitHttpClientName);

            return(new ForwardContext(context, request, httpClient));
        }
 internal static Uri BuildUpstreamUri(this UpstreamHost upstreamHost, PathString path, QueryString queryString) =>
 new Uri(UriHelper.BuildAbsolute(
             upstreamHost.Scheme,
             upstreamHost.Host,
             upstreamHost.PathBase,
             path,
             queryString));
Ejemplo n.º 4
0
        /// <summary>
        ///     Forward the request to the specified upstream host.
        /// </summary>
        /// <param name="context">The HttpContext</param>
        /// <param name="upstreamHost">The upstream host to forward the requests
        /// to.</param>
        /// <returns>A <see cref="ForwardContext"/> that represents the
        /// forwarding request context.</returns>
        public static ForwardContext ForwardTo(this HttpContext context, UpstreamHost upstreamHost)
        {
            var uri = new Uri(UriHelper.BuildAbsolute(
                                  upstreamHost.Scheme,
                                  upstreamHost.Host,
                                  upstreamHost.PathBase,
                                  context.Request.Path,
                                  context.Request.QueryString));

            return(ForwardToUrl(context, uri));
        }
Ejemplo n.º 5
0
        public static ForwardContext ForwardTo(this HttpContext conext, UpstreamHost upstreamHost)
        {
            var uri = new Uri(UriHelper.BuildAbsolute(
                                  upstreamHost.Scheme,
                                  upstreamHost.Host,
                                  upstreamHost.PathBase,
                                  conext.Request.Path,
                                  conext.Request.QueryString));

            var request = conext.Request.CreateProxyHttpRequest();

            request.Headers.Host = uri.Authority;
            request.RequestUri   = uri;

            var proxyKitClient = conext
                                 .RequestServices
                                 .GetRequiredService <ProxyKitClient>();

            return(new ForwardContext(conext, request, proxyKitClient.Client));
        }
Ejemplo n.º 6
0
        /// <summary>
        ///     Forward the request to the specified upstream host.
        /// </summary>
        /// <param name="context">The HttpContext</param>
        /// <param name="upstreamHost">The upstream host to forward the requests
        /// to.</param>
        /// <returns>A <see cref="ForwardContext"/> that represents the
        /// forwarding request context.</returns>
        public static ForwardContext ForwardTo(this HttpContext context, UpstreamHost upstreamHost)
        {
            var uri = new Uri(UriHelper.BuildAbsolute(
                                  upstreamHost.Scheme,
                                  upstreamHost.Host,
                                  upstreamHost.PathBase,
                                  context.Request.Path,
                                  context.Request.QueryString));

            var request = context.Request.CreateProxyHttpRequest();

            request.Headers.Host = uri.Authority;
            request.RequestUri   = uri;

            var httpClientFactory = context
                                    .RequestServices
                                    .GetRequiredService <IHttpClientFactory>();

            var httpClient = httpClientFactory.CreateClient(ServiceCollectionExtensions.ProxyKitHttpClientName);

            return(new ForwardContext(context, request, httpClient));
        }