UNPKG

pockybot

Version:

Spark bot that handles team recognition

81 lines (80 loc) 3.04 kB
"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;