private Response CreateResponse(HttpResponseInfo responseInfo)
        {
            Response response = new Response();
            string   body     = responseInfo.Body;

            if (responseInfo.ContentType != null && responseInfo.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase))
            {
                response = Response.FromJson(body);
            }
            else
            {
                response.Value = body;
            }

            if (this.CommandInfoRepository.SpecificationLevel < 1 && (responseInfo.StatusCode < HttpStatusCode.OK || responseInfo.StatusCode >= HttpStatusCode.BadRequest))
            {
                if (responseInfo.StatusCode >= HttpStatusCode.BadRequest && responseInfo.StatusCode < HttpStatusCode.InternalServerError)
                {
                    response.Status = WebDriverResult.UnhandledError;
                }
                else if (responseInfo.StatusCode >= HttpStatusCode.InternalServerError)
                {
                    if (responseInfo.StatusCode == HttpStatusCode.NotImplemented)
                    {
                        response.Status = WebDriverResult.UnknownCommand;
                    }
                    else if (response.Status == WebDriverResult.Success)
                    {
                        response.Status = WebDriverResult.UnhandledError;
                    }
                }
                else
                {
                    response.Status = WebDriverResult.UnhandledError;
                }
            }

            if (response.Value is string)
            {
                response.Value = ((string)response.Value).Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
            }

            return(response);
        }
Пример #2
0
        private Response CreateResponse(HttpResponseInfo responseInfo)
        {
            Response response = new Response();
            string   body     = responseInfo.Body;

            if (responseInfo.ContentType != null && responseInfo.ContentType.StartsWith(JsonMimeType, StringComparison.OrdinalIgnoreCase))
            {
                response = Response.FromJson(body);
            }
            else
            {
                response.Value = body;
            }

            if (response.Value is string)
            {
                response.Value = ((string)response.Value).Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
            }

            return(response);
        }
Пример #3
0
        private Response CreateResponse(WebRequest request)
        {
            Response        commandResponse = new Response();
            HttpWebResponse webResponse     = null;

            try
            {
                webResponse = request.GetResponse() as HttpWebResponse;
            }
            catch (WebException ex)
            {
                webResponse = ex.Response as HttpWebResponse;
                if (ex.Status == WebExceptionStatus.Timeout)
                {
                    string timeoutMessage = "The HTTP request to the remote WebDriver server for URL {0} timed out after {1} seconds.";
                    throw new WebDriverException(string.Format(CultureInfo.InvariantCulture, timeoutMessage, request.RequestUri.AbsoluteUri, this.serverResponseTimeout.TotalSeconds), ex);
                }
                else if (ex.Response == null)
                {
                    string nullResponseMessage = "A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL {0}. The status of the exception was {1}, and the message was: {2}";
                    throw new WebDriverException(string.Format(CultureInfo.InvariantCulture, nullResponseMessage, request.RequestUri.AbsoluteUri, ex.Status, ex.Message), ex);
                }
            }

            if (webResponse == null)
            {
                throw new WebDriverException("No response from server for url " + request.RequestUri.AbsoluteUri);
            }
            else
            {
                string responseString = GetTextOfWebResponse(webResponse);
                if (webResponse.ContentType != null && webResponse.ContentType.StartsWith(JsonMimeType, StringComparison.OrdinalIgnoreCase))
                {
                    commandResponse = Response.FromJson(responseString, this.commandInfoRepository.SpecificationLevel);
                }
                else
                {
                    commandResponse.Value = responseString;
                }

                if (this.commandInfoRepository.SpecificationLevel < 1 && (webResponse.StatusCode < HttpStatusCode.OK || webResponse.StatusCode >= HttpStatusCode.BadRequest))
                {
                    // 4xx represents an unknown command or a bad request.
                    if (webResponse.StatusCode >= HttpStatusCode.BadRequest && webResponse.StatusCode < HttpStatusCode.InternalServerError)
                    {
                        commandResponse.Status = WebDriverResult.UnhandledError;
                    }
                    else if (webResponse.StatusCode >= HttpStatusCode.InternalServerError)
                    {
                        // 5xx represents an internal server error. The response status should already be set, but
                        // if not, set it to a general error code. The exception is a 501 (NotImplemented) response,
                        // which indicates that the command hasn't been implemented on the server.
                        if (webResponse.StatusCode == HttpStatusCode.NotImplemented)
                        {
                            commandResponse.Status = WebDriverResult.UnknownCommand;
                        }
                        else
                        {
                            if (commandResponse.Status == WebDriverResult.Success)
                            {
                                commandResponse.Status = WebDriverResult.UnhandledError;
                            }
                        }
                    }
                    else
                    {
                        commandResponse.Status = WebDriverResult.UnhandledError;
                    }
                }

                if (commandResponse.Value is string)
                {
                    // First, collapse all \r\n pairs to \n, then replace all \n with
                    // System.Environment.NewLine. This ensures the consistency of
                    // the values.
                    commandResponse.Value = ((string)commandResponse.Value).Replace("\r\n", "\n").Replace("\n", System.Environment.NewLine);
                }

                webResponse.Close();
            }

            return(commandResponse);
        }
        private Response CreateResponse(WebRequest request)
        {
            Response        response        = new Response();
            HttpWebResponse httpWebResponse = null;

            try
            {
                httpWebResponse = (request.GetResponse() as HttpWebResponse);
            }
            catch (WebException ex)
            {
                httpWebResponse = (ex.Response as HttpWebResponse);
                if (ex.Status == WebExceptionStatus.Timeout)
                {
                    string format = "The HTTP request to the remote WebDriver server for URL {0} timed out after {1} seconds.";
                    throw new WebDriverException(string.Format(CultureInfo.InvariantCulture, format, new object[]
                    {
                        request.RequestUri.AbsoluteUri,
                        this.serverResponseTimeout.TotalSeconds
                    }), ex);
                }
                if (ex.Response == null)
                {
                    string format2 = "A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL {0}. The status of the exception was {1}, and the message was: {2}";
                    throw new WebDriverException(string.Format(CultureInfo.InvariantCulture, format2, new object[]
                    {
                        request.RequestUri.AbsoluteUri,
                        ex.Status,
                        ex.Message
                    }), ex);
                }
            }
            if (httpWebResponse == null)
            {
                throw new WebDriverException("No response from server for url " + request.RequestUri.AbsoluteUri);
            }
            string textOfWebResponse = HttpCommandExecutor.GetTextOfWebResponse(httpWebResponse);

            if (httpWebResponse.ContentType != null && httpWebResponse.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase))
            {
                response = Response.FromJson(textOfWebResponse);
            }
            else
            {
                response.Value = textOfWebResponse;
            }
            if (this.commandInfoRepository.SpecificationLevel < 1 && (httpWebResponse.StatusCode < HttpStatusCode.OK || httpWebResponse.StatusCode >= HttpStatusCode.BadRequest))
            {
                if (httpWebResponse.StatusCode >= HttpStatusCode.BadRequest && httpWebResponse.StatusCode < HttpStatusCode.InternalServerError)
                {
                    response.Status = WebDriverResult.UnhandledError;
                }
                else if (httpWebResponse.StatusCode >= HttpStatusCode.InternalServerError)
                {
                    if (httpWebResponse.StatusCode == HttpStatusCode.NotImplemented)
                    {
                        response.Status = WebDriverResult.UnknownCommand;
                    }
                    else if (response.Status == WebDriverResult.Success)
                    {
                        response.Status = WebDriverResult.UnhandledError;
                    }
                }
                else
                {
                    response.Status = WebDriverResult.UnhandledError;
                }
            }
            if (response.Value is string)
            {
                response.Value = ((string)response.Value).Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
            }
            httpWebResponse.Close();
            return(response);
        }
Пример #5
0
        private static Response CreateResponse(WebRequest request)
        {
            Response commandResponse = new Response();

            HttpWebResponse webResponse = null;

            try
            {
                webResponse = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                webResponse = (HttpWebResponse)ex.Response;
            }

            if (webResponse == null)
            {
                throw new WebDriverException("No response from server for url " + request.RequestUri.AbsoluteUri);
            }
            else
            {
                string responseString = GetTextOfWebResponse(webResponse);

                if (webResponse.ContentType != null && webResponse.ContentType.StartsWith(JsonMimeType, StringComparison.OrdinalIgnoreCase))
                {
                    commandResponse = Response.FromJson(responseString);
                }
                else
                {
                    commandResponse.Value = responseString;
                }

                if (webResponse.StatusCode < HttpStatusCode.OK || webResponse.StatusCode >= HttpStatusCode.BadRequest)
                {
                    // 4xx represents an unknown command or a bad request.
                    if (webResponse.StatusCode >= HttpStatusCode.BadRequest && webResponse.StatusCode < HttpStatusCode.InternalServerError)
                    {
                        commandResponse.Status = WebDriverResult.UnknownCommand;
                    }
                    else if (webResponse.StatusCode >= HttpStatusCode.InternalServerError)
                    {
                        // 5xx represents an internal server error. The response status should already be set, but
                        // if not, set it to a general error code.
                        if (commandResponse.Status == WebDriverResult.Success)
                        {
                            commandResponse.Status = WebDriverResult.UnhandledError;
                        }
                    }
                    else
                    {
                        commandResponse.Status = WebDriverResult.UnhandledError;
                    }
                }

                if (commandResponse.Value is string)
                {
                    // First, collapse all \r\n pairs to \n, then replace all \n with
                    // System.Environment.NewLine. This ensures the consistency of
                    // the values.
                    commandResponse.Value = ((string)commandResponse.Value).Replace("\r\n", "\n").Replace("\n", System.Environment.NewLine);
                }
            }

            return(commandResponse);
        }
Пример #6
0
 /// <summary>
 /// Returns a new <see cref="Response"/> from a JSON-encoded string.
 /// </summary>
 /// <param name="value">The JSON string to deserialize into a <see cref="Response"/>.</param>
 /// <returns>A <see cref="Response"/> object described by the JSON string.</returns>
 public static Response FromJson(string value)
 {
     return(Response.FromJson(value, 0));
 }