60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const cors = require('cors');
|
|
const fs = require('fs');
|
|
|
|
const app = express();
|
|
const port = 3001;
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
const scoresFilePath = './scores.json';
|
|
|
|
/* Read scores from file. */
|
|
const readScores = () => {
|
|
try {
|
|
console.log('Reading scores from file...');
|
|
const data = fs.readFileSync(scoresFilePath, 'utf8');
|
|
console.log('Scores read successfully.');
|
|
return JSON.parse(data);
|
|
} catch (error) {
|
|
console.error('Error reading scores:', error);
|
|
return [];
|
|
}
|
|
};
|
|
|
|
/* Write scores to file. */
|
|
const writeScores = (scores) => {
|
|
try {
|
|
console.log('Writing scores to file...');
|
|
fs.writeFileSync(scoresFilePath, JSON.stringify(scores, null, 2));
|
|
console.log('Scores written successfully.');
|
|
} catch (error) {
|
|
console.error('Error writing scores:', error);
|
|
}
|
|
};
|
|
|
|
app.get('/api/scores', (req, res) => {
|
|
console.log('GET /api/scores request received');
|
|
const scores = readScores();
|
|
res.json(scores);
|
|
});
|
|
|
|
app.post('/api/scores', (req, res) => {
|
|
console.log('POST /api/scores request received');
|
|
const { name, score } = req.body;
|
|
console.log('New score:', { name, score });
|
|
const scores = readScores();
|
|
|
|
scores.push({ name, score });
|
|
scores.sort((a, b) => b.score - a.score);
|
|
const top10Scores = scores.slice(0, 10);
|
|
|
|
writeScores(top10Scores);
|
|
res.status(201).json({ message: 'Score saved successfully' });
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Server is running on http://localhost:${port}`);
|
|
});
|