227 lines
5.1 KiB
JavaScript
227 lines
5.1 KiB
JavaScript
|
const router = require('express').Router()
|
||
|
|
||
|
let labels = [
|
||
|
{
|
||
|
color: 'D50101',
|
||
|
title: 'Важное',
|
||
|
},
|
||
|
{
|
||
|
color: 'F4511E',
|
||
|
title: 'Дом',
|
||
|
},
|
||
|
{
|
||
|
color: 'F5BF25',
|
||
|
title: 'Работа',
|
||
|
},
|
||
|
{
|
||
|
color: '0B8043',
|
||
|
title: 'Дача',
|
||
|
},
|
||
|
{
|
||
|
color: '0C9CE5',
|
||
|
title: 'Аниме',
|
||
|
},
|
||
|
{
|
||
|
color: 'E67C73',
|
||
|
title: 'Синий',
|
||
|
},
|
||
|
{
|
||
|
color: '33B679',
|
||
|
title: 'Грабежи',
|
||
|
},
|
||
|
{
|
||
|
color: '8E24AA',
|
||
|
title: 'Оранжевый',
|
||
|
},
|
||
|
]
|
||
|
|
||
|
const todos = [
|
||
|
{
|
||
|
id: 0,
|
||
|
completed: false,
|
||
|
title: 'Съесть деда',
|
||
|
labels: [
|
||
|
{
|
||
|
color: 'D50101',
|
||
|
title: 'Важное',
|
||
|
},
|
||
|
{
|
||
|
color: 'F4511E',
|
||
|
title: 'Дом',
|
||
|
},
|
||
|
],
|
||
|
description: 'Lorem ipsum dolor sit amet.',
|
||
|
completeDate: 567800000000,
|
||
|
},
|
||
|
{
|
||
|
id: 1,
|
||
|
completed: false,
|
||
|
title: 'гав',
|
||
|
labels: [
|
||
|
{
|
||
|
color: '0B8043',
|
||
|
title: 'Дача',
|
||
|
},
|
||
|
{
|
||
|
color: '0C9CE5',
|
||
|
title: 'Аниме',
|
||
|
},
|
||
|
{
|
||
|
color: 'F5BF25',
|
||
|
title: 'Работа',
|
||
|
},
|
||
|
],
|
||
|
description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur, laboriosam.',
|
||
|
completeDate: 1997800000000,
|
||
|
},
|
||
|
{
|
||
|
id: 2,
|
||
|
completed: true,
|
||
|
title: 'Мяу',
|
||
|
labels: [
|
||
|
{
|
||
|
color: 'E67C73',
|
||
|
title: 'Синий',
|
||
|
},
|
||
|
{
|
||
|
color: '33B679',
|
||
|
title: 'Грабежи',
|
||
|
},
|
||
|
{
|
||
|
color: '8E24AA',
|
||
|
title: 'Оранжевый',
|
||
|
},
|
||
|
],
|
||
|
description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur, laboriosam.',
|
||
|
completeDate: 1997800000000,
|
||
|
},
|
||
|
{
|
||
|
id: 3,
|
||
|
completed: false,
|
||
|
title: 'Неудаляемая',
|
||
|
labels: [
|
||
|
{
|
||
|
color: 'E67C73',
|
||
|
title: 'Синий',
|
||
|
},
|
||
|
{
|
||
|
color: '33B679',
|
||
|
title: 'Грабежи',
|
||
|
},
|
||
|
{
|
||
|
color: '8E24AA',
|
||
|
title: 'Оранжевый',
|
||
|
},
|
||
|
],
|
||
|
description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur, laboriosam.',
|
||
|
completeDate: 1997800000000,
|
||
|
},
|
||
|
]
|
||
|
|
||
|
const ErrorHandler = (error, _req, res) => {
|
||
|
const statusCode = res.statusCode || 500
|
||
|
res.status(statusCode)
|
||
|
res.json({
|
||
|
message: error.message,
|
||
|
stack: process.env.NODE_ENV === 'production' ? '🥑' : error.stack,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
router.post('/signup', (_req, _res, next) => {
|
||
|
setTimeout(next, 1000)
|
||
|
}, (_req, res) => {
|
||
|
res.status(200).send({
|
||
|
accessToken: 'jhbdhbfsuhbvhsfbvuhsbfuvhsbfu',
|
||
|
})
|
||
|
})
|
||
|
|
||
|
router.post('/login', (_req, _res, next) => {
|
||
|
setTimeout(next, 1000)
|
||
|
}, (req, res) => {
|
||
|
if (req.body.password !== 'pass') res.status(401).send('Wrong password!')
|
||
|
else {
|
||
|
res.status(200).send({
|
||
|
accessToken: 'lfhjvbfealihvbsfjlh',
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
router.get('/user', (_req, res) => {
|
||
|
res.send({
|
||
|
username: 'stalin',
|
||
|
email: 'vozhd@kgb.ussr',
|
||
|
})
|
||
|
})
|
||
|
|
||
|
router.put('/user/username', (req, res) => {
|
||
|
if (req.body.username === 'error') {
|
||
|
res.status(500).send()
|
||
|
} else {
|
||
|
res.status(201).send()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
router.put('/user/password', (_req, res) => {
|
||
|
res.status(201).send()
|
||
|
})
|
||
|
|
||
|
router.get('/labels', (_req, res) => {
|
||
|
res.send(labels)
|
||
|
})
|
||
|
|
||
|
router.patch('/label', (_req, res) => {
|
||
|
res.status(201).send()
|
||
|
})
|
||
|
|
||
|
router.put('/labels', (_req, res) => {
|
||
|
res.status(201).send()
|
||
|
})
|
||
|
|
||
|
router.get('/todos', (_req, res) => {
|
||
|
res.send({
|
||
|
todos,
|
||
|
})
|
||
|
})
|
||
|
|
||
|
router.post('/todo', (_req, _res, next) => {
|
||
|
setTimeout(next, 1000)
|
||
|
}, (req, res) => {
|
||
|
if (req.body.title === 'error') {
|
||
|
res.status(500).send()
|
||
|
} else {
|
||
|
res.status(204).send()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
router.put('/todo', (_req, _res, next) => {
|
||
|
setTimeout(next, 300)
|
||
|
}, (req, res) => {
|
||
|
if (req.body.todo.title === 'error' || req.body.todo.title === 'Неудаляемая') {
|
||
|
res.status(500).send()
|
||
|
} else {
|
||
|
res.status(201).send()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
router.delete('/todo', (_req, _res, next) => {
|
||
|
setTimeout(next, 300)
|
||
|
}, (req, res) => {
|
||
|
if (req.body.id === 3) {
|
||
|
res.status(500).send()
|
||
|
} else {
|
||
|
res.status(204).send()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
router.patch('/todo', (_req, res) => {
|
||
|
res.status(204).send()
|
||
|
})
|
||
|
|
||
|
router.use(ErrorHandler)
|
||
|
} catch (e) {
|
||
|
console.error(e)
|
||
|
}
|
||
|
|
||
|
module.exports = router
|