diff --git a/scrape/parse.ts b/scrape/parse.ts index 2d569f5..4e6db06 100644 --- a/scrape/parse.ts +++ b/scrape/parse.ts @@ -14,14 +14,16 @@ import ExcelJS from "exceljs" -import parseV1V2 from "./parse/v1_v2.js"; +//import parseV1V2 from "./parse/v1_v2.js"; import parseV3 from "./parse/v3.js"; +import generateArchivedV1_V2 from "./parse/archived/v1_v2.js"; export default async function parseThisShit(downloadedFilePath: string) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(downloadedFilePath); - await parseV1V2(workbook); + //await parseV1V2(workbook); + await generateArchivedV1_V2(); await parseV3(workbook, downloadedFilePath); } diff --git a/scrape/parse/archived/v1_v2.ts b/scrape/parse/archived/v1_v2.ts new file mode 100644 index 0000000..4042ef5 --- /dev/null +++ b/scrape/parse/archived/v1_v2.ts @@ -0,0 +1,78 @@ +import fs from "fs" + +const CLASSES: string[] = [ + "A1a", "A1b", "A1c", "C1a", "C1b", "C1c", "A2", "C2a", "C2b", "C2c", "E2", "C3a", "C3b", "C3c", "E3" +]; + +function formatDate(date: Date): string { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + return `${year}-${month}-${day}`; +} + +const EXAMPLE_SCHEDULE: (string | null)[] = [ + "Verze 1 API bude ukončena", + "Prosím aktualizujte si aplikaci.", + "Po ukončení Vám nebude fungovat", + "mimořádný rozvrh.", + null, + "Pokud jste vývojář aplikace,", + "podívejte se na dokumentaci na", + "jecnarozvrh.jzitnik.dev", + null, + null +]; + +function getCurrentWeekMondayToFriday(referenceDate: Date = new Date()): string[] { + const date = new Date(referenceDate); + const day = date.getDay(); + const diffToMonday = day === 0 ? -6 : 1 - day; + const monday = new Date(date); + monday.setDate(date.getDate() + diffToMonday); + const week: string[] = []; + for (let i = 0; i < 5; i++) { + const d = new Date(monday); + d.setDate(monday.getDate() + i); + week.push(formatDate(d)); + } + return week; +} + +interface ScheduleData { + schedule: Record[]; + props: { date: string; priprava: boolean }[]; + status: { lastUpdated: string }; +} + +export default function generateArchivedV1_V2(): void { + const dates = getCurrentWeekMondayToFriday(); + const currentDate = new Date(); + const lastUpdated = currentDate.getHours().toString().padStart(2, "0") + ":" + currentDate.getMinutes().toString().padStart(2, "0"); + + const data: ScheduleData = { + schedule: [], + props: [], + status: { + lastUpdated + } + }; + + for (const date of dates) { + data.props.push({ + date, + priprava: false + }); + + const d: Record = {}; + + for (const cls of CLASSES) { + d[cls] = EXAMPLE_SCHEDULE; + } + + data.schedule.push(d); + } + + fs.writeFileSync("volume/db/v1.json", JSON.stringify(data, null, 2)); + fs.writeFileSync("volume/db/v2.json", JSON.stringify(data, null, 2)); +} diff --git a/web/content/posts/api/usage/index.md b/web/content/posts/api/usage/index.md index 163dc4b..374cfd4 100644 --- a/web/content/posts/api/usage/index.md +++ b/web/content/posts/api/usage/index.md @@ -6,6 +6,8 @@ tags: ["api", "docs"] Vítejte v dokumentaci pro API systému Ječná Rozvrh. Toto API poskytuje programový přístup k rozvrhům, suplování a dalším informacím. +OpenAPI spec a SwaggerUI je v přípravě! + ## Oficiální knihovna [Oficiální knihovna pro komunikaci s Ječná Rozvrh API](../lib) @@ -36,16 +38,14 @@ API je verzované, aby byla zajištěna zpětná kompatibilita. Zde je seznam do Toto je aktuální a doporučená verze API. Obsahuje velké změny oproti V2 a obsahuje nové data. -- ### [Verze 2 (v2)](../v2) - **Status:** Stabilní +- ### [~Verze 2 (v2)~](../v2) + **Status:** Archivováno (API již není v provozu) **Endpoint:** `/versioned/v2` - ### [~Verze 1 (v1)~](../v1) - **Status:** Deprecated + **Status:** Archivováno (API již není v provozu) **Endpoint:** `/versioned/v1` - Verze 1 bude v budoucnu odstaněna. Migrujte na novější verze - --- ## Nezařazené Endpointy diff --git a/web/content/posts/api/v1/index.md b/web/content/posts/api/v1/index.md index 75f5da8..758090e 100644 --- a/web/content/posts/api/v1/index.md +++ b/web/content/posts/api/v1/index.md @@ -5,8 +5,8 @@ tags: ["api", "docs", "v1"] hiddenInHomelist: true --- -{{< admonition type="warning" title="Deprecated" >}} -Tato verze je **deprecated**. Prosím nepoužívejte ji, bude brzy odstraněna. +{{< admonition type="warning" title="Archoviváno" >}} +Tato verze je **archovována**. API již není v provozu. {{< /admonition >}} Tato stránka detailně popisuje **Verzi 1 (v1)** API Ječná Rozvrh. diff --git a/web/content/posts/api/v2/index.md b/web/content/posts/api/v2/index.md index 1415959..4e9b4a2 100644 --- a/web/content/posts/api/v2/index.md +++ b/web/content/posts/api/v2/index.md @@ -5,6 +5,10 @@ tags: ["api", "docs", "v2"] hiddenInHomelist: true --- +{{< admonition type="warning" title="Archoviváno" >}} +Tato verze je **archovována**. API již není v provozu. +{{< /admonition >}} + Tato stránka detailně popisuje **Verzi 2 (v2)** API Ječná Rozvrh. ## Endpoint: `GET /versioned/v2`