nlw-api/index.js

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}`);