@cto.ai/ops
Version:
💻 CTO.ai - The CLI built for Teams 🚀
78 lines (77 loc) • 2.97 kB
JavaScript
;
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;