create slack service, try to create invites with slack api and if it fails then send the emails to configured channel

This commit is contained in:
Riku Rouvila
2015-02-13 01:09:48 +02:00
parent 5d4cc64f5b
commit 2868d8b271
2 changed files with 70 additions and 20 deletions

View File

@@ -1,9 +1,7 @@
'use strict';
var validator = require('validator');
var config = require('../lib/config');
var request = require('superagent');
var slack = require('../services/slack');
module.exports = function (app) {
/*
@@ -17,25 +15,22 @@ module.exports = function (app) {
res.status(400).send('Invalid email');
}
request
.post('https://koodiklinikka.slack.com/api/chat.postMessage')
.field('text', 'Invitation request for: ' + req.body.email)
.field('channel', config.slack.channels)
.field('token', config.slack.token)
.end(function(error, response){
if(error) {
return next(error);
}
if(!response.body.ok) {
console.error(response.body.error);
var err = new Error('Creating slack invitation failed:');
return next(err);
}
function success() {
res.status(200).end();
});
}
slack
.createInvite(req.body.email)
.then(success)
.catch(function() {
return slack.createMessage('Invitation request for: ' + req.body.email);
})
.then(success)
.catch(function(err) {
console.error(err);
var err = new Error('Creating slack invitation failed');
return next(err);
});
});
};

55
services/slack.js Normal file
View File

@@ -0,0 +1,55 @@
'use strict';
var request = require('superagent');
var config = require('../lib/config');
var Promise = require('bluebird');
module.exports = {
/**
* Create a new Slack - invite
*/
createInvite: function(email) {
return new Promise(function(resolve, reject) {
request
.post('https://koodiklinikka.slack.com/api/users.admin.invite')
.field('email', email)
.field('channels', config.slack.channels)
.field('token', config.slack.token)
.field('set_active', 'true')
.end(function(error, response){
if(!response.body.ok) {
return reject(response.body.error);
}
if(error) {
return reject(error);
}
resolve(response.body);
});
});
},
/**
* Send a message to configured channel
*/
createMessage: function(message) {
return new Promise(function(resolve, reject) {
request
.post('https://koodiklinikka.slack.com/api/chat.postMessage')
.field('text', message)
.field('channel', config.slack.channels)
.field('token', config.slack.token)
.end(function(error, response){
if(error) {
reject(error);
}
resolve(response.body);
});
});
}
};