diff --git a/package.json b/package.json index 16c722e..0a85205 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,23 @@ { - "name": "@skypro-web-developer/backend-02-template", + "name": "backend-homework", "version": "1.0.0", - "description": "Шаблон для выполнения второго домашнего задания", - "private": true, - "main": "src/index.js", + "description": "backend practice", + "main": "index.js", "scripts": { - "dev": "", - "start": "" + "start": "node src/index.js", + "dev": "nodemon src/index.js" }, - "author": "" + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/dimych1978/backend.git" + }, + "author": "Dmitrii Bashkatov", + "license": "ISC", + "bugs": { + "url": "https://github.com/dimych1978/backend/issues" + }, + "homepage": "https://github.com/dimych1978/backend#readme", + "devDependencies": { + "nodemon": "^3.1.7" + } } diff --git a/src/data/users.json b/src/data/users.json index f55c848..36d5910 100644 --- a/src/data/users.json +++ b/src/data/users.json @@ -1,10 +1,14 @@ [ { "id": 1, - "name": "Ivan" + "name": "Dmitrii" }, { "id": 2, - "name": "John" + "name": "Marina" + }, + { + "id": 3, + "name": "Mikhail" } ] diff --git a/src/index.js b/src/index.js index 5b36651..53e0aec 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,52 @@ const http = require('http'); +const getUsers = require('./modules/getUsers'); +const address = 'http://127.0.0.1'; +const port = 3003; const server = http.createServer((request, response) => { + const url = new URL(request.url, address); + const isHello = url.searchParams.has('hello'); + const hello = url.searchParams.get('hello'); + const users = url.searchParams.has('users'); - // Написать обработчик запроса: - // - Ответом на запрос `?hello=` должна быть **строка** "Hello, .", код ответа 200 - // - Если параметр `hello` указан, но не передано ``, то ответ **строка** "Enter a name", код ответа 400 - // - Ответом на запрос `?users` должен быть **JSON** с содержимым файла `data/users.json`, код ответа 200 - // - Если никакие параметры не переданы, то ответ **строка** "Hello, World!", код ответа 200 - // - Если переданы какие-либо другие параметры, то пустой ответ, код ответа 500 + if (isHello) { + if (hello === '') { + response.statusCode = 400; + response.statusMessage = 'Bad request'; + response.header = 'Content-Type: text/plain'; + response.write('Enter a name'); + response.end(); + return; + } + response.statusCode = 200; + response.statusMessage = 'OK'; + response.header = 'Content-Type: text/plain'; + response.write(`Hello, ${hello}`); + response.end(); + } + if (users) { + response.statusCode = 200; + response.statusMessage = 'OK'; + response.header = 'Content-Type: application/json'; + response.write(getUsers()); + response.end(); + return; + } + if (url.searchParams.size > 0) { + response.statusCode = 500; + response.statusMessage = ''; + response.header = 'Content-Type: text/plain'; + response.end('Server error (empty answer)'); + return; + } + response.statusCode = 200; + response.statusMessage = 'OK'; + response.header = 'Content-Type: text/plain'; + response.write('Hello, world'); + response.end(); + return; +}); +server.listen(port, () => { + console.log(`Сервер запущен на адресе ${address}:${port}, (порт ${[port]})`); }); diff --git a/src/modules/getUsers.js b/src/modules/getUsers.js new file mode 100644 index 0000000..9b2ac3c --- /dev/null +++ b/src/modules/getUsers.js @@ -0,0 +1,9 @@ +const fs = require('fs'); +const path = require('path'); + +const users = () => { + const filePath = path.join(__dirname, '../data/users.json'); + return fs.readFileSync(filePath); +}; + +module.exports = users; diff --git a/src/modules/users.js b/src/modules/users.js deleted file mode 100644 index e69de29..0000000