public Range getRange() { if (null != _range) { return _range; } if (!_headers.ContainsKey("range")) { return null; } String rangeValue = _headers["range"]; _range = Range.buildFromString(rangeValue); return _range; }
public static Range buildFromString(String value) { Range answer = new Range(value); string[] tokens = value.Split(new char[] { '=', ',' }); if (2 != tokens.Length) { String technicalError = String.Format("2 != tokens.Length; only support simple range values; value = '{0}'", value); throw new BaseException( typeof(Range), technicalError); } String bytes = tokens[0]; if (!"bytes".Equals(bytes)) { String technicalError = String.Format("!\"bytes\".Equals(bytes); bytes = '{0}'; value = '{1}'", bytes, value ); throw new BaseException(typeof(Range), technicalError); } String range = tokens[1]; log.debug(range, "range"); int indexOfHyphen = range.IndexOf('-'); if (-1 == indexOfHyphen) { String technicalError = String.Format("-1 == indexOfHyphen; range = '{0}'; value = '{1}'", range, value); throw new BaseException(typeof(Range), technicalError); } int secondHyphen = range.IndexOf('-', indexOfHyphen + 1); if (-1 != secondHyphen) { String technicalError = String.Format("-1 != secondHyphen; range = '{0}'; value = '{1}'", range, value); throw new BaseException(typeof(Range), technicalError); } // "bytes=-500" if (0 == indexOfHyphen) { long firstBytePosition = System.Int64.Parse(range); answer._firstBytePosition = new BytePosition(firstBytePosition); return answer; } // "bytes=9500-" int rangeLength = range.Length; if ('-' == range[rangeLength - 1]) { range = range.Substring(0, rangeLength - 1); long firstBytePosition = System.Int64.Parse(range); answer._firstBytePosition = new BytePosition(firstBytePosition); return answer; } // "bytes=500-999" String startPosition = range.Substring(0, indexOfHyphen); // long firstBytePosition = System.Int64.Parse(startPosition); // c-sharp does not like this ... Error 1 Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal H:\projects.windows\c-sharp\vlc_amigo.solution\jsonbroker.library\common\http\headers\request\Range.cs 11 21 jsonbroker.library answer._firstBytePosition = new BytePosition(System.Int64.Parse(startPosition)); String endPosition = range.Substring(indexOfHyphen + 1); answer._lastBytePosition = new BytePosition(System.Int64.Parse(endPosition)); return answer; }