You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
JavaScript
45 lines
1.0 KiB
JavaScript
const router = require('express-promise-router')()
|
|
const parseJSON = require('body-parser').json()
|
|
const db = require('../db')
|
|
|
|
const {validationResult} = require('express-validator')
|
|
const validate = require('./middleware/validators')
|
|
|
|
const upload = multer({
|
|
storage: multer.memoryStorage(),
|
|
limits: {
|
|
files: 1,
|
|
fileSize: 500000
|
|
}
|
|
})
|
|
|
|
router.post('/', parseJSON, validate.urlSlugRestrictions('slug'), async (req, res) => {
|
|
const errors = validationResult(req)
|
|
|
|
if(!errors.isEmpty())
|
|
return res.status(422).json({errors: errors.array()})
|
|
|
|
|
|
|
|
// TODO: Create session
|
|
|
|
res.json(user)
|
|
})
|
|
|
|
router.post('/:uuid/images', upload.single('image'), async (req, res) => {
|
|
// Handle either image upload body or JSON body
|
|
try {
|
|
if(req.file)
|
|
await db.item.addImage(req.params.uuid, req.file.buffer)
|
|
else
|
|
await db.item.addImage(req.params.uuid, await b64.decode(req.body.image.split(',')[1]))
|
|
} catch (error) {
|
|
error.status = 500
|
|
throw error
|
|
}
|
|
|
|
res.json(await db.item.findById(req.params.uuid))
|
|
})
|
|
|
|
module.exports = router;
|