const http = require('http') const fs = require('fs') const url = require('url') const sendFile = (file, res) => { fs.readFile(file, (err, data) => { if (!err) { res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }) res.end(data) } else { res.writeHead(404) res.end('file not found') } }) } //const server = http.createServer((req, res) => { // // let pathName = url.parse(req.url).pathname // // if (req.method === "GET") { // if (pathName === "/") // sendFile(__dirname + "/index.html", res) // else // { // res.writeHead(404) // res.end('wrong url') // } // } //}) class customServer { constructor() { this._gets = {}; this._posts = {}; this._putss = {}; this._deletes = {}; this._server = http.createServer((req, res) => { const pathName = url.parse(req.url).pathname; if (req.method === "GET" && this._gets[pathName]) { this._gets[pathName](req, res); } else if (req.method === "POST" && this._posts[pathName]) { this._gets[pathName](req, res); } else if (req.method === "PUT" && this._puts[pathName]) { this._gets[pathName](req, res); } else if (req.method === "DELETE" && this._deletes[pathName]) { this._gets[pathName](req, res); } else { res.writeHead(404) res.end('not found'); } }) } get(url, callback) { this._gets[url] = callback; } post(url, callback) { this._posts[url] = callback; } add(url, callback) { this._puts[url] = callback; } delete(url, callback) { this._deletes[url] = callback; } listen(port, callback) { this._server.listen(port, callback) } } const server = new customServer(); server.get("/", (req, res) => sendFile(__dirname + "/index.html", res)); const port = 3001; //server.listen(port); server.listen(port, console.log(`listening on port ${port}`));