From 52aafc384de541e4e5b8a93d3c5a239b0747e40f Mon Sep 17 00:00:00 2001 From: pritesh Date: Tue, 19 Sep 2023 14:37:55 +0530 Subject: [PATCH] week-2-assignment submission --- 02-nodejs/authenticationServer.js | 69 +++++++++++++++++++++++++++++++ 02-nodejs/fileServer.js | 23 +++++++++++ 02-nodejs/package-lock.json | 36 ++++++++-------- 02-nodejs/todoServer.js | 59 ++++++++++++++++++++++++++ 4 files changed, 169 insertions(+), 18 deletions(-) diff --git a/02-nodejs/authenticationServer.js b/02-nodejs/authenticationServer.js index c5278b94..22efb686 100644 --- a/02-nodejs/authenticationServer.js +++ b/02-nodejs/authenticationServer.js @@ -34,4 +34,73 @@ const PORT = 3000; const app = express(); // write your logic here, DONT WRITE app.listen(3000) when you're running tests, the tests will automatically start the server +var users = []; + +app.use(express.json()); +app.post("/signup", (req, res) => { + var user = req.body; + let userAlreadyExists = false; + for (var i = 0; i { + var user = req.body; + let userFound = null; + for (var i = 0; i { + var email = req.headers.email; + var password = req.headers.password; + let userFound = false; + for (var i = 0; i { + fs.readdir(path.join(__dirname, './files/'), (err, files) => { + if(err) { + return res.status(500).json({error: "Failed to retrieve files"}); + } + res.json(files); + }); +}); + +app.get('/file/:filename', (req, res) => { + const filepath = path.join(__dirname, './files/', req.params.filename); + + fs.readFile(filepath, 'utf8', (err, data) => { + if(err) { + return res.status(404).send('File not found'); + } + res.send(data); + }); +}); + +app.get('*', (req, res) => { + res.status(404).send('Route not found'); +}); module.exports = app; diff --git a/02-nodejs/package-lock.json b/02-nodejs/package-lock.json index b13088b7..42ee1483 100644 --- a/02-nodejs/package-lock.json +++ b/02-nodejs/package-lock.json @@ -2891,9 +2891,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3657,9 +3657,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3939,9 +3939,9 @@ } }, "node_modules/superagent/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6482,9 +6482,9 @@ } }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7033,9 +7033,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "send": { @@ -7256,9 +7256,9 @@ } }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" diff --git a/02-nodejs/todoServer.js b/02-nodejs/todoServer.js index cffc7d60..8836a106 100644 --- a/02-nodejs/todoServer.js +++ b/02-nodejs/todoServer.js @@ -46,4 +46,63 @@ const app = express(); app.use(bodyParser.json()); +let todos = []; + +function findIndex(arr, id) { + for(var i=0; i { + res.json(todos); +}); + +app.get('/todos/:id', (req, res) => { + const todoIndex = findIndex(todos, parseInt(req.params.id)); + if(todoIndex == -1) { + res.status(404).send(); + } + else { + res.json(todos[todoIndex]); + } +}); + +app.post('/todos', (req, res) => { + const newTodo = { + id: Math.floor(Math.random() * 10000), + title: req.body.title, + description: req.body.description + } + todos.push(newTodo); + res.status(201).json(newTodo); +}); + +app.put('/todos/:id', (req, res) => { + const todoIndex = findIndex(todos, parseInt(req.params.id)); + if(todoIndex == -1) { + res.status(404).send(); + } + else { + todos[todoIndex].title = req.body.title, + todos[todoIndex].description = req.body.description, + res.json(todos[todoIndex]); + } +}); + +app.delete('/todos/:id', (req, res) => { + const todoIndex = findIndex(todos, parseInt(req.params.id)); + if(todoIndex == -1) { + res.status(404).send(); + } + else { + todos.splice(todoIndex, 1); + res.status(200).send(); + } +}); + +app.use((req, res, next) => { + res.status(404).send(); +}); + module.exports = app;