%PDF- %PDF-
Direktori : /usr/lib/node_modules/ncm-ng/lib/ |
Current File : //usr/lib/node_modules/ncm-ng/lib/slack.js |
'use strict' exports.postInfo = postInfo exports.postError = postError // see: https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages-#lists exports.BULLET = '•' const Config = require('./config') const clientRequest = require('./client-request') const nsUtil = require('../util') const logger = nsUtil.logger.getLogger(__filename) async function postInfo (title, text) { return postMessage('info', title, text) } async function postError (title, text) { return postMessage('error', title, text) } async function postMessage (type, title, text = '') { const config = Config.get() if (config.SLACK_WEBHOOK === '') { logger.debug(`slack webhook not configured; woulda posted ${type} message with title: ${JSON.stringify(title)}`) return } let color = '#F0E040' if (type === 'error') color = '#FF0000' title = sanitize(title) text = sanitize(text) const body = { username: `ncm-workers ${nsUtil.getEnvName()}`, icon_emoji: ':female-construction-worker:', attachments: [ { color, title: title, fallback: title, fields: [ { value: text, short: false } ] } ] } const requestOptions = { method: 'POST', uri: config.SLACK_WEBHOOK, body: JSON.stringify(body), timeout: 30 * 1000 } try { await clientRequest(requestOptions) } catch (err) { if (err.statusCode !== 404) { // when webhook is disabled, status = 404 logger.error(`error sending slack notification: ${err.message}`) } } } // see: https://api.slack.com/docs/message-formatting function sanitize (string) { return string .replace('&', '&') .replace('<', '<') .replace('>', '>') }