Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lage Docker-image med API for ValidateSpellCheckEpub #1

Open
josteinaj opened this issue Jun 21, 2022 · 6 comments
Open

Lage Docker-image med API for ValidateSpellCheckEpub #1

josteinaj opened this issue Jun 21, 2022 · 6 comments
Assignees
Labels
Middels jobb Aktivitet som gjennomføres i løpet av en periode, og tar mer enn en uke å gjøre Middels prioritet Systemarkitektur

Comments

@josteinaj
Copy link
Member

josteinaj commented Jun 21, 2022

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
@josteinaj
Copy link
Member Author

Bruke zippet EPUB som input. Nordisk EPUB, ikke NLBPUB.

@josteinaj
Copy link
Member Author

josteinaj commented Nov 22, 2022

  1. lage en liten spesifikasjon først, for å definere hva dette verktøyet skal gjøre helt konkret
  2. implementere på nytt i .NET 7
  3. støtte både API i Docker, og CLI i Windows
  4. POST for å sende inn HTML-fil for bruk fra produksjonssystemet
  5. POST for å sende inn EPUB-fil (kanskje ikke nødvendig)
  6. CLI for å sende inn EPUB-fil for å kjøre i Windows på produsent-PCer

@josteinaj
Copy link
Member Author

@usama49 jeg har lagt inn krav på toppen av denne saken. Ser det ok ut?

CC @eliseaas

@eliseaas
Copy link
Collaborator

eliseaas commented Dec 16, 2022

Ser bra ut. Bare et par kommentarer.

sjekker at strukturen er riktig (hva ligger i dette egentlig?)

TOC-struktur, nivå h1-h3

har stavekontroll (både norsk og engelsk?) med en ordliste hvor man kan legge til ord etterhvert

Både norsk og engelsk støttet i dag. Norsk språkkode som støttes i dag er "no", kan det legges inn støtte for bokmål- og nynorskspesifikke språkkoder i tillegg til "no"?

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?)

Ikke helt sånn det fungerer i dag. Vi legger epub-filene i en mappe og kjører deretter EXE-fila

@josteinaj
Copy link
Member Author

TOC-struktur, nivå h1-h3

Dette tror jeg sjekkes av nordisk validering allerede? Eller er det noe den ikke fanger opp?

kan det legges inn støtte for bokmål- og nynorskspesifikke språkkoder i tillegg til "no"?

Det bør vi kunne få til. I første omgang samme ordliste for bokmål og nynorsk, men at språkkodene for bokmål og nynorsk håndteres på samme måte som "no".

Ikke helt sånn det fungerer i dag. Vi legger epub-filene i en mappe og kjører deretter EXE-fila

Ok, det er for så vidt like greit 👍.

@eliseaas
Copy link
Collaborator

eliseaas commented Jan 2, 2023

TOC-struktur, nivå h1-h3

Dette tror jeg sjekkes av nordisk validering allerede? Eller er det noe den ikke fanger opp?

Ja, den fanger vel opp det samme, men at logisk sjekk viser oss strukturen i samme oversikt som alt annet gjør det lettere å fange opp feil.

@josteinaj josteinaj changed the title Lage Docker-image med API Lage Docker-image med API for ValidateSpellCheckEpub Sep 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Middels jobb Aktivitet som gjennomføres i løpet av en periode, og tar mer enn en uke å gjøre Middels prioritet Systemarkitektur
Projects
None yet
Development

No branches or pull requests

3 participants