private async Task DownloadFileAsync(IFileFetcher fetcher) { var file = await fetcher.GetLatestAsync().ConfigureAwait(false); string filePath = Path.Combine(_settings.ZippedToolsDirectory, file.Name); if (!File.Exists(filePath) || _settings.ReloadTools) { using (var fileStream = new FileStream(filePath, FileMode.Create)) { var contentStream = await file.GetContentAsync().ConfigureAwait(false); await contentStream.CopyToAsync(fileStream).ConfigureAwait(false); } } }
private async Task <ToolUpdate> CheckForUpdateAsync( ToolSettings toolSettings, IFileFetcher fetcher, bool useExistingTools) { var latestLocal = ToolUtility.GetLatestToolOrNull(_settings, toolSettings); if (useExistingTools && latestLocal != null) { return(null); } EnableSecurityProtocols(); var latestDownload = await fetcher.GetLatestAsync().ConfigureAwait(false); var fileExtension = ArchiveUtility.GetFileExtension(latestDownload.Format); var fileName = $"{toolSettings.Prefix}{latestDownload.Version}{fileExtension}"; var destinationPath = Path.Combine(_settings.ZippedToolsDirectory, fileName); ToolUpdateStatus status; if (latestLocal == null) { status = ToolUpdateStatus.NoLocalVersion; } else if (!File.Exists(destinationPath)) { status = ToolUpdateStatus.NewerVersionAvailable; } else { status = ToolUpdateStatus.NoUpdateAvailable; } return(new ToolUpdate( status, latestLocal?.Version, destinationPath, latestDownload)); }