зеркало из https://github.com/github/docs.git
39 строки
1020 B
JavaScript
39 строки
1020 B
JavaScript
const express = require('express')
|
|
const { omit } = require('lodash')
|
|
const Ajv = require('ajv')
|
|
const schema = require('../lib/schema-event')
|
|
|
|
const OMIT_FIELDS = ['type', 'token']
|
|
|
|
const ajv = new Ajv()
|
|
|
|
const router = express.Router()
|
|
|
|
router.post('/', async (req, res, next) => {
|
|
const fields = omit(req.body, '_csrf')
|
|
|
|
if (!ajv.validate(schema, fields)) {
|
|
if (process.env.NODE_ENV === 'development') console.log(ajv.errorsText())
|
|
return res.status(400).json({})
|
|
}
|
|
|
|
// Don't depend on Hydro on local development
|
|
if (process.env.NODE_ENV === 'development' && !req.hydro.maySend()) {
|
|
return res.status(200).json({})
|
|
}
|
|
|
|
try {
|
|
const hydroRes = await req.hydro.publish(
|
|
req.hydro.schemas[fields.type],
|
|
omit(fields, OMIT_FIELDS)
|
|
)
|
|
if (!hydroRes.ok) return res.status(502).json({})
|
|
return res.status(201).json(fields)
|
|
} catch (err) {
|
|
if (process.env.NODE_ENV === 'development') console.log(err)
|
|
return res.status(502).json({})
|
|
}
|
|
})
|
|
|
|
module.exports = router
|