public static object ProcessHostError(string errorMessage, XmlHttpRequest xmlHttpRequest)
 {
     var xmlHttpResponse = new XmlHttpResponse
                               {
                                   transactionId =
                                       xmlHttpRequest != null
                                           ? xmlHttpRequest.transactionId
                                           : null,
                                   status = 502,
                                   responseText = errorMessage
                               };
     xmlHttpResponse.headers.Add("content-type", "text/plain");
     return xmlHttpResponse;
 }
        private static XmlHttpResponse ProcessResponse(string transactionId, HttpWebRequest webRequest)
        {
            Debug.Assert(string.IsNullOrWhiteSpace(transactionId) == false && webRequest != null);
            HttpWebResponse webResponse;

            var stopWatch = new Stopwatch();
            stopWatch.Start();

            try
            {
                webResponse = (HttpWebResponse)webRequest.GetResponse();
            }
            catch (WebException webException)
            {
                webResponse = (HttpWebResponse)webException.Response;
            }

            stopWatch.Stop();
            Debug.WriteLine("webRequest only - elapsed Time: " + stopWatch.ElapsedMilliseconds + ", id: " + transactionId);

            var xmlHttpResponse = new XmlHttpResponse
                                      {
                                          transactionId = transactionId,
                                          status = (int)webResponse.StatusCode
                                      };

            foreach (var headerName in webResponse.Headers.AllKeys)
            {
                var lowerHeaderName = headerName.ToLowerInvariant();
                if (xmlHttpResponse.headers.ContainsKey(lowerHeaderName))
                {
                    xmlHttpResponse.headers[lowerHeaderName] = xmlHttpResponse.headers[lowerHeaderName] + ","
                                                          + webResponse.Headers[headerName];
                }
                else
                {
                    xmlHttpResponse.headers[lowerHeaderName] = webResponse.Headers[headerName];
                }
            }

            xmlHttpResponse.responseText = string.Empty;
            var readBuffer = new byte[102400];
            using (var memoryStream = new MemoryStream())
            {
                var responseStream = webResponse.GetResponseStream();

                if (responseStream != null)
                {
                    int bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count());

                    while (bytesRead > 0)
                    {
                        memoryStream.Write(readBuffer, 0, bytesRead);
                        bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count());
                    }

                    if (memoryStream.Length > 0)
                    {
                        xmlHttpResponse.responseText = Encoding.UTF8.GetString(memoryStream.ToArray());
                    }
                }
            }

            return xmlHttpResponse;
        }
 public static object ProcessHostError(string errorMessage, XmlHttpRequest xmlHttpRequest)
 {
     var xmlHttpResponse = new XmlHttpResponse
                               {
                                   transactionId =
                                       xmlHttpRequest != null
                                           ? xmlHttpRequest.transactionId
                                           : null,
                                   status = 502,
                                   responseText = errorMessage
                               };
     xmlHttpResponse.headers.Add("content-type", "text/plain");
     return xmlHttpResponse;
 }
        private static XmlHttpResponse ProcessResponse(string transactionId, HttpWebRequest webRequest)
        {
            Debug.Assert(string.IsNullOrWhiteSpace(transactionId) == false && webRequest != null);
            HttpWebResponse webResponse;

            var stopWatch = new Stopwatch();
            stopWatch.Start();

            try
            {
                webResponse = (HttpWebResponse)webRequest.GetResponse();
            }
            catch (WebException webException)
            {
                webResponse = (HttpWebResponse)webException.Response;
            }

            stopWatch.Stop();
            Debug.WriteLine("webRequest only - elapsed Time: " + stopWatch.ElapsedMilliseconds + ", id: " + transactionId);

            var xmlHttpResponse = new XmlHttpResponse
                                      {
                                          transactionId = transactionId,
                                          status = (int)webResponse.StatusCode
                                      };

            foreach (var headerName in webResponse.Headers.AllKeys)
            {
                var lowerHeaderName = headerName.ToLowerInvariant();
                if (xmlHttpResponse.headers.ContainsKey(lowerHeaderName))
                {
                    xmlHttpResponse.headers[lowerHeaderName] = xmlHttpResponse.headers[lowerHeaderName] + ","
                                                          + webResponse.Headers[headerName];
                }
                else
                {
                    xmlHttpResponse.headers[lowerHeaderName] = webResponse.Headers[headerName];
                }
            }

            xmlHttpResponse.responseText = string.Empty;
            var readBuffer = new byte[102400];
            using (var memoryStream = new MemoryStream())
            {
                var responseStream = webResponse.GetResponseStream();

                if (responseStream != null)
                {
                    int bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count());

                    while (bytesRead > 0)
                    {
                        memoryStream.Write(readBuffer, 0, bytesRead);
                        bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count());
                    }

                    if (memoryStream.Length > 0)
                    {
                        xmlHttpResponse.responseText = Encoding.UTF8.GetString(memoryStream.ToArray());
                    }
                }
            }

            return xmlHttpResponse;
        }