示例#1
0
 public ProcessDocumentTest()
 {
     _fileManager       = A.Fake <FileManager>();
     _extractionManager = A.Fake <ExtractionManager>();
     _callback          = A.Fake <Callback>();
     _processDocument   = new ProcessDocument(_fileManager, _extractionManager, _callback);
     _newFileToProcess  = new NewFileToProcess {
         Url = string.Empty
     };
 }
        public void Must_return_ok_after_enqueue()
        {
            var newItem = new NewFileToProcess {
                Url = "Url", CallbackUrl = "Url", AccessKey = EnvironmentVariables.AccessKey, DocumentIdentifier = "XPTO"
            };

            var result = _controller.Post(newItem) as OkResult;

            Assert.Equal(OkStatusCode, result.StatusCode);
        }
        public IActionResult Post(NewFileToProcess dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Missing parameters"));
            }

            _backgroundJobs.Enqueue(() => _processDocument.Process(dto));

            return(Ok());
        }
        public void Must_enqueue_new_item()
        {
            var newItem = new NewFileToProcess {
                Url = "Url", CallbackUrl = "Url", AccessKey = EnvironmentVariables.AccessKey, DocumentIdentifier = "XPTO"
            };

            _controller.Post(newItem);

            _backgroundJobClient.Verify(x => x.Create(
                                            It.Is <Job>(job => job.Method.Name == "Process" && job.Args[0] == newItem),
                                            It.IsAny <EnqueuedState>()));
        }
示例#5
0
        public bool Process()
        {
            var allFiles = Directory.GetFiles(path, filter);

            if (allFiles.Length == 0)
            {
                return(false);
            }
            foreach (var filePath in allFiles)
            {
                NewFileToProcess?.Invoke(filePath);
            }
            return(true);
        }
示例#6
0
        private async Task <DocumentResultResponse> ExtractOcr(NewFileToProcess newItem)
        {
            try
            {
                var filePath = await _fileManager.Download(newItem.Url).ConfigureAwait(false);

                var text           = await $"pdftotext {filePath} -".Bash().ConfigureAwait(false);
                var numberOfPages  = _fileManager.GetNumberOfPages(filePath);
                var documentResult = new DocumentResultResponse(numberOfPages, newItem.DocumentIdentifier, newItem.AccessKey);
                await RunInParallel(filePath, numberOfPages, documentResult).ConfigureAwait(false);

                Console.WriteLine($"Finishing document with URL {newItem.Url}");
                _fileManager.Delete(filePath);
                documentResult.Success = true;
                return(documentResult);
            }
            catch (Exception ex) {
                return(new DocumentResultResponse(ex.Message, newItem.DocumentIdentifier, newItem.AccessKey));
            }
        }
示例#7
0
 private void ProcessFile(string filePath)
 {
     NewFileToProcess?.Invoke(filePath);
 }
示例#8
0
        public async Task Process(NewFileToProcess newItem)
        {
            var result = await ExtractOcr(newItem).ConfigureAwait(false);

            await _callback.Send(result, newItem.CallbackUrl).ConfigureAwait(false);
        }