pockybot
Version:
Spark bot that handles team recognition
81 lines (80 loc) • 3.04 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerHooks = void 0;
const webex = require('webex/env');
const constants_1 = require("../constants");
const logger_1 = require("./logger");
const fs = require("fs");
function filterHooks(webhooks) {
return webhooks.items.filter((w) => {
return w.name === constants_1.default.botName + ' webhook' || w.name === constants_1.default.botName + ' direct webhook';
});
}
function setGcloudCredentials() {
const filePath = `${__dirname}/../../gcloud-credentials.json`;
const credentials = `
{
"type": "service_account",
"project_id": "${process.env.GCLOUD_PROJECT_ID}",
"private_key_id": "${process.env.GCLOUD_PRIVATE_KEY_ID}",
"private_key": "${process.env.GCLOUD_PRIVATE_KEY}",
"client_email": "${process.env.GCLOUD_CLIENT_EMAIL}",
"client_id": "${process.env.GCLOUD_CLIENT_ID}",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "${process.env.GCLOUD_CLIENT_CERT_URL}"
}`;
fs.writeFileSync(filePath, credentials);
process.env.GOOGLE_APPLICATION_CREDENTIALS = filePath;
}
function registerHooks() {
try {
setGcloudCredentials();
}
catch (e) {
logger_1.Logger.error(`[RegisterHooks.base] Unable to create google cloud credentials: ${e.message}`);
}
try {
webex.webhooks.list()
.then(async (webhooks) => {
let myHooks = [];
let first = true;
do {
if (first) {
first = false;
}
else {
webhooks = await webhooks.next();
}
myHooks = myHooks.concat(filterHooks(webhooks));
} while (webhooks.hasNext());
myHooks.forEach((hook) => {
webex.webhooks.remove(hook);
});
logger_1.Logger.debug('[RegisterHooks.base] successfully cleaned up old hooks');
}).then(() => {
webex.webhooks.create({
resource: 'messages',
event: 'created',
filter: 'mentionedPeople=me',
targetUrl: constants_1.default.postUrl,
name: constants_1.default.botName + ' webhook'
});
webex.webhooks.create({
resource: 'messages',
event: 'created',
filter: 'roomType=direct',
targetUrl: constants_1.default.pmUrl,
name: constants_1.default.botName + ' direct webhook'
});
})
.catch(function (e) {
logger_1.Logger.error(`[RegisterHooks.base] Error registering hooks: ${e.message}`);
});
}
catch (e) {
logger_1.Logger.error(`[RegisterHooks.base] Uncaught error registerhooks: ${e.message}`);
}
}
exports.registerHooks = registerHooks;