const express = require('express'); const axios = require('axios'); const { parseStudentData } = require('./contentModel.js'); const app = express(); const PORT = 7860; // Middleware app.use(express.static('public')); app.use(express.urlencoded({ extended: true })); app.use((req, res, next) => { res.header({ "Access-Control-Allow-Origin": "106.77.189.65", "Access-Control-Allow-Methods": "GET, OPTIONS", "Access-Control-Allow-Headers": "Content-Type", }); next(); }); // API Endpoint app.get('/fetch-regno-:regno', async (req, res) => { try { const { regno } = req.params; // Validate registration number if (!/^\d{11}$/.test(regno)) { return res.status(400).json({ error: "Invalid registration number format", example: "22104134026" }); } // Fetch data with retries const html = await fetchWithRetries(regno); if (!html) return res.status(404).json({ error: "Result not found" }); // Parse and return const result = parseStudentData(html, regno); res.json(result); } catch (error) { res.status(500).json({ error: "Server error", details: error.message }); } }); // Search Endpoint (Web Interface) app.get('/search', async (req, res) => { try { const regno = req.query.regno; if (!regno) return res.redirect('/'); const apiResponse = await axios.get(`http://localhost:${PORT}/fetch-regno-${regno}`); const result = apiResponse.data; res.send(`
Name: ${result.student_name}
Registration No: ${regno}
SGPA: ${result.sgpa}
College: ${result.college_name}
Course: ${result.course_name}
${error.response?.data?.error || 'Something went wrong'}
Try Again