private async Task ResolveFileAsync(UpgradeInfo info) { using (var tempPath = new TempDirectory(Path.Combine(AcceleriderFolders.Temp, $"{Name}-{Path.GetRandomFileName()}"))) { var zipFilePath = Path.Combine(tempPath.Path, Path.GetRandomFileName()); // 1. Download the module var downloader = FileTransferService .GetDownloaderBuilder() .UseDefaultConfigure() .From(info.Url) .To(zipFilePath) .Build(); downloader.Run(); await downloader; // 2. Unzip the module ZipFile.ExtractToDirectory(zipFilePath, tempPath.Path); Logger.Info($"[UNZIP] From {zipFilePath} to {tempPath.Path}"); // 3. Move file to target path. var targetPath = GetInstallPath(info.Version); var subDirectory = Directory.GetDirectories(tempPath.Path).FirstOrDefault(); if (tempPath.MoveTo(targetPath, subDirectory)) { Logger.Info($"[MOVE FILE] From {subDirectory} to {targetPath}"); } } }
public static IEnumerable <IDownloader> ToDownloaders(this IEnumerable <RemoteRef> @this) { return(@this.Select(item => FileTransferService .GetDownloaderBuilder() .UseDefaultConfigure() .From(item.RemotePath) .To(item.LocalPath) .Build())); }
public static IDownloadingFile ToDownloadingFile(this string jsonText, Action <IDownloaderBuilder> configure, INetDiskUser owner) { var data = jsonText.ToObject <SerializedData>(); var file = data.File; var builder = FileTransferService.GetDownloaderBuilder(); configure(builder); var downloader = builder.Build(data.DownloadInfo.ToString()); return(DownloadingFile.Create(owner, file, downloader)); }
private TransferItem MockDownload(INetDiskFile file, FileLocator to) { var downloader = FileTransferService .GetDownloaderBuilder() .UseSixCloudConfigure() .From(file.Path) .To(to) .Build(); return(new TransferItem(downloader) { File = file, Owner = this }); }
public override IDownloadingFile Download(INetDiskFile from, FileLocator to) { var downloader = FileTransferService .GetDownloaderBuilder() .UseSixCloudConfigure() .Configure(localPath => localPath.GetUniqueLocalPath(path => File.Exists(path) || File.Exists($"{path}{ArddFileExtension}"))) .From(new RemotePathProvider(this, from.Path)) .To(Path.Combine(to, from.Path.FileName)) .Build(); var result = DownloadingFile.Create(this, from, downloader); SaveDownloadingFile(result); return(result); }