Skip to content

Lage Docker-image med API for ValidateSpellCheckEpub #1

@josteinaj

Description

@josteinaj

Lage et API hvor man kan sende inn en EPUB, og få ut en rapport. Antageligvis bør denne koden være en egen funksjon sånn at man kan kjøre en bok om gangen:

UniqueWord_with_language_tag_list.Clear();
BookLanguagesTag.Clear();
BookTotalWords = 0;
i = i + 1;
bookFolderName = Path.GetFileNameWithoutExtension(filePath);
string BookReportFolder = Program.ReportOutputFolderPath + "\\" + bookFolderName;
string BookReportFile = BookReportFolder + "\\" + bookFolderName + ".txt";
FinalReportlist.Add("\n************** Bok nummer = (" + bookFolderName + ")*************");
Console.WriteLine("\n"+i + " (" + bookFolderName + ") start");
ProcessEpub(filePath);
CheckTag(filePath); // code for structure check
CheckCharacter(filePath); // code for character check
ProcessHtmlFiles(filePath); //code for spell check
if (!Directory.Exists(BookReportFolder))
{
DirectoryInfo di = Directory.CreateDirectory(BookReportFolder);
}
// writing report for each book
TextWriter TxtFile_report = new StreamWriter(BookReportFile, false, Encoding.UTF8);
if (bookHas_errors == true)
{
TxtFile_report.WriteLine("********book has xml errors and report is not complete******");
}
foreach (string allreport in FinalReportlist)
{
//Console.WriteLine(allreport);
TxtFile_report.WriteLine(allreport);
}
TxtFile_report.Close();
FinalReportlist.Clear();
Console.WriteLine("finished");


Vi hadde et møte hvor vi diskuterte krav (se #2).

Generelle krav:

  • sjekke de samme tingene som den vi har nå
    • sjekker at lang (og xml:lang?) har riktig språkkode
    • sjekker at strukturen er riktig (hva ligger i dette egentlig?)
    • sjekker om det er brukt noen uvanlige unicode-tegn
    • lager oversikt over hvilke attributter og elementer som er brukt
    • har stavekontroll (både norsk og engelsk?) med en ordliste hvor man kan legge til ord etterhvert
  • støtte en zippet EPUB (altså en fil) som input (som i dag)
  • støtte en HTML-fil som input
  • støtte en unzippet EPUB (altså en mappe) som input
  • når en EPUB (zippet eller unzippet) er input:
    • sjekk filen META-INF/container.xml, den peker på OPF-fila
    • gå gjennom <manifest>-elementet i OPF-fila for å finne alle HTML-filer
  • kunne kjøres fra kommandolinja som i dag (se beskrivelse under)
  • kunne kjøres som en tjeneste med API i Docker (se beskrivelse under)

Krav for kommandolinje:

  • Bør være en EXE-fil som ikke har tilhørende DLL-filer og ikke trenger noen installasjon (en "portabel EXE-fil")
  • Dra-og-slipp en EPUB (zippet eller unzippet) eller en HTML-fil på EXE-fila (er det sånn det virker i dag, med dra-og-slipp?)
  • Rapporten kan være en HTML-fil som legges i samme mappe som EXE-fila ligger i, og ha navnet [input-filnavn] - logisk sjekk.html

Krav for API i Docker:

  • ordbokfilene lastes ned når tjenesten starter

Endepunkt: GET /health

  • returnerer HTTP 503 Service Unavailable hvis ordbok-filene ikke er lastet ned fra Github
  • returnerer HTTP 200 hvis ordbok-filene er lastet ned fra Github

Endepunkt: POST /check (se beskrivelse under)

  • hvis ordbøkene er mer enn en time gamle: last ned en ny versjon fra Github

Query-parametere:

  • path (optional): absolutt sti til EPUB (unzippet eller zippet) eller HTML-fil

Body (optional):

  • en EPUB (kun zippet, ikke unzippet) eller en HTML-fil

Response:

  • Hvis hverken path eller body er definert: HTTP 400 Bad Request
  • Hvis både path eller body er definert: HTTP 400 Bad Request
  • Hvis path er definert men filen eller mappen ikke finnes: HTTP 404 Bad Request
  • Ellers, HTTP 200 OK med:
    • rapporten som HTML i body
    • Content-Type: text/html i header

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions