Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of the FileDetails class.
 /// </summary>
 public StreamLoaderResult(StreamLoadStatus status, StreamMetadata streamMeta, string contentType, Uri cloudLocation, Stream fileStream)
 {
     Status = status;
     Metadata = streamMeta;
     ContentType = contentType;
     //MimeTypes.GetMimeTypeForFileExtension(Path.GetExtension(FileName));
     CloudLocation = cloudLocation;
     FileStream = fileStream;
 }
Esempio n. 2
0
        private static bool IsActionableRangeRequest(StreamMetadata metadata, IEnumerable<RangeRequest> rangeRequests, string ifRangeEntityTag)
        {
            bool isRangeRequest = RangeRequestHelpers.IsPartialOrMultipleRangeRequests(rangeRequests, metadata.Size.Value);

            return isRangeRequest &&
                                (string.IsNullOrWhiteSpace(ifRangeEntityTag)
                                || string.Equals(metadata.ExpectedMD5, ifRangeEntityTag, StringComparison.OrdinalIgnoreCase));
        }
Esempio n. 3
0
        private static long CalculateContentLength(StreamMetadata metadata, IEnumerable<RangeRequest> rangeRequests, string ifRangeEntityTag, string contentType, bool isMultipart)
        {
            if (IsActionableRangeRequest(metadata, rangeRequests, ifRangeEntityTag))
            {
                //sum the content length of each request, taking special care when we support multipart
                long length = rangeRequests.Sum(rangeRequest => rangeRequest.End - rangeRequest.Start + 1 +
                    //length of our header, plus our intermediate header footer (line break)
                    (isMultipart ? rangeRequest.GetMultipartIntermediateHeader(contentType).Length + Environment.NewLine.Length : 0));
                //responseContentLength += 49 + HttpMethodNames.MULTIPART_BOUNDARY.Length + contentType.Length + rangeRequests[i].startRange.ToString().Length + rangeRequests[i].endRange.ToString().Length + downloadProperties.Attachment.Size.ToString().Length;

                //tack on the last intermediate header length if applicable
                return isMultipart ?
                    length + _MultipartFooter.Length : length;
            }
            // not a Range request, or the requested Range entity ID does not match the current entity ID, so start a new download

            return metadata.Size.Value;
        }