Skip to content

Instantly share code, notes, and snippets.

@iogi
Last active March 28, 2016 11:41
Show Gist options
  • Save iogi/44998f15ee024dbf0706 to your computer and use it in GitHub Desktop.
Save iogi/44998f15ee024dbf0706 to your computer and use it in GitHub Desktop.
var Promise = require('bluebird');
var Slack = require('slack-node');
var AWS = require('aws-sdk');
var moment = require('moment');
var _ = require('underscore');
var util = require('util');
var apiToken = "";
function getLastChecked() {
return new Promise(function (resolve, reject) {
var dynamo = new AWS.DynamoDB.DocumentClient(params={region: 'us-west-2'})
dynamo.get({TableName: 'counter', Key:{key: 'lastChecked'}}, function(err, data) {
if (err) {
console.log('error', err, err.stack);
reject(new Error(err));
} else {
var lastChecked = data['Item']['value'];
console.log('lastChecked is ', lastChecked);
resolve(lastChecked);
}
});
});
}
function updateLastChecked(lastChecked) {
return new Promise(function (resolve, reject) {
resolve('to be implemented');
});
}
function getCases(lastChecked) {
return new Promise(function (resolve, reject) {
var support = new AWS.Support({'region':'us-east-1'});
var afterTime = moment.max(moment(lastChecked), moment().subtract(1, 'months'));
var params = {
'includeResolvedCases': true,
'language': 'ja',
'afterTime': afterTime.format(),
}
support.describeCases(params, function (err, data) {
if (err) {
console.log('error', err, err.stack);
reject(new Error(err));
} else {
resolve(data['cases']);
}
});
});
}
function putSlack(cases) {
return new Promise(function (resolve, reject) {
_.each(cases, function(caseItem) {
var displayId = caseItem['displayId'];
var subject = caseItem['subject'];
var url = util.format('https://console.aws.amazon.com/support/home?#/case/?displayId=%s&language=ja', displayId);
var slack = new Slack(apiToken);
var slackApi = Promise.promisify(slack.api);
slackApi('chat.postMessage', {
text: util.format('新しいサポートケース %s が起票されました。\n%s\n%s', displayId, subject, url),
channel: '#general',
}).then(function(result){
console.log('slack post done', result);
});
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment