UNPKG

@cto.ai/ops

Version:

💻 CTO.ai - The CLI built for Teams 🚀

78 lines (77 loc) • 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SubscriptionService = void 0; const tslib_1 = require("tslib"); const axios_1 = tslib_1.__importDefault(require("axios")); const debug_1 = tslib_1.__importDefault(require("debug")); const env_1 = require("../constants/env"); const debug = (0, debug_1.default)('ops:SubscriptionService'); class SubscriptionService { async getTeamInstallation(config) { try { const { team: { id }, tokens: { accessToken }, } = config; const { data: { installationId }, } = await axios_1.default.get(`${env_1.OPS_GITHUB_APP}/v1/team-installations/${id}`, { headers: { Authorization: `Bearer ${accessToken}` }, }); return !!installationId; } catch (err) { debug('%O', err); return false; } } async unsubscribeOp(opName, config) { try { const { tokens: { accessToken }, } = config; const sharedData = { user_id: config.user.id, team_id: config.team.id, team_name: config.team.name, op_name: opName, }; await axios_1.default.put(`${env_1.OPS_EVENTS_HOST}/v1/events/unsubscribe`, Object.assign({}, sharedData), { headers: { Authorization: `Bearer ${accessToken}` }, }); return true; } catch (err) { debug('%O', err); return false; } } async sendSubscriptions(opName, opId, opType, events, config, builder) { try { const { tokens: { accessToken }, } = config; const sharedData = { user_id: config.user.id, team_id: config.team.id, team_name: config.team.name, op_name: opName, op_type: opType, op_id: opId, }; await axios_1.default.put(`${env_1.OPS_EVENTS_HOST}/v1/events/unsubscribe`, Object.assign({}, sharedData), { headers: { Authorization: `Bearer ${accessToken}` }, }); const formattedEvents = events.map(event => { const [provider, repo, name] = event.split(':'); const source = [provider, repo].join(':'); return { name, event_type: 'github-app', source, builder, }; }); await axios_1.default.post(`${env_1.OPS_EVENTS_HOST}/v1/events/subscribe`, Object.assign(Object.assign({}, sharedData), { events: formattedEvents }), { headers: { Authorization: `Bearer ${accessToken}` }, }); return true; } catch (err) { debug('%O', err); return false; } } } exports.SubscriptionService = SubscriptionService;