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