Exemplo n.º 1
0
        private static List <string> ExecuteUpload(
            FileSystemInfo localRoot,
            IEnumerable <FileInfo> filesToCopy,
            string s3Directory,
            Parameters parameters,
            UploadOptions options,
            CancellationToken cancellationToken
            )
        {
            cancellationToken.ThrowIfCancellationRequested();
            var result = new List <string>();

            using (var client = Utilities.GetS3Client(parameters, cancellationToken))
            {
                var root = Utilities.GetS3Directory(
                    client,
                    s3Directory,
                    parameters.BucketName,
                    cancellationToken);

                foreach (var file in filesToCopy)
                {
                    cancellationToken.ThrowIfCancellationRequested();
                    if (!file.Exists)
                    {
                        throw new IOException($"Source file does not exist: {file.FullName}");
                    }

                    var s3File = new S3FileInfo(
                        client,
                        parameters.BucketName,
                        Path.Combine(
                            root.Name,
                            options.PreserveFolderStructure
                                ? file.FullName.Replace(Utilities.GetFullPathWithEndingSlashes(localRoot.FullName),
                                                        string.Empty)
                                : file.Name
                            ));

                    s3File = options.DeleteSource
                        ? s3File.MoveFromLocal(file.FullName, options.Overwrite)
                        : s3File.CopyFromLocal(file.FullName, options.Overwrite);

                    result.Add(options.ReturnListOfObjectKeys ? s3File.FullName : file.FullName);
                }
            }

            return(result);
        }