mirror of
https://github.com/skidoodle/erettsegi-browser.git
synced 2025-02-15 05:39:15 +01:00
Add download for it subjects
This commit is contained in:
parent
b097b0e5a4
commit
b0a3587df6
2 changed files with 76 additions and 21 deletions
|
@ -1,18 +1,10 @@
|
||||||
import { NextApiRequest, NextApiResponse } from 'next'
|
import { NextApiRequest, NextApiResponse } from 'next'
|
||||||
|
|
||||||
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||||
const { ev, szint, vizsgatargy, evszak, tipus } = req.query
|
const { ev, szint, vizsgatargy, evszak, tipus, file } = req.query
|
||||||
const baseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_'
|
const pdfBaseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_'
|
||||||
|
const zipBaseUrl =
|
||||||
const vizsgatargyak = {
|
'https://www.oktatas.hu/bin/content/dload/erettsegi/feladatok_'
|
||||||
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 missingParams = []
|
const missingParams = []
|
||||||
if (!ev) missingParams.push('ev')
|
if (!ev) missingParams.push('ev')
|
||||||
|
@ -43,14 +35,32 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||||
prefix = `k_${vizsgatargy}`
|
prefix = `k_${vizsgatargy}`
|
||||||
}
|
}
|
||||||
|
|
||||||
let pdfUrl
|
let pdfUrl, zipUrl
|
||||||
if (tipus === 'fl' || tipus === 'ut') {
|
if (vizsgatargy === 'inf' || vizsgatargy === 'infoism') {
|
||||||
pdfUrl = `${baseUrl}${ev}${evszak}_${szint}/${prefix}_${ev!.slice(
|
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
|
-2
|
||||||
)}${honap}_${tipus}.pdf`
|
)}${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 })
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,13 @@ import { useState, useEffect } from 'react'
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
const [pdfLink, setPdfLink] = useState<string>('')
|
const [pdfLink, setPdfLink] = useState<string>('')
|
||||||
|
const [zipLink, setZipLink] = useState<string>('')
|
||||||
const [selectedSubject, setSelectedSubject] = useState<string>('')
|
const [selectedSubject, setSelectedSubject] = useState<string>('')
|
||||||
const [selectedYear, setSelectedYear] = useState<string>('')
|
const [selectedYear, setSelectedYear] = useState<string>('')
|
||||||
const [selectedSeason, setSelectedSeason] = useState<string>('')
|
const [selectedSeason, setSelectedSeason] = useState<string>('')
|
||||||
const [selectedLevel, setSelectedLevel] = useState<string>('')
|
const [selectedLevel, setSelectedLevel] = useState<string>('')
|
||||||
const [selectedType, setSelectedType] = useState<string>('')
|
const [selectedType, setSelectedType] = useState<string>('')
|
||||||
|
const [selectedFile, setSelectedFile] = useState<string>('')
|
||||||
|
|
||||||
const subjects = [
|
const subjects = [
|
||||||
{ value: 'magyir', label: 'Magyar' },
|
{ value: 'magyir', label: 'Magyar' },
|
||||||
|
@ -32,9 +34,18 @@ export default function Home() {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(
|
let url = `/api/erettsegi?vizsgatargy=${selectedSubject}&ev=${selectedYear}&evszak=${selectedSeason}&szint=${selectedLevel}&tipus=${selectedType}`
|
||||||
`/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) {
|
if (response.ok) {
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
|
@ -43,6 +54,12 @@ export default function Home() {
|
||||||
} else {
|
} else {
|
||||||
console.error('Nincs érvényes PDF link a válaszban.')
|
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 {
|
} else {
|
||||||
console.error('Hiba történt az API hívás során.')
|
console.error('Hiba történt az API hívás során.')
|
||||||
}
|
}
|
||||||
|
@ -57,6 +74,7 @@ export default function Home() {
|
||||||
selectedSeason,
|
selectedSeason,
|
||||||
selectedLevel,
|
selectedLevel,
|
||||||
selectedType,
|
selectedType,
|
||||||
|
selectedFile,
|
||||||
])
|
])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -127,6 +145,22 @@ export default function Home() {
|
||||||
<option value="ut">Útmutató</option>
|
<option value="ut">Útmutató</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{selectedSubject === 'inf' ||
|
||||||
|
selectedSubject === 'infoism' ? (
|
||||||
|
<div className="mb-3">
|
||||||
|
<select
|
||||||
|
value={selectedFile}
|
||||||
|
onChange={(e) =>
|
||||||
|
setSelectedFile(e.target.value)
|
||||||
|
}
|
||||||
|
className="bg-[#181a1b] text-[#efefef] w-56 max-w-lg h-10 px-4 text-sm border border-[#3C4143] rounded-lg focus:outline-none"
|
||||||
|
>
|
||||||
|
<option value="">Fájl</option>
|
||||||
|
<option value="forras">Forrás</option>
|
||||||
|
<option value="megoldas">Megoldás</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
<button
|
<button
|
||||||
className="mt-3 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
|
className="mt-3 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
|
||||||
onClick={
|
onClick={
|
||||||
|
@ -135,6 +169,17 @@ export default function Home() {
|
||||||
>
|
>
|
||||||
Megnyitás
|
Megnyitás
|
||||||
</button>
|
</button>
|
||||||
|
{selectedSubject === 'inf' ||
|
||||||
|
selectedSubject === 'infoism' ? (
|
||||||
|
<button
|
||||||
|
className="mt-3 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
|
||||||
|
onClick={
|
||||||
|
zipLink ? () => window.open(zipLink) : () => {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Letöltés
|
||||||
|
</button>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue