private async Task <AzureFileData> RebuildFile(RebuildFile model, string container) { var rebuiltMapped = HostingEnvironment.MapPath("~/Uploads/Temp/Rebuilt"); var localTemp = HostingEnvironment.MapPath("~/Uploads/Temp"); CreateDirectory(localTemp); CreateDirectory(rebuiltMapped); var newFile = String.Format("file_{0}{1}", Guid.NewGuid().ToString(), model.FileExtension); var allFilesExists = model.Guids.All(filePart => File.Exists(Path.Combine(localTemp, filePart))); if (!allFilesExists) { return(null); } using (var streamWriter = new StreamWriter(Path.Combine(rebuiltMapped, newFile))) { foreach (var filePart in model.Guids) { using (var streamReader = new StreamReader(Path.Combine(localTemp, filePart))) { var fileSize = (int)streamReader.BaseStream.Length; var fileBytes = new byte[fileSize]; await streamReader.BaseStream.ReadAsync(fileBytes, 0, fileSize); await streamWriter.BaseStream.WriteAsync(fileBytes, 0, fileSize); } } } var data = new AzureStorage(container, true).SaveFile(Path.Combine(rebuiltMapped, newFile)); CleanUpLocalStorage(model, rebuiltMapped, newFile, localTemp); return(data); }
public async Task ErrorOutcome_Is_Returned_When_Issues_With_Rebuilding() { // Arrange const string receivedSas = "http://im-a-received-sas"; const string rebuildSas = "http://im-a-rebuild-sas"; const string receivedFileType = "doc"; var returnedInput = (receivedSas, rebuildSas, receivedFileType); var durableActivityContext = new Mock <IDurableActivityContext>(); var logger = new Mock <ILogger>(); var settings = new Mock <IConfigurationSettings>(); settings.SetupGet(s => s.RebuildKey).Returns("TestKey"); settings.SetupGet(s => s.RebuildUrl).Returns("http://testrebuildurl"); durableActivityContext.Setup(s => s.GetInput <(string, string, string)>()) .Returns(returnedInput); _httpTest.RespondWith(string.Empty, 500); var classToTest = new RebuildFile(settings.Object); // Act var outcome = await classToTest.Run(durableActivityContext.Object, logger.Object); // Assert Assert.That(outcome, Is.EqualTo(ProcessingOutcome.Error)); }
public void SetUp() { _mockContext = new Mock <IDurableActivityContext>(); _mockSettings = new Mock <IConfigurationSettings>(); _mockLogger = new Mock <ILogger>(); _mockSettings.SetupGet(s => s.RebuildKey).Returns(ApiKey); _mockSettings.SetupGet(s => s.RebuildUrl).Returns(ApiUrl); _mockContext.Setup(s => s.GetInput <(string, string, string)>()).Returns((ReceivedSas, RebuildSas, ReceivedFileType)); _httpTest = new HttpTest(); _classUnderTest = new RebuildFile(_mockSettings.Object); }
public async Task <IHttpActionResult> PostVideo(RebuildFile model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var azureFileData = await RebuildFile(model, "posts"); if (azureFileData == null) { return(BadRequest("Missing files to rebuild")); } return(Ok(azureFileData)); }
private void CleanUpLocalStorage(RebuildFile model, string rebuiltMapped, string newFileName, string localTemp) { //var time = new System.Timers.Timer { Interval = 5000 }; //time.Elapsed += (o, eventArgs) => { if (File.Exists(Path.Combine(rebuiltMapped, newFileName))) { File.Delete(Path.Combine(rebuiltMapped, newFileName)); } foreach (var file in model.Guids.Where(file => File.Exists(Path.Combine(localTemp, file)))) { File.Delete(Path.Combine(localTemp, file)); } //time.Stop(); //}; //time.Start(); }