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>())); }
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); }
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)); } }
private void ProcessFile(string filePath) { NewFileToProcess?.Invoke(filePath); }
public async Task Process(NewFileToProcess newItem) { var result = await ExtractOcr(newItem).ConfigureAwait(false); await _callback.Send(result, newItem.CallbackUrl).ConfigureAwait(false); }