do some routing stuffs

This commit is contained in:
DIVISIONSolar 2024-03-14 14:52:01 -04:00
parent 2f91709179
commit bef37ca96f
Signed by: JoshS
GPG key ID: A37D037686151E97
2 changed files with 109 additions and 2 deletions

View file

@ -2,7 +2,13 @@ const express = require('express');
const router = express.Router();
const fs = require('fs');
router.get('/urls.json', (req, res) => {
router.use(express.json());
function saveUrls(urls, callback) {
fs.writeFile('src/Assets/urls.json', JSON.stringify(urls, null, 2), callback);
}
router.get('/urls', (req, res) => {
fs.readFile('src/Assets/urls.json', 'utf8', (err, data) => {
if (err) {
console.error(err);
@ -15,6 +21,107 @@ router.get('/urls.json', (req, res) => {
});
});
router.post('/urls', (req, res) => {
fs.readFile('src/Assets/urls.json', 'utf8', (err, data) => {
if (err) {
console.error(err);
res.status(500).send('Internal Server Error');
return;
}
const urls = JSON.parse(data);
const newUrl = {
link: req.body.link,
is_public: req.body.is_public
};
urls.push(newUrl);
saveUrls(urls, (err) => {
if (err) {
console.error(err);
res.status(500).send('Error saving URL');
return;
}
res.status(201).json(newUrl);
});
});
});
router.delete('/urls', (req, res) => {
const linkToDelete = req.body.link;
if (!linkToDelete) {
res.status(400).send('Please provide a link to delete');
return;
}
fs.readFile('src/Assets/urls.json', 'utf8', (err, data) => {
if (err) {
console.error(err);
res.status(500).send('Internal Server Error');
return;
}
const urls = JSON.parse(data);
const index = urls.findIndex(url => url.link === linkToDelete);
if (index !== -1) {
urls.splice(index, 1);
fs.writeFile('src/Assets/urls.json', JSON.stringify(urls, null, 2), (err) => {
if (err) {
console.error(err);
res.status(500).send('Error deleting URL');
return;
}
res.status(204).send();
});
} else {
res.status(404).send('URL not found');
}
});
});
router.patch('/urls', (req, res) => {
const linkToModify = req.body.link;
if (!linkToModify) {
res.status(400).send('Please provide a link to modify');
return;
}
fs.readFile('src/Assets/urls.json', 'utf8', (err, data) => {
if (err) {
console.error(err);
res.status(500).send('Internal Server Error');
return;
}
const urls = JSON.parse(data);
const urlToUpdate = urls.find(url => url.link === linkToModify);
if (urlToUpdate) {
if (req.body.is_public !== undefined) {
urlToUpdate.is_public = req.body.is_public;
}
saveUrls(urls, (err) => {
if (err) {
console.error(err);
res.status(500).send('Error updating URL');
return;
}
res.status(204).send();
});
} else {
res.status(404).send('URL not found');
}
});
});
router.delete('/urls', (req, res) => {
res.status(400).send('Please provide an index to delete a specific URL');
});
module.exports = {
basePath: '/',
router: router

View file

@ -47,7 +47,7 @@ function listRoutes(router) {
path = path.slice(2);
}
routes.push({
file: path.split('/')[1], // Extract file name from the path
file: path.split('/')[1],
methods: Object.keys(middleware.route.methods),
});
} else if (middleware.name === 'router') {