public async Task DownloadAsync( DownloadFileParametersModel downloadFileParametersModel, CancellationToken cancellationToken) { try { cancellationToken.ThrowIfCancellationRequested(); using (var client = new HttpClient()) { using (var result = await client.GetAsync( Path.Combine( $"{downloadFileParametersModel.RemoteUri}" + $"{downloadFileParametersModel.FileNameRemote}.{downloadFileParametersModel.FileFormat}" ), cancellationToken)) { if (result.IsSuccessStatusCode) { var fileBytes = await result.Content.ReadAsByteArrayAsync(); await File.WriteAllBytesAsync( Path.Combine( $"{downloadFileParametersModel.PathToFile}", $"{downloadFileParametersModel.FileNameLocal}.{downloadFileParametersModel.FileFormat}"), fileBytes, cancellationToken); } } } } catch (Exception ex) { throw new NotSupportedException("Ошибка во время выполнения." + ex); } }
public async Task <DownloadAsyncResponseModel> DownloadAsync(CancellationToken cancellationToken) { try { cancellationToken.ThrowIfCancellationRequested(); _logger.LogInformation("DownloadAsync: " + "Start"); // проверяем свежесть файла var isNewFile = await _fileService.CheckExcelFile(DateTime.UtcNow, _fileName); // TODO: вынести в конфиг // TODO: ссылки хранить в бд // https://www.mirea.ru/upload/medialibrary/97d/KBiSP-4-kurs-2-sem-_1_.xlsx var downloadFileParametersModel = new DownloadFileParametersModel { PathToFile = Path.Combine("Infrastructure", "ScheduleFile"), RemoteUri = new Uri("https://www.mirea.ru/upload/medialibrary/97d/"), FileNameLocal = "scheduleFile", FileNameRemote = "KBiSP-4-kurs-2-sem", FileFormat = "xlsx" }; _logger.LogInformation("DownloadAsync: " + "isNewFile: " + isNewFile); var result = new DownloadAsyncResponseModel { IsNewFile = isNewFile }; // если не свежий => качаем новый (1 сутки) if (!isNewFile) { await _fileService.DownloadAsync( downloadFileParametersModel, cancellationToken); result.Message = "Данные обновлены!"; } else { result.Message = "Обновление невозможно. Попробуйте позже."; } return(result); } catch (Exception ex) { _logger.LogError("Exception DownloadAsync: " + ex); throw new NotSupportedException("Ошибка во время выполнения." + ex); } }
public async void DownloadByLinkAsync_DoneTask_ShouldBeDownloadFile(int fileNameFlag) { // Arrange var fileService = new FileService(); var fileName = Path.Combine(TestValueProvider.GetValueStringByFlag(fileNameFlag)); var downloadFileParametersModel = new DownloadFileParametersModel { //https://www.mirea.ru/upload/medialibrary/97d/KBiSP-4-kurs-2-sem-_1_.xlsx PathToFile = string.Empty, RemoteUri = new Uri("https://www.mirea.ru/upload/medialibrary/97d/"), FileNameLocal = fileName, FileNameRemote = "KBiSP-4-kurs-2-sem-_1_", FileFormat = "xlsx" }; // Act await fileService.DownloadAsync(downloadFileParametersModel, CancellationToken.None); // Assert var result = File.Exists(fileName + ".xlsx"); Assert.True(result); }