public static RunResult Run(string[] args) { var result = new RunResult(); var options = Parser.ParseArgs(args); HttpWebResponse response = null; var client = new Client(); try { response = client.GetResponse(options); if (options.CheckStatus) { result.ExitCode = GetExitStatus(response.StatusCode, options.AllowRedirects); } if (options.IsVerbose) { result.OutputMessage = Output.Write(options, client.Request, client.RequestBody); } var receivedStream = response.GetResponseStream(); if (receivedStream != null && receivedStream.CanRead) { var encode = Encoding.GetEncoding(!string.IsNullOrEmpty(response.ContentEncoding) ? response.ContentEncoding : "utf-8"); var readStream = new StreamReader(receivedStream, encode); result.ResponseBody = readStream.ReadToEnd(); readStream.Close(); } result.ResponseCode = (int)response.StatusCode; } catch (WebException web) { if (web.Response != null) { response = (HttpWebResponse)web.Response; result.ResponseCode = (int)response.StatusCode; result.ExitCode = GetExitStatus(response.StatusCode, options.AllowRedirects); result.ErrorMessage = web.Message; } else { result.ExitCode = Consts.EXIT.ERROR; result.ErrorMessage = web.Status + " " + web.Message; } } catch (Exception ex) { result.ExitCode = Consts.EXIT.ERROR; result.ErrorMessage = ex.Message; } result.OutputMessage += Output.Write(options, result, response); if (response != null) { response.Close(); } return(result); }
internal static string Write(Options options, RunResult result, HttpWebResponse response) { var output = new StringBuilder(); var oldColor = Console.ForegroundColor; if (result.ResponseCode != 0 && response == null) { Console.ForegroundColor = ConsoleColor.Red; var line = string.Format("ERROR {0} {1} ", options.Item.Url, result.ResponseCode ); output.Append(line); Console.Write(line); } if (response != null) { Console.ForegroundColor = ConsoleColor.Yellow; var line = string.Format("{0}/{1} {2} ", (response.ResponseUri.OriginalString.ToLower().Contains("https") ? Consts.HTTPS : Consts.HTTP), response.ProtocolVersion, result.ResponseCode ); Console.Write(line); output.Append(line); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(response.StatusDescription); output.Append(response.StatusDescription + Environment.NewLine); if (options.ShowHeaders) { foreach (string header in response.Headers) { output.Append(WriteColored(header, response.GetResponseHeader(header))); } } if (options.ShowBody) { if (response.ContentType == "application/json") { var obj = JObject.Parse(result.ResponseBody); output.Append(WriteJsonTree(obj, 1)); } else { Console.ForegroundColor = oldColor; output.Append(result.ResponseBody + Environment.NewLine); Console.WriteLine(result.ResponseBody); } } } Console.ForegroundColor = oldColor; return output.ToString(); }
internal static string Write(Options options, RunResult result, HttpWebResponse response) { var output = new StringBuilder(); var oldColor = Console.ForegroundColor; if (result.ResponseCode != 0 && response == null) { Console.ForegroundColor = ConsoleColor.Red; var line = string.Format("ERROR {0} {1} ", options.Item.Url, result.ResponseCode ); output.Append(line); Console.Write(line); } if (response != null) { Console.ForegroundColor = ConsoleColor.Yellow; var line = string.Format("{0}/{1} {2} ", (response.ResponseUri.OriginalString.ToLower().Contains("https") ? Consts.HTTPS : Consts.HTTP), response.ProtocolVersion, result.ResponseCode ); Console.Write(line); output.Append(line); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(response.StatusDescription); output.Append(response.StatusDescription + Environment.NewLine); if (options.ShowHeaders) { foreach (string header in response.Headers) { output.Append(WriteColored(header, response.GetResponseHeader(header))); } } if (options.ShowBody) { if (response.ContentType == "application/json") { var obj = JObject.Parse(result.ResponseBody); output.Append(WriteJsonTree(obj, 1)); } else { Console.ForegroundColor = oldColor; output.Append(result.ResponseBody + Environment.NewLine); Console.WriteLine(result.ResponseBody); } } } Console.ForegroundColor = oldColor; return(output.ToString()); }
public static RunResult Run(string[] args) { var result = new RunResult(); var options = Parser.ParseArgs(args); HttpWebResponse response = null; var client = new Client(); try { response = client.GetResponse(options); if (options.CheckStatus) { result.ExitCode = GetExitStatus(response.StatusCode, options.AllowRedirects); } if (options.IsVerbose) { result.OutputMessage = Output.Write(options, client.Request, client.RequestBody); } var receivedStream = response.GetResponseStream(); if (receivedStream != null && receivedStream.CanRead) { var encode = Encoding.GetEncoding(!string.IsNullOrEmpty(response.ContentEncoding) ? response.ContentEncoding : "utf-8"); var readStream = new StreamReader(receivedStream, encode); result.ResponseBody = readStream.ReadToEnd(); readStream.Close(); } result.ResponseCode = (int)response.StatusCode; } catch (WebException web) { if (web.Response != null) { response = (HttpWebResponse)web.Response; result.ResponseCode = (int)response.StatusCode; result.ExitCode = GetExitStatus(response.StatusCode, options.AllowRedirects); result.ErrorMessage = web.Message; } else { result.ExitCode = Consts.EXIT.ERROR; result.ErrorMessage = web.Status + " " + web.Message; } } catch (Exception ex) { result.ExitCode = Consts.EXIT.ERROR; result.ErrorMessage = ex.Message; } result.OutputMessage += Output.Write(options, result, response); if (response != null) response.Close(); return result; }