123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #!/usr/bin/node
- const http = require('http')
- const history = [{nick: 'server', message: 'HELLO'}]
- const routes = {
- '/message': {
- POST(req, res) {
- res.statusCode = 201
- let json = ''
- req.on('data', partOfJson => {
- json += partOfJson
- })
- req.on('end', () => {
- try {
- const message = JSON.parse(json)
- message.timestamp = (new Date).toISOString()
- history.push(message)
- res.end(JSON.stringify(message))
- } catch (e) {
- res.statusCode=403
- res.end('WRONG JSON')
- }
- })
- },
- GET(req, res) {
- res.statusCode=200
- res.end(JSON.stringify(history))
- // res.setHeader('Access-Control-Allow-Origin', '*');
- // res.setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept');
- }
- },
- '/message-by-id': {
- POST(req, res) {
- res.statusCode = 201
- let json = ''
- req.on('data', data => {
- json += data
- })
- req.on('end', () => {
- try {
- const message = JSON.parse(json)
- res.end(JSON.stringify(history.find((item) => {
- return item.timestamp === message.timestamp
- })))
- } catch (e) {
- res.statusCode=403
- res.end('NEMA')
- }
- })
- //выколупать из req JSON вида {timestamp: 'ДАТА'}
- //произвести поиск оного сообщения
- //отдать его одно
- }
- },
- '/message-after': {
- POST(req, res) {
- res.statusCode = 201
- let json = ''
- req.on('data', data => {
- json += data
- })
- req.on('end', () => {
- try {
- const message = JSON.parse(json)
- let arr = []
- const index = history.findIndex((item) => {
- return item.timestamp === message.timestamp
- })
- for (let i = index + 1; i < history.length; i++) {
- arr.push[i]
- }
- res.end(JSON.stringify(arr))
- } catch (e) {
- res.statusCode=403
- res.end('NEMA')
- }
- })
- //выколупать из req JSON вида {timestamp: 'ДАТА'}
- //произвести поиск всех сообщений после
- //отдать их
- }
- },
- '/message-before': {
- POST(req, res) {
- res.statusCode = 201
- let json = ''
- req.on('data', data => {
- json += data
- })
- req.on('end', () => {
- try {
- const message = JSON.parse(json)
- let arr = []
- const index = history.findIndex((item) => {
- return item.timestamp === message.timestamp
- })
- for (let i = index - 1; i >= 0; i--) {
- arr.push[i]
- }
- res.end(JSON.stringify(arr))
- } catch (e) {
- res.statusCode=403;
- res.end('NEMA')
- }
- })
- //выколупать из req JSON вида {timestamp: 'ДАТА'}
- //произвести поиск всех сообщений до даты
- //отдать их
- }
- }
- }
- //+обновите фронт под этот бэк.
- http.createServer((req, res) => {
- if (req.url in routes && req.method in routes[req.url]) {
- routes[req.url][req.method](req, res)
- } else {
- res.statusCode = 404
- res.end('<h1>НЭМА</h1>')
- }
- }).listen(4000)
|