private RangeItemHeaderValue(RangeItemHeaderValue source) { this.from = source.from; this.to = source.to; }
internal static int GetRangeItemLength(string input, int startIndex, out RangeItemHeaderValue parsedValue) { parsedValue = null; if (string.IsNullOrEmpty(input) || (startIndex >= input.Length)) { return 0; } int num = startIndex; int num2 = num; int length = HttpRuleParser.GetNumberLength(input, num, false); if (length > 0x13) { return 0; } num += length; num += HttpRuleParser.GetWhitespaceLength(input, num); if ((num == input.Length) || (input[num] != '-')) { return 0; } num++; num += HttpRuleParser.GetWhitespaceLength(input, num); int num4 = num; int num5 = 0; if (num < input.Length) { num5 = HttpRuleParser.GetNumberLength(input, num, false); if (num5 > 0x13) { return 0; } num += num5; num += HttpRuleParser.GetWhitespaceLength(input, num); } if ((length == 0) && (num5 == 0)) { return 0; } long result = 0; if ((length > 0) && !HeaderUtilities.TryParseInt64(input.Substring(num2, length), out result)) { return 0; } long num7 = 0; if ((num5 > 0) && !HeaderUtilities.TryParseInt64(input.Substring(num4, num5), out num7)) { return 0; } if (((length > 0) && (num5 > 0)) && (result > num7)) { return 0; } parsedValue = new RangeItemHeaderValue((length == 0) ? null : new long?(result), (num5 == 0) ? null : new long?(num7)); return (num - startIndex); }