/// <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)); }
/// <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));
/// <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)); }
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)); }
/// <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)); }