UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

54 lines (53 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../../../utils"); const aws_1 = require("../../../utils/aws"); const base_1 = require("../../base"); const topics_1 = require("./topics"); class TopicsDetailsCollector extends base_1.BaseCollector { collect() { return this.getAllTopicDetails(); } async getAllTopicDetails() { const self = this; const serviceName = "SNS"; const snsRegions = self.getRegions(serviceName); const topicsCollector = new topics_1.TopicsCollector(); topicsCollector.setSession(this.getSession()); const topics_details = {}; try { const topicsData = await utils_1.CollectorUtil.cachedCollect(topicsCollector); const topics = topicsData.topics; for (const region of snsRegions) { try { const snsService = self.getClient(serviceName, region); const regionTopics = topics[region]; const allRegionTopicDetails = []; for (const topic of regionTopics) { if (topic.TopicArn) { const topicAttributeDetails = await snsService.getTopicAttributes({ TopicArn: topic.TopicArn }).promise(); if (topicAttributeDetails.Attributes) { topicAttributeDetails.Attributes.Policy = JSON.parse(topicAttributeDetails.Attributes.Policy); topicAttributeDetails.Attributes.EffectiveDeliveryPolicy = JSON.parse(topicAttributeDetails.Attributes.EffectiveDeliveryPolicy); allRegionTopicDetails.push(topicAttributeDetails.Attributes); } } await utils_1.CommonUtil.wait(200); } topics_details[region] = allRegionTopicDetails; } catch (error) { aws_1.AWSErrorHandler.handle(error); continue; } } } catch (error) { aws_1.AWSErrorHandler.handle(error); } return { topics_details }; } } exports.TopicsDetailsCollector = TopicsDetailsCollector;