Skip to content
Open
49 changes: 27 additions & 22 deletions core/app/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,43 +54,48 @@ module.exports = function () {
}
})

// respond with error middleware
server.use((req, res, next) => {
res.sendError = (err, next) => {
if (err instanceof ErrorHandler.ClientError || err.statusCode < 500) {
let plugins = restify.plugins
server.acceptable = server.acceptable.concat(
server.acceptable.map(accept => `${accept};charset=UTF-8`)
)

server.use(plugins.acceptParser(server.acceptable))
server.use(plugins.gzipResponse())
server.use(plugins.queryParser())
server.use(plugins.bodyParser())

const sendError = (req, res, next) => {
return (err, next) => {
if (err.name == 'ValidationError') {
res.send(400, err)
} else if (err instanceof ErrorHandler.ClientError || err.statusCode < 500) {
res.send(err.statusCode || 400, {
statusCode: err.statusCode,
message: err.message,
errors: err.errors
})
} else {
logger.error(err)
logger.error('Message Error: %s', err.message)
logger.error('Stack %s', err.stack)

const handler = new ErrorHandler()
handler.sendExceptionAlert(err, req)

res.send(500, 'Internal Server Error')
}
if (next) { next() }
}
}

// respond with error middleware
server.use((req, res, next) => {
// define middleware
res.sendError = sendError(req, res, next)
next()
})

let plugins = restify.plugins
server.acceptable = server.acceptable.concat(
server.acceptable.map(accept => `${accept};charset=UTF-8`)
)

server.use(plugins.acceptParser(server.acceptable))
server.use(plugins.gzipResponse())
server.use(plugins.queryParser())
server.use(plugins.bodyParser())

server.on('uncaughtException', (req, res, route, error) => {
const handler = new ErrorHandler()
handler.sendExceptionAlert(error)
logger.error('Message Error: %s', error.message)
logger.error('Stack %s', error.stack)
res.send(500, 'internal error')
})
server.on('uncaughtException', (req, res, route, error) => { sendError(req, res)(error) })
server.on('restifyError', (req, res, error) => { sendError(req, res)(error) })

// Routing the controllers
router.load(server)
Expand Down
1 change: 1 addition & 0 deletions core/constants/task.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ exports.ARGUMENT_TYPE_REMOTE_OPTIONS = ARGUMENT_TYPE_REMOTE_OPTIONS

exports.APPROVALS_TARGET_FIXED = 'fixed'
exports.APPROVALS_TARGET_ASSIGNEES = 'assignees'
exports.APPROVALS_TARGET_DYNAMIC = 'dynamic'
exports.APPROVALS_TARGET_INITIATOR = 'initiator'

exports.ARGUMENT_TYPES = Object.freeze([
Expand Down
24 changes: 18 additions & 6 deletions core/constants/topics.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
exports.monitor = {
const Monitor = exports.monitor = {
crud: 'monitor-crud',
execution: 'monitor-execution',
state: 'monitor-state'
}
exports.indicator = {

const Indicator = exports.indicator = {
crud: 'indicator-crud',
state: 'indicator-state'
}

exports.script = {
crud: 'script-crud'
}
exports.agent = {
version: 'agent-version'
}
exports.file = {
const File = exports.file = {
crud: 'file-crud'
}
exports.hostgroup = {
Expand Down Expand Up @@ -42,7 +44,7 @@ exports.task = {
notification: 'notification-task'
}

exports.workflow = {
const Workflow = exports.workflow = {
//crud: 'workflow-crud',
job: {
crud: 'workflow-job-crud',
Expand All @@ -51,7 +53,7 @@ exports.workflow = {
//execution: 'workflow-execution',
}

exports.job = {
const Job = exports.job = {
crud: 'job-crud',
finished: 'job-finished'
}
Expand All @@ -60,7 +62,17 @@ exports.schedule = {
crud: 'schedule-crud'
}

exports.webhook = {
const Webhook = exports.webhook = {
crud: 'webhook-crud',
triggered: 'webhook-triggered'
}

exports.triggers = [
Job.finished,
Webhook.triggered,
Workflow.job.finished,
File.crud,
Indicator.crud,
Indicator.state,
Monitor.state,
]
Loading