From 2505e145733edaa1b3a4aa7cd083f2dd58b09b8e Mon Sep 17 00:00:00 2001 From: Christopher Willis Date: Sat, 26 Jan 2019 17:03:15 -0600 Subject: [PATCH 1/4] get products/users functions --- index.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ state.js | 12 ++++++------ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 8b13789..c112770 100644 --- a/index.js +++ b/index.js @@ -1 +1,45 @@ +var http = require('http'); +let users = require("./state").users; +let products = require("./state").products; +let server = http.createServer(messageReceived); +server.listen(8080); + +function messageReceived(req, res) { + res.writeHead(200, {'Content-Type': 'text/plain'}); + const firstTerm = req.url.split("/")[1]; + const secondTerm = req.url.split("/")[2]; + if(req.method === "GET" && secondTerm){ + let urlselected = requestSelector(firstTerm) + let user = urlselected.find(p=>p["id"] == secondTerm); + let usersJSON = JSON.stringify(user); + res.write(usersJSON); + }else if(req.method === "GET"){ + let urlselected = requestSelector(firstTerm) + let usersJSON = JSON.stringify(urlselected); + res.write(usersJSON); + }else if(req.method === "POST" && req.url === "/users"){ + let body = []; + req.on('data', (chunk) => { + body.push(chunk); + }).on('end', () => { + body = Buffer.concat(body).toString(); + let user = JSON.parse(body); + users.push(user); + }); + } + + else{ + res.write("Not Found"); + } + res.end(); +} + + +const requestSelector = (urlPath) => { + if(urlPath.toLowerCase()=="users"){ + return users; + }else if (urlPath.toLowerCase()=="products"){ + return products; + } +} \ No newline at end of file diff --git a/state.js b/state.js index ebab277..59f26ea 100644 --- a/state.js +++ b/state.js @@ -1,30 +1,30 @@ exports.users = [ { - "_id": 1, - "name": "Dale Cooper", + "id": 1, + "name": "Poopy McButts", "occupation": "FBI Agent", "avatar": "https://upload.wikimedia.org/wikipedia/en/5/50/Agentdalecooper.jpg" }, { - "_id": 2, + "id": 2, "name": "Spike Spiegel", "occupation": "Bounty Hunter", "avatar": "http://vignette4.wikia.nocookie.net/deadliestfiction/images/d/de/Spike_Spiegel_by_aleztron.jpg/revision/latest?cb=20130920231337" }, { - "_id": 3, + "id": 3, "name": "Wirt", "occupation": "adventurer", "avatar": "http://66.media.tumblr.com/5ea59634756e3d7c162da2ef80655a39/tumblr_nvasf1WvQ61ufbniio1_400.jpg" }, { - "_id": 4, + "id": 4, "name": "Michael Myers", "occupation": "Loving little brother", "avatar": "http://vignette2.wikia.nocookie.net/villains/images/e/e3/MMH.jpg/revision/latest?cb=20150810215746" }, { - "_id": 5, + "id": 5, "name": "Dana Scully", "occupation": "FBI Agent", "avatar": "https://pbs.twimg.com/profile_images/718881904834056192/WnMTb__R.jpg" From e91799bbf7afa03677ec7ab5d0c165c28d42a062 Mon Sep 17 00:00:00 2001 From: Christopher Willis Date: Sun, 27 Jan 2019 14:36:40 -0600 Subject: [PATCH 2/4] can't get post to work still --- index.js | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index c112770..9adbd82 100644 --- a/index.js +++ b/index.js @@ -5,28 +5,46 @@ let products = require("./state").products; let server = http.createServer(messageReceived); server.listen(8080); +const postChucks = (req, res,urlselected) => { + let body = []; + req.on('data', (chunk) => { + body.push(chunk); + }).on('end', () => { + body = Buffer.concat(body).toString(); + let user = JSON.parse(body); + urlselected.push(user); + }); +} + function messageReceived(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); const firstTerm = req.url.split("/")[1]; const secondTerm = req.url.split("/")[2]; + + if(firstTerm=="favicon.ico"){ + res.end(); + return + } + if(req.method === "GET" && secondTerm){ let urlselected = requestSelector(firstTerm) let user = urlselected.find(p=>p["id"] == secondTerm); - let usersJSON = JSON.stringify(user); - res.write(usersJSON); + if(!user){ + res.write("Not Found"); + }else{ + let usersJSON = JSON.stringify(user); + res.write(usersJSON); + } + }else if(req.method === "GET"){ let urlselected = requestSelector(firstTerm) let usersJSON = JSON.stringify(urlselected); res.write(usersJSON); - }else if(req.method === "POST" && req.url === "/users"){ - let body = []; - req.on('data', (chunk) => { - body.push(chunk); - }).on('end', () => { - body = Buffer.concat(body).toString(); - let user = JSON.parse(body); - users.push(user); - }); + }else if(req.method === "POST" && !secondTerm){ + let urlselected = requestSelector(firstTerm) + postChucks(req, res,urlselected); + res.write(JSON.stringify(urlselected)); + } else{ From 5d9d3aca9e3ab84c15b4d5aee2fecb763e10bb1d Mon Sep 17 00:00:00 2001 From: Christopher Willis Date: Tue, 29 Jan 2019 16:54:49 -0600 Subject: [PATCH 3/4] fixed code back to id rather than index --- index.js | 72 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 9adbd82..c152986 100644 --- a/index.js +++ b/index.js @@ -6,14 +6,34 @@ let server = http.createServer(messageReceived); server.listen(8080); const postChucks = (req, res,urlselected) => { - let body = []; - req.on('data', (chunk) => { - body.push(chunk); - }).on('end', () => { - body = Buffer.concat(body).toString(); - let user = JSON.parse(body); - urlselected.push(user); - }); + let body = []; + req.on('data', (chunk) => { + body.push(chunk); + }).on('end', () => { + body = Buffer.concat(body).toString(); + let user = JSON.parse(body); + user.id = urlselected[urlselected.length-1].id+1 + res.end(JSON.stringify(user)) + urlselected.push(user); + }); +} + +const putChucks = (req, res,urlselected,slicePosition) => { + let body = []; + req.on('data', (chunk) => { + body.push(chunk); + }).on('end', () => { + body = Buffer.concat(body).toString(); + let user = JSON.parse(body); + user.id = urlselected[slicePosition].id + res.end(JSON.stringify(user)) + urlselected[slicePosition]=(user); + }); +} + +const deleteChucks = (req, res,urlselected,slicePosition) => { + res.end("Deleted") + urlselected.splice(slicePosition,1) } function messageReceived(req, res) { @@ -28,29 +48,51 @@ function messageReceived(req, res) { if(req.method === "GET" && secondTerm){ let urlselected = requestSelector(firstTerm) - let user = urlselected.find(p=>p["id"] == secondTerm); + // let user = urlselected.find(p=>p["id"] == secondTerm); + let user = null; + if(secondTerm){ + // keeping this if statement in case path changes to what I think + // the assigment is asking + user = urlselected.find(p=>p["id"] == secondTerm); + }else{ + user = urlselected[Number(secondTerm[1])-1]; + } if(!user){ - res.write("Not Found"); + res.end("Not Found"); }else{ let usersJSON = JSON.stringify(user); - res.write(usersJSON); + res.end(usersJSON); } }else if(req.method === "GET"){ let urlselected = requestSelector(firstTerm) let usersJSON = JSON.stringify(urlselected); - res.write(usersJSON); + res.end(usersJSON); }else if(req.method === "POST" && !secondTerm){ let urlselected = requestSelector(firstTerm) postChucks(req, res,urlselected); - res.write(JSON.stringify(urlselected)); + // takes in a request, a response and an array to push the chunck to + }else if(req.method === "PUT" && secondTerm){ + let urlselected = requestSelector(firstTerm) + const slicePosition = urlselected.findIndex( (item,index) => { + return item.id == secondTerm; + }) + putChucks(req, res,urlselected,Number(slicePosition)) + + }else if(req.method === "DELETE" && secondTerm){ + let urlselected = requestSelector(firstTerm) + const slicePosition = urlselected.findIndex( (item,index) => { + return item.id == secondTerm; + }) + + deleteChucks(req, res,urlselected,Number(slicePosition)) } else{ - res.write("Not Found"); + res.end("Not Found"); } - res.end(); + } From ca3e384bdbc829f1ea596bb36a7b83f51b9c32ad Mon Sep 17 00:00:00 2001 From: Christopher Willis Date: Tue, 29 Jan 2019 16:57:32 -0600 Subject: [PATCH 4/4] fixed overspecified post bug --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index c152986..e768b71 100644 --- a/index.js +++ b/index.js @@ -68,7 +68,7 @@ function messageReceived(req, res) { let urlselected = requestSelector(firstTerm) let usersJSON = JSON.stringify(urlselected); res.end(usersJSON); - }else if(req.method === "POST" && !secondTerm){ + }else if(req.method === "POST"){ let urlselected = requestSelector(firstTerm) postChucks(req, res,urlselected); // takes in a request, a response and an array to push the chunck to