import * as AWS from 'aws-sdk'; import {IResponse, response} from './tools'; AWS.config.update({region: 'us-east-1'}); // Virginia const uuid = require('uuid/v1'); // version 1 is based on time (not random) const SES = new AWS.SES(); //{apiVersion: '2010-12-01'} const SNS = new AWS.SNS(); export interface ILog { id?: string; kind: string; event: string; message: string; referenceId: string; data: any; type: string; } function parseValues(content: string, values: any): string { const keys = Object.keys(values); for (let i = 0; i < keys.length; i++) { const reg = new RegExp('{{' + keys[i] + '}}', 'g'); content = content.toString().replace(reg, values[keys[i]]); } return content; } export class Log { /** * * @param {INotify} body * @param subject * @param topicArn * @returns {Promise<>} */ async sendLog(body: ILog, subject: string, topicArn?: string): Promise { if (!topicArn && process.env.SNS_TOPIC_ARN_HISTORY_LOG) { topicArn = process.env.SNS_TOPIC_ARN_HISTORY_LOG; } else if (!topicArn && !process.env.SNS_TOPIC_ARN_HISTORY_LOG) { return response(false, 'bln-ignore'); } // Create sns params const eventText = JSON.stringify(body); let sns = new AWS.SNS(); let params = { Message: eventText, Subject: subject, TopicArn: topicArn }; try { params['ResponseMetadata'] = await sns.publish(params).promise(); return response(true, null, params); } catch (error) { console.log(60, error); return response(false, 'bln-ignore-try-catch', error.message); } } }