diff --git a/src/pages/api/erettsegi.ts b/src/pages/api/erettsegi.ts index 8bfbf4a..02f9e17 100644 --- a/src/pages/api/erettsegi.ts +++ b/src/pages/api/erettsegi.ts @@ -1,18 +1,10 @@ import { NextApiRequest, NextApiResponse } from 'next' export default function handler(req: NextApiRequest, res: NextApiResponse) { - const { ev, szint, vizsgatargy, evszak, tipus } = req.query - const baseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_' - - const vizsgatargyak = { - k_magyir: 'e_magyir', - k_mat: 'e_mat', - k_tort: 'e_tort', - k_angol: 'e_angol', - k_nemet: 'e_nemet', - k_inf: 'e_inf', - k_infoism: 'e_infoism', - } + const { ev, szint, vizsgatargy, evszak, tipus, file } = req.query + const pdfBaseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_' + const zipBaseUrl = + 'https://www.oktatas.hu/bin/content/dload/erettsegi/feladatok_' const missingParams = [] if (!ev) missingParams.push('ev') @@ -43,14 +35,32 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { prefix = `k_${vizsgatargy}` } - let pdfUrl - if (tipus === 'fl' || tipus === 'ut') { - pdfUrl = `${baseUrl}${ev}${evszak}_${szint}/${prefix}_${ev!.slice( + let pdfUrl, zipUrl + if (vizsgatargy === 'inf' || vizsgatargy === 'infoism') { + if (file === 'forras' && tipus === 'fl') { + zipUrl = `${zipBaseUrl}${ev}${evszak}_${szint}/${prefix}for_${ev!.slice( + -2 + )}${honap}_${tipus}.zip` + } else if (file === 'megoldas' && tipus === 'ut') { + zipUrl = `${zipBaseUrl}${ev}${evszak}_${szint}/${prefix}meg_${ev!.slice( + -2 + )}${honap}_${tipus}.zip` + } else if (file === 'megoldas' && tipus === 'fl') { + zipUrl = `${zipBaseUrl}${ev}${evszak}_${szint}/${prefix}meg_${ev!.slice( + -2 + )}${honap}_ut.zip` + } else if (file === 'forras' && tipus === 'ut') { + zipUrl = `${zipBaseUrl}${ev}${evszak}_${szint}/${prefix}for_${ev!.slice( + -2 + )}${honap}_fl.zip` + } else { + return res.status(400).json({ error: 'Érvénytelen fájltípus' }) + } + } else { + pdfUrl = `${pdfBaseUrl}${ev}${evszak}_${szint}/${prefix}_${ev!.slice( -2 )}${honap}_${tipus}.pdf` - } else { - return res.status(400).json({ error: 'Érvénytelen típus' }) } - res.status(200).json({ pdfUrl }) + res.status(200).json({ pdfUrl, zipUrl }) } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 23a2998..f3d05da 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,11 +2,13 @@ import { useState, useEffect } from 'react' export default function Home() { const [pdfLink, setPdfLink] = useState('') + const [zipLink, setZipLink] = useState('') const [selectedSubject, setSelectedSubject] = useState('') const [selectedYear, setSelectedYear] = useState('') const [selectedSeason, setSelectedSeason] = useState('') const [selectedLevel, setSelectedLevel] = useState('') const [selectedType, setSelectedType] = useState('') + const [selectedFile, setSelectedFile] = useState('') const subjects = [ { value: 'magyir', label: 'Magyar' }, @@ -32,9 +34,18 @@ export default function Home() { useEffect(() => { const fetchData = async () => { try { - const response = await fetch( - `/api/erettsegi?vizsgatargy=${selectedSubject}&ev=${selectedYear}&evszak=${selectedSeason}&szint=${selectedLevel}&tipus=${selectedType}` - ) + let url = `/api/erettsegi?vizsgatargy=${selectedSubject}&ev=${selectedYear}&evszak=${selectedSeason}&szint=${selectedLevel}&tipus=${selectedType}` + + if ( + selectedSubject === 'inf' || + selectedSubject === 'infoism' + ) { + url += `&file=${selectedFile}` + } else { + url += `&file="none"` + } + + const response = await fetch(url) if (response.ok) { const data = await response.json() @@ -43,6 +54,12 @@ export default function Home() { } else { console.error('Nincs érvényes PDF link a válaszban.') } + + if (data.zipUrl) { + setZipLink(data.zipUrl) + } else { + console.error('Nincs érvényes ZIP link a válaszban.') + } } else { console.error('Hiba történt az API hívás során.') } @@ -57,6 +74,7 @@ export default function Home() { selectedSeason, selectedLevel, selectedType, + selectedFile, ]) return ( @@ -127,6 +145,22 @@ export default function Home() { + {selectedSubject === 'inf' || + selectedSubject === 'infoism' ? ( +
+ +
+ ) : null} + {selectedSubject === 'inf' || + selectedSubject === 'infoism' ? ( + + ) : null}