public CloudStorageSeekableStream(ICloudStorage storage, ICloudStorageResourceName resourceName) { _CloudStorage = storage; _ResourceName = resourceName; Length = Task.Run(() => { return(_CloudStorage.GetObjectLengthAsync(_ResourceName)); }).Result; }
internal CloudZipArchiveEntry(ICloudStorage storage, ICloudStorageResourceName resourceName, ZipArchiveEntry entry) : base(entry) { _CloudStorage = storage; _ResourceName = resourceName; CompressionMethod = (ushort)methodProperty.GetValue(entry); OffsetOfCompressedData = (long)offsetProperty.GetValue(entry); }
public CloudZipArchive(ICloudStorage storage, ICloudStorageResourceName resourceName) { _CloudStorage = storage; _ResourceName = resourceName; _stream = new CloudStorageSeekableStream(_CloudStorage, _ResourceName); _Archive = new ZipArchive(_stream); }
public async Task <long> GetObjectLengthAsync(ICloudStorageResourceName resource) { if (resource is S3CloudStorageResourceName s3resource) { var metadata = await S3Client.GetObjectMetadataAsync(s3resource.Name, s3resource.ObjectKey); return(metadata.ContentLength); } return(-1); }
/// <summary> /// Get Object /// </summary> /// <param name="resource"></param> /// <param name="range">(optional)</param> /// <returns></returns> public async Task <Stream> GetObjectStreamAsync( ICloudStorageResourceName resource, CloudStorageResourceRange range = null) { Stream stream = null; if (resource is S3CloudStorageResourceName s3resource) { var req = new GetObjectRequest { BucketName = s3resource.Name, Key = s3resource.ObjectKey }; if (range != null) { req.ByteRange = new ByteRange(range.Offset, range.Offset + range.Length - 1); } var objectResponse = await S3Client.GetObjectAsync(req); stream = objectResponse.ResponseStream; } return(stream); }