Пример #1
0
        public async Task DoWorkAsync()
        {
            ProcessingTaskQueueMessage msg = await _queueService.DequeueConversionTaskAsync();

            if (null == msg)
            {
                return;
            }

            ProcessingTask task = await _taskService.GetTaskAsync(msg.Task.Id);

            if (null == task || null == task.SourceFile || string.IsNullOrWhiteSpace(task.SourceFile.BlobFileName))
            {
                return;
            }

            IFileProcessor fileProcessor = _fileProcessors[task.Operation];

            if (null == fileProcessor)
            {
                return;
            }

            Trace.TraceInformation("Обрабатываем задание {0}", JsonConvert.SerializeObject(msg.Task));

            var sourceStream = await _fileStorageService.GetSourceFileStreamAsync(task.SourceFile.BlobFileName);

            var destinationStream = new MemoryStream((int)sourceStream.Length);             // плохо, но не хочется делать файлы
            await fileProcessor.ProcessFileAsync(sourceStream, destinationStream);

            destinationStream.Seek(0, SeekOrigin.Begin);
            var destinationFile = await _fileStorageService.SaveDestinationFileStreamAsync(destinationStream, task.SourceFile.MimeContentType);

            destinationStream.Close();

            task.DestinationFile = destinationFile;
            task.Status          = TaskStatus.Success;
            task.Message         = "Task Processed Succesfully";

            await _taskService.SaveTaskAsync(task);

            await _queueService.DeleteConversionTaskAsync(msg.Id, msg.PopReceipt);



            Trace.TraceInformation("Задание  обработано успешно");
        }
Пример #2
0
        public async Task <IActionResult> Upload(IFormFile files)
        {
            await _fileProcessor.ProcessFileAsync(files);

            return(NoContent());
        }