public static ContentRange Parse(string value) { if (!value.StartsWithInvariant("bytes ")) { throw new FormatException(); } value = value.Substring(6); var parts = value.Split('-', '/'); if (parts.Length <= 1 || parts.Length > 3) { throw new FormatException(value); } var r = new ContentRange(); if (parts.Length == 2) { if (parts[0] != "*") { throw new FormatException(parts[0]); } r.RangeIsStar = true; } else { r.FirstBytePosition = int.Parse(parts[0], CultureInfo.InvariantCulture); r.LastBytePosition = int.Parse(parts[1], CultureInfo.InvariantCulture); } if (parts.Last() == "*") { r.LengthIsStar = true; } else { r.Length = int.Parse(parts.Last(), CultureInfo.InvariantCulture); } return(r); }
public static ContentRange Parse(string value) { if (!value.StartsWithInvariant("bytes ")) { throw new FormatException(); } value = value.Substring(6); var parts = value.Split('-', '/'); if (parts.Length <= 1 || parts.Length > 3) { throw new FormatException(value); } var r = new ContentRange(); if (parts.Length == 2) { if (parts[0] != "*") { throw new FormatException(parts[0]); } r.RangeIsStar = true; } else { r.FirstBytePosition = int.Parse(parts[0], CultureInfo.InvariantCulture); r.LastBytePosition = int.Parse(parts[1], CultureInfo.InvariantCulture); } if (parts.Last() == "*") { r.LengthIsStar = true; } else { r.Length = int.Parse(parts.Last(), CultureInfo.InvariantCulture); } return r; }