60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
import express from 'express';
|
|
import { fetchAllLevels as fetchNLWLevels } from './nlw.js';
|
|
import { fetchAllLevels as fetchIDSLevels } from './ids.js';
|
|
|
|
let levels = {
|
|
nlw: {
|
|
regular: [],
|
|
pending: [],
|
|
platformer: [],
|
|
},
|
|
ids: {
|
|
regular: [],
|
|
},
|
|
};
|
|
|
|
async function fetchSheets() {
|
|
const nlw = await fetchNLWLevels();
|
|
const ids = await fetchIDSLevels();
|
|
levels = { nlw, ids };
|
|
}
|
|
|
|
await fetchSheets();
|
|
setInterval(fetchSheets, 1000 * 60 * 60);
|
|
|
|
const app = express();
|
|
|
|
app.get('/', (req, res) => {
|
|
res.redirect('https://git.oat.zone/oat/nlw-api');
|
|
});
|
|
|
|
app.get('/list', (req, res) => {
|
|
const type = req.query.type;
|
|
|
|
let list;
|
|
if (!type || type === '' || type === 'regular') {
|
|
list = levels.nlw.regular;
|
|
} else if (type === 'platformer') {
|
|
list = levels.nlw.platformer;
|
|
} else if (type === 'pending') {
|
|
list = levels.nlw.pending;
|
|
} else if (type === 'all') {
|
|
return res.json([
|
|
...levels.nlw.regular.map(l => ({ type: 'regular', ...l })),
|
|
...levels.nlw.platformer.map(l => ({ type: 'platformer', ...l })),
|
|
...levels.nlw.pending.map(l => ({ type: 'pending', ...l })),
|
|
]);
|
|
} else {
|
|
return res.status(400);
|
|
}
|
|
|
|
res.json(list);
|
|
});
|
|
|
|
app.get('/ids', (req, res) => {
|
|
res.json(levels.ids.regular);
|
|
});
|
|
|
|
const port = process.env.PORT || 8080
|
|
app.listen(port);
|
|
console.log(`lisening on port ${port}`); |