private static ResponseContentRange GetRange(HttpWebResponse response) { var rangeHeader = response.Headers["Content-Range"]; var range = new ResponseContentRange { ContentLength = response.ContentLength }; if (rangeHeader == null || rangeHeader.Length <= 6 || !rangeHeader.StartsWith("bytes ")) { return(range); } rangeHeader = rangeHeader.Substring(6); var posStart = rangeHeader.IndexOf('-'); var posTotal = rangeHeader.IndexOf('/'); if (posTotal <= 0) { return(range); } if (posStart <= 0) { range.From = 0; } else { var strStart = rangeHeader.Substring(0, posStart); range.From = long.Parse(strStart); } var strStop = rangeHeader.Substring(posStart + 1, posTotal - posStart - 1); range.To = long.Parse(strStop); var strTotal = rangeHeader.Substring(posTotal + 1); range.Length = long.Parse(strTotal); return(range); }
private static ResponseContentRange GetRange(HttpWebResponse response) { var rangeHeader = response.Headers["Content-Range"]; var range = new ResponseContentRange {ContentLength = response.ContentLength}; if (rangeHeader == null || rangeHeader.Length <= 6 || !rangeHeader.StartsWith("bytes ")) return range; rangeHeader = rangeHeader.Substring(6); var posStart = rangeHeader.IndexOf('-'); var posTotal = rangeHeader.IndexOf('/'); if (posTotal <= 0) return range; if (posStart <= 0) range.From = 0; else { var strStart = rangeHeader.Substring(0, posStart); range.From = long.Parse(strStart); } var strStop = rangeHeader.Substring(posStart + 1, posTotal - posStart - 1); range.To = long.Parse(strStop); var strTotal = rangeHeader.Substring(posTotal + 1); range.Length = long.Parse(strTotal); return range; }