private static HttpRequestMessage CreateNewRequestToProxiedApi(HttpRequestMessage request, ApiHostForwardingSettings hostDetails, string apiToForwardToHostName) { var scheme = string.IsNullOrWhiteSpace(hostDetails.Scheme) ? request.RequestUri.Scheme : hostDetails.Scheme; var port = GetTargetPort(hostDetails, scheme); var builder = new UriBuilder(scheme, apiToForwardToHostName, port, request.RequestUri.PathAndQuery); return request.Clone(Uri.UnescapeDataString(builder.Uri.ToString())); }
private static int GetTargetPort(ApiHostForwardingSettings hostDetails, string scheme) { int port; if (hostDetails.Port == 0) { port = scheme == Uri.UriSchemeHttps ? 443 : 80; } else { port = hostDetails.Port; } return port; }