public RhetosProxyMiddleware(RequestDelegate next, ProxyOptions options) { if (next == null) { throw new ArgumentNullException(nameof(next)); } if (options == null) { throw new ArgumentNullException("ProxyOptions"); } _next = next; _options = options; if (string.IsNullOrEmpty(_options.Host)) { throw new ArgumentException("Options parameter must specify host.", "ProxyOptions"); } // Setting default Port and Scheme if not specified if (string.IsNullOrEmpty(_options.Port)) { if (string.Equals(_options.Scheme, "https", StringComparison.OrdinalIgnoreCase)) { _options.Port = "443"; } else { _options.Port = "80"; } } if (string.IsNullOrEmpty(_options.Scheme)) { _options.Scheme = "http"; } if (string.IsNullOrEmpty(_options.HostPathBase)) { _options.HostPathBase = ""; } _httpClient = new HttpClient(_options.BackChannelMessageHandler ?? new HttpClientHandler()); }
/// <summary> /// Sends request to remote server as specified in options /// </summary> /// <param name="app"></param> /// <param name="options">Options for setting port, host, and scheme</param> /// <returns></returns> public static IApplicationBuilder RunRhetosProxy(this IApplicationBuilder app, ProxyOptions options) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (options == null) { throw new ArgumentNullException("ProxyOptions"); } return(app.UseMiddleware <RhetosProxyMiddleware>(options)); }