Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('node:fs');
- const http = require('node:http');
- const userDB = 'users.json';
- function getAllUsers() {
- return new Promise((resolve, reject) => {
- const read = fs.createReadStream(userDB);
- let users = [];
- read.on('data', (chunk) => { users += chunk; });
- read.on('end', () => {
- try {
- return resolve(JSON.parse(users));
- } catch (err) {
- return reject(err);
- }
- });
- read.on('error', (err) => { return reject(err); });
- });
- }
- function updateUsers(users) {
- fs.createWriteStream(userDB).write(JSON.stringify(users));
- }
- function userMgr(request, response, status) {
- switch (status) {
- case 'fetch': {
- return getAllUsers().then((users) => { return response.end(JSON.stringify(users)); });
- }
- case 'create': {
- let userObj = null;
- request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
- request.on('end', () => {
- getAllUsers().then((users) => {
- const userIndex = users.findIndex((user) => { return user.id == userObj.id; });
- if (userIndex == -1) {
- users.push(userObj);
- updateUsers(users);
- response.writeHead(201);
- return response.end(JSON.stringify({ message: 'User created successfully.' }));
- } else {
- response.writeHead(409);
- return response.end(JSON.stringify({ message: 'This user already exists.' }));
- }
- });
- });
- break;
- }
- case 'update': {
- let userObj = null;
- request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
- request.on('end', () => {
- getAllUsers().then((users) => {
- const userIndex = users.findIndex((user) => { return user.id == userObj.id });
- if (userIndex == -1) {
- response.writeHead(409);
- return response.end(JSON.stringify({ message: 'This user is not exists.' }));
- } else {
- users[userIndex] = userObj;
- updateUsers(users);
- response.writeHead(201);
- return response.end(JSON.stringify({ message: 'User updated successfully.', }));
- }
- });
- });
- break;
- }
- case 'delete': {
- let userObj = null;
- request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
- request.on('end', () => {
- getAllUsers().then((users) => {
- const userIndex = users.findIndex((user) => { return user.id == userObj.id });
- if (userIndex == -1) {
- response.writeHead(409);
- return response.end(JSON.stringify({ message: 'This user is not exists.' }));
- } else {
- users = users.filter(user => user.id != userObj.id);
- updateUsers(users);
- response.writeHead(201);
- return response.end(JSON.stringify({ message: 'User deleted successfully.', }));
- }
- });
- });
- break;
- }
- }
- }
- const server = http
- .createServer((request, response) => {
- //Request handler..
- console.log(request.method, request.url);
- switch (request.method) {
- case 'GET': {
- if (request.url == '/users') return userMgr(request, response, 'fetch');
- break;
- }
- case 'POST': {
- if (request.url == '/users') return userMgr(request, response, 'create');
- break;
- }
- case 'PATCH': {
- if (request.url == '/users') return userMgr(request, response, 'update');
- break;
- }
- case 'DELETE': {
- if (request.url == '/users') return userMgr(request, response, 'delete');
- break;
- }
- default: {
- response.writeHead(404);
- response.write('Invalid request.');
- break;
- }
- }
- response.end();
- })
- .listen(4006);
Advertisement
Comments
-
- Leon West Accidental Goblin King Audiobooks 1-4
- magnet:?xt=urn:btih:49d386821d7a4093ac6209084242fbdf979b0ac1
- magnet:?xt=urn:btih:9f49b631081256fdab2d7b13927ce27bd44cf683
- magnet:?xt=urn:btih:6ef04c5cd32428d63afbca8a5b754688082059d3
- magnet:?xt=urn:btih:feae4390a335f0743bc8852d70183ace64240e1a
Add Comment
Please, Sign In to add comment
Advertisement