public static Warning Parse(string value) { value = value.Trim(); switch (value) { case "110 Response is stale": return(new Warning() { Code = 110, Text = "Response is stale" }); case "111 Revalidation failed": return(new Warning() { Code = 111, Text = "Revalidation failed" }); case "112 Disconnected operation": return(new Warning() { Code = 112, Text = "Disconnected operation" }); case "113 Heuristic expiration": return(new Warning() { Code = 113, Text = "Heuristic expiration" }); } var w = new Warning(); int space = value.IndexOf(' '); w.Code = int.Parse(value.Substring(0, space), CultureInfo.InvariantCulture); value = value.Substring(space + 1).Trim(); space = value.IndexOf(' '); w.Agent = Host.Parse(value.Substring(0, space)); value = value.Substring(space + 1).Trim(); w.Text = value; return(w); }
public static Via Parse(string value) { var via = new Via(); var open = value.IndexOf('('); if (open != -1) { var comment = value.Substring(open + 1); comment = comment.Substring(0, comment.LastIndexOf(')')).Trim(); via.Comment = comment; value = value.Substring(0, open); } value = value.Trim(); var parts = value.Split(); var slash = parts[0].IndexOf('/'); if (slash != -1) { via.ProtocolName = parts[0].Substring(0, slash); via.ProtocolVersion = parts[0].Substring(slash + 1); } else { via.ProtocolVersion = parts[0]; } if (parts.Length == 1 || parts.Length > 2) { throw new FormatException(value); } via.ReceivedBy = Host.Parse(parts[1]); return(via); }