using System; using System.Net.Http; using System.Threading.Tasks; using Dinah.Core.Net.Http; namespace FileLiberator { // currently only used to download the .zip flies for upgrade public class DownloadFile : IStreamable { public event EventHandler StreamingBegin; public event EventHandler StreamingProgressChanged; public event EventHandler StreamingCompleted; public event EventHandler StreamingTimeRemaining; public async Task PerformDownloadFileAsync(string downloadUrl, string proposedDownloadFilePath) { var client = new HttpClient(); var progress = new Progress(); progress.ProgressChanged += (_, e) => StreamingProgressChanged?.Invoke(this, e); StreamingBegin?.Invoke(this, proposedDownloadFilePath); try { var actualDownloadedFilePath = await client.DownloadFileAsync(downloadUrl, proposedDownloadFilePath, progress); return actualDownloadedFilePath; } finally { StreamingCompleted?.Invoke(this, proposedDownloadFilePath); } } } }