erettsegi-browser/src/pages/api/erettsegi.ts

118 lines
3.4 KiB
TypeScript

import { NextApiRequest, NextApiResponse } from 'next'
export default function handler(req: NextApiRequest, res: NextApiResponse) {
const { ev, szint, vizsgatargy, idoszak, tipus, file } = req.query
const baseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_'
const missingParams = []
if (!ev) missingParams.push('ev')
if (!szint) missingParams.push('szint')
if (!idoszak) missingParams.push('idoszak')
if (!vizsgatargy) missingParams.push('vizsgatargy')
if (!tipus) missingParams.push('tipus')
if (missingParams.length > 0) {
return res
.status(400)
.json({ error: `Hiányzó paraméterek: ${missingParams.join(', ')}` })
}
if (ev! <= '2005') {
return res.status(400).json({ error: 'Érvénytelen év' })
}
switch (vizsgatargy) {
case 'magyir':
case 'mat':
case 'tort':
case 'angol':
case 'nemet':
case 'inf':
case 'infoism':
break
default:
return res.status(400).json({ error: 'Érvénytelen vizsgatárgy' })
}
switch (tipus) {
case 'fl':
case 'ut':
break
default:
return res.status(400).json({ error: 'Érvénytelen típus' })
}
let honap
switch (idoszak) {
case 'osz':
honap = 'okt'
break
case 'tavasz':
honap = 'maj'
break
default:
return res.status(400).json({ error: 'Érvénytelen időszak' })
}
let prefix
switch (szint) {
case 'emelt':
prefix = `e_${vizsgatargy}`
break
case 'kozep':
prefix = `k_${vizsgatargy}`
break
default:
return res.status(400).json({ error: 'Érvénytelen szint' })
}
const forras = 'for'
const megoldas = 'meg'
const shortev = ev!.slice(-2)
let pdfUrl, zipUrl
switch (vizsgatargy) {
case 'inf':
case 'infoism':
switch (file) {
case 'forras':
switch (tipus) {
case 'fl':
zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${forras}_${shortev}${honap}_${tipus}.zip`
pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf`
break
case 'ut':
zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${forras}_${shortev}${honap}_fl.zip`
pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf`
break
default:
return res.status(400).json({ error: 'Érvénytelen fájl' })
}
break
case 'megoldas':
switch (tipus) {
case 'ut':
zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${megoldas}_${shortev}${honap}_${tipus}.zip`
pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf`
break
case 'fl':
zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${megoldas}_${shortev}${honap}_ut.zip`
pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf`
break
default:
return res.status(400).json({ error: 'Érvénytelen fájl' })
}
break
default:
return res.status(400).json({ error: 'Érvénytelen fájl' })
}
break
default:
pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${ev!.slice(
-2
)}${honap}_${tipus}.pdf`
break
}
res.status(200).json({ pdfUrl, zipUrl })
}