public override RemoteFileInfo GetFileInfo(Uri uri) { RemoteFileInfo fileInfo = null; WebRequest request = GetRequest(uri); using (var response = (HttpWebResponse)request.GetResponse()) { bool acceptRanges = String.Equals(response.Headers["Accept-Ranges"], "bytes", StringComparison.InvariantCultureIgnoreCase); fileInfo = new RemoteFileInfo(response.ContentType, response.LastModified, response.ContentLength, acceptRanges); } return fileInfo; }
private IEnumerable<Segment> GetSegments(int segmentCount, RemoteFileInfo remoteFileInfo) { long fileSize = remoteFileInfo.FileSize; long segmentSize = fileSize / segmentCount; var segments = new List<Segment>(); long segmentStart = 0; while (segmentStart < fileSize) { long segmentEnd = Math.Min(fileSize, segmentStart + segmentSize); if (segments.Count == segmentCount - 1) segmentEnd = fileSize; segments.Add(new Segment(segmentStart, segmentEnd)); segmentStart = segmentEnd; } return segments; }