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; } }
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('/'); } }
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); }