/// <summary> /// Parses a <paramref name="range"/> into a new <see cref="HttpRange"/> instance /// </summary> /// <remarks> /// The range must be in the form <code>unit=(range)+</code> /// </remarks> /// <param name="range">The range to parse</param> /// <returns>The new <see cref="HttpRange"/></returns> public static HttpRange Parse(string range) { var parts = range.Split(_splitEqualChar, 2); var unit = parts[0]; var rangeItems = parts[1].Split(',').Select(x => HttpRangeItem.Parse(x.Trim())).ToArray(); return(new HttpRange(unit, true, rangeItems)); }
/// <summary> /// Returns the textual representation of a single <see cref="HttpRangeItem"/> /// </summary> /// <remarks> /// The return value of this function looks like <code>unit range/length</code> /// </remarks> /// <param name="rangeItem">The <see cref="HttpRangeItem"/> to get the textual representation for</param> /// <returns>The textual representation of <paramref name="rangeItem"/></returns> public virtual string ToString([NotNull] HttpRangeItem rangeItem) { return(ToString(rangeItem, null)); }
/// <summary> /// Returns the textual representation of a single <see cref="HttpRangeItem"/> /// </summary> /// <remarks> /// The return value of this function looks like <code>unit range/length</code> /// </remarks> /// <param name="rangeItem">The <see cref="HttpRangeItem"/> to get the textual representation for</param> /// <param name="length">The length value to be used in the textual representation</param> /// <returns>The textual representation of <paramref name="rangeItem"/></returns> public virtual string ToString([NotNull] HttpRangeItem rangeItem, long?length) { return($"{Unit} {rangeItem}/{(length.HasValue ? length.Value.ToString(CultureInfo.InvariantCulture) : "*")}"); }