Beispiel #1
0
        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);
            }
Beispiel #4
0
        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));
        }
Beispiel #5
0
 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();
 }