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