Example #1
0
        public byte[] TestAPI(string inputFileName, string destFormat, bool hasVideo, string extension = "html", string mime = "text/html")
        {
            //setup
            MSOfficeOutput msOutput = (MSOfficeOutput)Enum.Parse(typeof(MSOfficeOutput), destFormat);

            byte[] apiFileContent = inputFiles.Where(x => x.Key.EndsWith(inputFileName)).Select(x => x.Value).First();

            MSOfficeJob OfficeJob = new MSOfficeJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = extension,
                FileName        = "testOfficeJob",
                MimeType        = mime,
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                MSOfficeOutput  = msOutput
            };

            if (hasVideo)
            {
                //TODO maybe mock Amara call
                OfficeJob.SubtitleLangauge = "en-US";
                OfficeJob.SubtitleFormat   = "srt";
            }

            var apiTask = Task.Run(() => WebAPICall(OfficeJob));

            return(apiTask.Result);
        }
Example #2
0
        public void TestDaisyDocx()
        {
            //arrange
            var testDocumentsName = "A1.Daisy.docx";
            var apiFileContent    = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First();

            DaisyJob daisyj = new DaisyJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = ".docx",
                FileName        = "testDaisy",
                MimeType        = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                DaisyOutput     = DaisyOutput.TalkingBook
            };


            //act
            var apiTask = Task.Run(() => WebAPICall(daisyj));

            byte[] apiRes = apiTask.Result;

            //assert
            NUnit.Framework.Assert.IsNotEmpty(apiRes);
            IOController.SaveTestResultFile(apiRes, "Daisy-" + timestamp + "-API.zip");
        }
        public void TestEbookDocxEpub3()
        {
            RabbitMQCluster.ClusterConnect();
            var testDocumentsName = "A1.Daisy.docx";
            var apiFileContent    = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First();
            var ebookj            = new DaisyJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = ".docx",
                FileName        = "testDaisyEPUB3WMO",
                MimeType        = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                DaisyOutput     = DaisyOutput.Epub3WMO
            };

            var apiTask = Task.Run(() => WebAPICall(ebookj));

            byte[] apiRes = apiTask.Result;

            //assert
            NUnit.Framework.Assert.IsNotEmpty(apiRes);
            IOController.SaveTestResultFile(apiRes, "Ebook-" + timestamp + "-EPUB3WMO-API.epub");

            RabbitMQCluster.ClusterDisconnect();
        }
        //TODO test different formatting options: unicode, octobraille, nacb where applicable

        public byte[] TestBrailleAPI(string language, string format, int charsPerLine, int linesPerPage, string contraction, int dots)
        {
            Encoding enc             = RoboBrailleProcessor.GetEncodingByCountryCode((Language)Enum.Parse(typeof(Language), language, true));
            var      apiFileContents = enc.GetBytes(IOController.GetTestForLanguage(language));

            PageNumbering pn = PageNumbering.none;

            var brj = new BrailleJob()
            {
                Id                = Guid.NewGuid(),
                FileContent       = apiFileContents,
                UserId            = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension     = ".txt",
                FileName          = "testBraille",
                MimeType          = "plaint/text",
                Status            = JobStatus.Started,
                SubmitTime        = DateTime.Now,
                DownloadCounter   = 0,
                InputFileHash     = RoboBrailleProcessor.GetMD5Hash(apiFileContents),
                BrailleLanguage   = (Language)Enum.Parse(typeof(Language), language, true),
                BrailleFormat     = (BrailleFormat)Enum.Parse(typeof(BrailleFormat), dots.ToString(), true),
                CharactersPerLine = charsPerLine,
                LinesPerPage      = linesPerPage,
                Contraction       = (BrailleContraction)Enum.Parse(typeof(BrailleContraction), contraction, true),
                ConversionPath    = ConversionPath.texttobraille,
                OutputFormat      = (OutputFormat)Enum.Parse(typeof(OutputFormat), format, true),
                PageNumbering     = pn
            };

            var apiTask = Task.Run(() => WebAPICall(brj));

            byte[] apiRes = apiTask.Result;
            return(apiRes);
        }
        public byte[] TestCerthOcrAPI(bool hasTable, string inputFileName)
        {
            byte[] apiFileContent = inputFiles.Where(x => x.Key.EndsWith(inputFileName)).Select(x => x.Value).First();
            var    extension      = ".pdf";
            var    mime           = "application/pdf";

            if (inputFileName.EndsWith("png"))
            {
                extension = ".png";
                mime      = "image/png";
            }
            if (inputFileName.EndsWith("jpg"))
            {
                extension = ".jpg";
                mime      = "image/jpeg";
            }
            var ocrJob = new OcrConversionJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = extension,
                FileName        = "testOcr",
                MimeType        = mime,
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                HasTable        = hasTable,
                OcrLanguage     = Language.enUS
            };

            return(WebAPICall(ocrJob).Result);
        }
        public byte[] TestAudioAPI(string language, List <VoicePropriety> voicepropriety, string age = "", string gender = "", AudioSpeed audioSpeed = AudioSpeed.Normal, AudioFormat audioFormat = AudioFormat.Mp3)
        {
            var      outputPath = IOController.GetOutputDirectory();
            Language lang       = Language.enGB;

            byte[] apiFileContent = null;
            if (Enum.IsDefined(typeof(Language), language.Substring(0, 4)))
            {
                apiFileContent = RoboBrailleProcessor.GetEncodingByCountryCode(lang).GetBytes(IOController.GetTestForLanguage(language));
                lang           = (Language)Enum.Parse(typeof(Language), language.Substring(0, 4), true);
            }
            var voiceProps = new List <VoicePropriety>();

            if (age.Equals("Young"))
            {
                voiceProps.Add(VoicePropriety.Younger);
            }
            if (age.Equals("Old"))
            {
                voiceProps.Add(VoicePropriety.Older);
            }
            if (gender.Equals("Male"))
            {
                voiceProps.Add(VoicePropriety.Male);
            }
            if (gender.Equals("Female"))
            {
                voiceProps.Add(VoicePropriety.Female);
            }
            if (voicepropriety != null)
            {
                voiceProps.AddRange(voicepropriety);
            }
            AudioJob auj = new AudioJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = "" + ".mp3",
                FileName        = "testAudio",
                MimeType        = "plain/text",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                AudioLanguage   = lang,
                FormatOptions   = audioFormat,
                SpeedOptions    = audioSpeed,
                VoicePropriety  = voiceProps.ToArray()
            };

            return(WebAPICall(auj).Result);
        }
Example #7
0
        public async Task <IHttpActionResult> Delete([FromUri] Guid jobId)
        {
            try
            {
                Guid userId = RoboBrailleProcessor.getUserIdFromJob(this.Request.Headers.Authorization.Parameter);
                jobId = await RoboBrailleProcessor.DeleteJobFromDb(jobId, userId, _repository.GetDataContext());

                return(Ok(jobId.ToString("D")));
            }
            catch (Exception e)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(string.Format("Internal error: {0}", e)),
                    ReasonPhrase = e.Message
                };
                throw new HttpResponseException(resp);
            }
        }
Example #8
0
        public async Task <IHttpActionResult> Post(SignLanguageJob job)
        {
            try
            {
                Guid userId = RoboBrailleProcessor.getUserIdFromJob(this.Request.Headers.Authorization.Parameter);
                job.UserId = userId;
                Guid jobId = await _repository.SubmitWorkItem(job);

                return(Ok(jobId.ToString("D")));
            }
            catch (Exception e)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(string.Format("Internal error: {0}", e)),
                    ReasonPhrase = e.Message
                };
                throw new HttpResponseException(resp);
            }
        }
        public byte[] TestEbookAPI(string format, string testDocumentsName)
        {
            var apiFileContent = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Value).First();
            var ftpFilePath    = inputFiles.Where(x => x.Key.EndsWith(testDocumentsName)).Select(x => x.Key).First();
            var fileExtension  = testDocumentsName.Substring(testDocumentsName.LastIndexOf(".") + 1);

            EbookFormat ef = (EbookFormat)Enum.Parse(typeof(EbookFormat), format.ToLowerInvariant());

            switch (format)
            {
            case "EPUB": ef = EbookFormat.epub; break;

            case "MOBI": ef = EbookFormat.mobi; break;

            case "RTF": ef = EbookFormat.rtf; break;

            case "TXT": ef = EbookFormat.txt; break;

            default: break;
            }
            var ebookj = new EBookJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = fileExtension,
                FileName        = "testEbook",
                MimeType        = "plain/text",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                EbookFormat     = ef
            };

            var apiTask = Task.Run(() => WebAPICall(ebookj));

            byte[] apiRes = apiTask.Result;

            return(apiRes);
        }
Example #10
0
        public byte[] TestAPI(string inputFileName)
        {
            //setup
            byte[] apiFileContent = inputFiles.Where(x => x.Key.EndsWith(inputFileName)).Select(x => x.Value).First();

            HTMLToTextJob htmlToTextJob = new HTMLToTextJob()
            {
                Id              = Guid.NewGuid(),
                FileContent     = apiFileContent,
                UserId          = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension   = "html",
                FileName        = "testHtmlToText",
                MimeType        = "text/html",
                Status          = JobStatus.Started,
                SubmitTime      = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash   = RoboBrailleProcessor.GetMD5Hash(apiFileContent)
            };

            var apiTask = Task.Run(() => WebAPICall(htmlToTextJob));

            return(apiTask.Result);
        }
Example #11
0
        public byte[] TestAccessibilityAPI(string format, string inputFileName)
        {
            //setup
            var of        = (OutputFileFormatEnum)Enum.Parse(typeof(OutputFileFormatEnum), Convert.ToString("OFF_DOCX"));
            var extension = ".pdf";
            var mime      = "application/pdf";

            if (inputFileName.EndsWith("png"))
            {
                extension = ".png";
                mime      = "image/png";
            }
            if (inputFileName.EndsWith("jpg"))
            {
                extension = ".jpg";
                mime      = "image/jpeg";
            }
            byte[] apiFileContent = inputFiles.Where(x => x.Key.EndsWith(inputFileName)).Select(x => x.Value).First();
            switch (format)
            {
            case "doc":
                of = OutputFileFormatEnum.OFF_MSWord;
                break;

            case "docx":
                of = OutputFileFormatEnum.OFF_DOCX;
                break;

            case "rtf":
                of = OutputFileFormatEnum.OFF_RTF;
                break;

            case "pdf":
                of = OutputFileFormatEnum.OFF_PDF;
                break;

            case "pdfa":
                of = OutputFileFormatEnum.OFF_PDFA;
                break;

            case "xls":
                of = OutputFileFormatEnum.OFF_MSExcel;
                break;

            case "xlsx":
                of = OutputFileFormatEnum.OFF_XLSX;
                break;

            case "csv":
                of = OutputFileFormatEnum.OFF_CSV;
                break;

            case "txt":
                of = OutputFileFormatEnum.OFF_Text;
                break;

            case "htm":
                of = OutputFileFormatEnum.OFF_HTML;
                break;

            default:
                of = OutputFileFormatEnum.OFF_Text;
                break;
            }


            AccessibleConversionJob accj = new AccessibleConversionJob()
            {
                Id                   = Guid.NewGuid(),
                FileContent          = apiFileContent,
                UserId               = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension        = extension,
                FileName             = "testAccessibility",
                MimeType             = mime,
                Status               = JobStatus.Started,
                SubmitTime           = DateTime.Now,
                DownloadCounter      = 0,
                InputFileHash        = RoboBrailleProcessor.GetMD5Hash(apiFileContent),
                TargetDocumentFormat = of
            };

            var apiTask = Task.Run(() => WebAPICall(accj));

            return(apiTask.Result);
        }
        public async Task <IHttpActionResult> Post(Job job)
        {
            try
            {
                Guid userId = RoboBrailleProcessor.getUserIdFromJob(this.Request.Headers.Authorization.Parameter);
                job.UserId = userId;
                Guid jobId = Guid.Empty;
                switch (job.GetType().Name)
                {
                case nameof(AccessibleConversionJob):
                    jobId = await(new AccessibleConversionRepository().SubmitWorkItem((AccessibleConversionJob)job));
                    break;

                case nameof(AudioJob):
                    jobId = await(new AudioRepository().SubmitWorkItem((AudioJob)job));
                    break;

                case nameof(BrailleJob):
                    jobId = await(new BrailleRepository().SubmitWorkItem((BrailleJob)job));
                    break;

                case nameof(DaisyJob):
                    jobId = await(new DaisyRepository().SubmitWorkItem((DaisyJob)job));
                    break;

                case nameof(DocumentStructureJob):
                    jobId = await(new DocumentStructureRepository().SubmitWorkItem((DocumentStructureJob)job));
                    break;

                case nameof(EBookJob):
                    jobId = await(new EBookRepository().SubmitWorkItem((EBookJob)job));
                    break;

                case nameof(HTMLtoPDFJob):
                    jobId = await(new HTMLtoPDFRepository().SubmitWorkItem((HTMLtoPDFJob)job));
                    break;

                case nameof(HTMLToTextJob):
                    jobId = await(new HTMLToTextRepository().SubmitWorkItem((HTMLToTextJob)job));
                    break;

                case nameof(MSOfficeJob):
                    jobId = await(new MSOfficeRepository().SubmitWorkItem((MSOfficeJob)job));
                    break;

                case nameof(OcrConversionJob):
                    jobId = await(new OcrConversionRepository().SubmitWorkItem((OcrConversionJob)job));
                    break;

                case nameof(SignLanguageJob):
                    jobId = await(new SignLanguageRepository().SubmitWorkItem((SignLanguageJob)job));
                    break;

                case nameof(TranslationJob):
                    jobId = await(new TranslationRepository().SubmitWorkItem((TranslationJob)job));
                    break;

                case nameof(AmaraSubtitleJob):
                    jobId = await(new AmaraSubtitleRepository().SubmitWorkItem((AmaraSubtitleJob)job));
                    break;

                default: break;
                }
                return(Ok(jobId.ToString("D")));
            }
            catch (Exception e)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(string.Format("Internal error: {0}", e)),
                    ReasonPhrase = e.Message
                };
                throw new HttpResponseException(resp);
            }
        }
Example #13
0
        public void TestBraille()
        {
            //setup
            Encoding enc = RoboBrailleProcessor.GetEncodingByCountryCode((Language)Enum.Parse(typeof(Language), language, true));

            resultPath = InputSourceRepository.GetTestResultDirectory() + @"\Braille-" + language + "-" + contraction + "-" + format;
            Directory.CreateDirectory(resultPath);
            InputSourceRepository isr = new InputSourceRepository();

            File.WriteAllBytes(brailleTest, enc.GetBytes(isr.GetTestForLanguage(language)));

            PageNumbering pn = PageNumbering.none;

            if (((OutputFormat)Enum.Parse(typeof(OutputFormat), format, true)).Equals(OutputFormat.Pef))
            {
                charsPerLine = new Random().Next(25, 33);
                linesPerPage = new Random().Next(25, 33);
                switch (new Random().Next(0, 2))
                {
                case 0: pn = PageNumbering.none; break;

                case 1: pn = PageNumbering.left; break;

                case 2: pn = PageNumbering.right; break;

                default: break;
                }
            }

            BrailleJob brj = new BrailleJob()
            {
                Id                = Guid.NewGuid(),
                FileContent       = File.ReadAllBytes(brailleTest),
                UserId            = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension     = ".txt",
                FileName          = "testBraille",
                MimeType          = "plaint/text",
                Status            = JobStatus.Started,
                SubmitTime        = DateTime.Now,
                DownloadCounter   = 0,
                InputFileHash     = new byte[8],
                BrailleLanguage   = (Language)Enum.Parse(typeof(Language), language, true),
                BrailleFormat     = BrailleFormat.sixdot,
                CharactersPerLine = charsPerLine,
                LinesPerPage      = linesPerPage,
                Contraction       = (BrailleContraction)Enum.Parse(typeof(BrailleContraction), contraction, true),
                ConversionPath    = ConversionPath.texttobraille,
                OutputFormat      = (OutputFormat)Enum.Parse(typeof(OutputFormat), format, true),
                PageNumbering     = pn
            };

            if (language == "daDK")
            {
                switch (contraction)
                {
                case "small": contraction = "Lille"; break;

                case "large": contraction = "Grade2"; break;

                case "full": contraction = "Grade1"; break;

                default: break;
                }
            }
            if (language == "nnNO")
            {
                switch (contraction)
                {
                case "level0": contraction = "Grade1"; break;

                case "level1": contraction = "Kortskrift1"; break;

                case "level2": contraction = "Kortskrift2"; break;

                default: break;
                }
                language = "nbNO";
            }
            string        destFile = Guid.NewGuid().ToString() + ".txt";
            SensusRequest sr       = new SensusRequest()
            {
                Process         = "Braille",
                SubProcess      = contraction,
                Option          = format,
                Language        = language.ToLowerInvariant().Insert(2, "-"),
                Prefix          = "",
                RequesterID     = "sensus-test",
                FTPServer       = "2.109.50.19",
                FTPUser         = "******",
                FTPPassword     = "******",
                SourcePath      = brailleTest,
                DestinationFile = destFile
            };

            //act
            var apiTask = Task.Run(() => WebAPICall(brj));

            //var ftpTask = Task.Run(() => FTPCall(sr));
            //Task.WaitAll(new Task[] { apiTask, ftpTask });
            byte[] apiRes = apiTask.Result;
            //byte[] ftpRes =  ftpTask.Result;

            //assert
            //NUnit.Framework.Assert.IsNotNull(ftpRes);
            //string expected = enc.GetString(ftpRes).Trim();
            NUnit.Framework.Assert.IsNotNull(apiRes);
            string result = enc.GetString(apiRes).Trim();
            //byte assertion fails because the files are not the same encoding

            //NUnit.Framework.Assert.AreEqual(ftpRes, apiRes);
            //NUnit.Framework.Assert.AreEqual(expected,result);
        }
        public void TestAudio()
        {
            //setup
            Language lang = (Language)Enum.Parse(typeof(Language), language, true);
            resultPath = InputSourceRepository.GetTestResultDirectory() + @"\Audio-" + language;
            Directory.CreateDirectory(resultPath);
            InputSourceRepository isr = new InputSourceRepository();
            File.WriteAllBytes(audioTest, RoboBrailleProcessor.GetEncodingByCountryCode(lang).GetBytes(isr.GetTestForLanguage(language)));

            AudioJob auj = new AudioJob()
            {
                Id = Guid.NewGuid(),
                FileContent = File.ReadAllBytes(audioTest),
                UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"),
                FileExtension = ".txt",
                FileName = "testAudio",
                MimeType = "plaint/text",
                Status = JobStatus.Started,
                SubmitTime = DateTime.Now,
                DownloadCounter = 0,
                InputFileHash = new byte[8],
                AudioLanguage = lang,
                FormatOptions = AudioFormat.Mp3,
                SpeedOptions = AudioSpeed.Normal,
                VoicePropriety = new VoicePropriety[] { VoicePropriety.None }
            };

            string destFile = Guid.NewGuid().ToString() + ".txt";
            SensusRequest sr = new SensusRequest()
            {
                Process = "MP3",
                Option = "", // + ++ +++ - -- ---
                Language = language.ToLowerInvariant().Insert(2, "-"),
                Gender = "",
                Age = "",
                Prefix = "",
                RequesterID = "sensus-test",
                FTPServer = "2.109.50.19",
                FTPUser = "******",
                FTPPassword = "******",
                SourcePath = audioTest,
                DestinationFile = destFile
            };
            //act
            var apiTask = Task.Run(() => WebAPICall(auj));
            var ftpTask = Task.Run(() => FTPCall(sr));

            Task.WaitAll(new Task[] { apiTask, ftpTask });
            byte[] apiRes = apiTask.Result;
            byte[] ftpRes = ftpTask.Result;

            //assert
            NUnit.Framework.Assert.IsNotNull(ftpRes);
            //string expected = RoboBrailleProcessor.GetEncodingByCountryCode((Language)Enum.Parse(typeof(Language), language, true)).GetString(ftpRes).Trim();
            //string result = Encoding.UTF8.GetString(apiRes).Trim();
            //byte assertion fails because the files are not the same encoding

            File.WriteAllBytes(resultPath + @"\api.mp3", apiRes);
            File.WriteAllBytes(resultPath + @"\ftp.mp3", ftpRes);
            NUnit.Framework.Assert.AreEqual(ftpRes, apiRes);
            //NUnit.Framework.Assert.AreEqual(expected, result);
        }