Esempio n. 1
0
        private async Task DownloadNodeAsync(MegaUpdateItem task, Progress <double> progress, CancellationToken cancellationToken)
        {
            await Connect();

            ((FileInfo)task.TargetPath).Directory?.Create();
            task.TargetPath.Delete();

            try
            {
                await _client.DownloadFileAsync(task.SourceItem, task.TargetPath.FullName, progress, cancellationToken);
            }
            catch (Exception)
            {
                // Needed to avoid partially downloaded files causing issues
                task.TargetPath.Delete();
                throw;
            }
        }
Esempio n. 2
0
            public MegaUpdateItem(INode item, MegaUpdater source, MegaUpdateItem owner)
            {
                SourceItem   = item ?? throw new ArgumentNullException(nameof(item));
                _source      = source ?? throw new ArgumentNullException(nameof(source));
                ItemSize     = item.Size;
                ModifiedTime = item.ModificationDate ?? item.CreationDate;
                Name         = item.Name;
                IsDirectory  = item.Type == NodeType.Directory;
                IsFile       = item.Type == NodeType.File;

                if (owner != null)
                {
                    _owner = owner;

                    var current = owner;
                    var result  = Name;
                    while (current?._owner != null)
                    {
                        result  = current.Name + "/" + result;
                        current = current._owner;
                    }
                    ClientRelativeFileName = result.Trim('/');
                }
            }
Esempio n. 3
0
        private async Task DownloadNodeAsync(MegaUpdateItem task, FileInfo downloadTarget, Progress <double> progress, CancellationToken cancellationToken)
        {
            await Connect(true);

            await _client.DownloadFileAsync(task.SourceItem, downloadTarget.FullName, progress, cancellationToken);
        }