Amazon.EC2.Import.DiskImageImporter.ConstructImportPartsList C# (CSharp) Метод

ConstructImportPartsList() приватный Метод

Walks the byte ranges of the image file to construct the logical parts we'll use to perform the upload
private ConstructImportPartsList ( long volumeSize, System.DateTime urlExpiration ) : Import
volumeSize long The requested size of the volume in EC2
urlExpiration System.DateTime The time at which the presigned urls for the parts should expire.
Результат Import
        Import ConstructImportPartsList(long? volumeSize, DateTime urlExpiration)
        {
            var imageFilename = Path.GetFileName(ImageFilePath);
            var imageFileinfo = new FileInfo(ImageFilePath);
            var diskImageSize = imageFileinfo.Length;

            var partCount = (int)Math.Ceiling((double)diskImageSize / DefaultPartSize);

            var parts = new ImageFileParts { Count = partCount };
            var partKeyPrefix = string.Format(CultureInfo.InvariantCulture,
                                              "{0}/{1}.",
                                              ArtifactsKeyPrefix,
                                              imageFilename);

            long partStartOffset = 0;
            for (var i = 0; i < partCount; i++)
            {
                var partEndOffset = partStartOffset + DefaultPartSize - 1;
                if (partEndOffset >= diskImageSize)
                    partEndOffset = diskImageSize - 1;

                var partKey = string.Concat(partKeyPrefix, PartSuffix, i);
                var part = new ImageFilePart
                {
                    Index = i,
                    ByteRange = new ImageFilePartByteRange { Start = partStartOffset, End = partEndOffset },
                    Key = partKey,


                    HeadUrl = S3Client.GeneratePreSignedURL(
                        BucketName, 
                        partKey, 
                        urlExpiration,
                        new Dictionary<string, object> { { "Verb", "HEAD" } }),

                    GetUrl = S3Client.GeneratePreSignedURL(
                        BucketName,
                        partKey,
                        urlExpiration,
                        new Dictionary<string, object> { { "Verb", "GET" } }),

                    DeleteUrl = S3Client.GeneratePreSignedURL(
                        BucketName,
                        partKey,
                        urlExpiration,
                        new Dictionary<string, object> { { "Verb", "DELETE" } })
                };
                parts.PartInstances.Add(part);

                partStartOffset += DefaultPartSize;
            }

            return new Import
            {
                Size = diskImageSize,
                VolumeSize = VolumeSizeFor(diskImageSize, volumeSize),
                PartsList = parts
            };
        }