send invite to github organization after slack invitation is created and user can be found from github

This commit is contained in:
Riku Rouvila
2015-11-26 17:03:26 +02:00
parent 862c1e57d7
commit aa59d58ba7
2 changed files with 39 additions and 6 deletions

View File

@@ -2,6 +2,7 @@
var validator = require('validator');
var slack = require('../services/slack');
var github = require('../services/github');
module.exports = function (app) {
/*
@@ -21,16 +22,28 @@ module.exports = function (app) {
slack
.createInvite(req.body.email)
.then(success)
.catch(function(err) {
var message = 'Creating automatic invitation failed for: ' + req.body.email + ' reason: ' + err;
return slack.createMessage(message);
.then(function() {
github
.findUserByEmail(req.body.email)
.then(github.inviteToOrg)
.then(function(user) {
var message = 'User ' + user.login + ' invited to GitHub organization.'
slack.createMessage(message);
})
.catch(function(err) {
var message = 'Creating GitHub invitation failed for: ' + req.body.email + ' reason: ' + err;
slack.createMessage(message);
});
})
.then(success)
.catch(function(err) {
var message = 'Creating automatic invitation failed for: ' + req.body.email + ' reason: ' + err;
slack.createMessage(message);
console.error(err);
var err = new Error('Creating slack invitation failed');
return next(err);
var error = new Error('Creating slack invitation failed');
return next(error);
});
});

View File

@@ -53,6 +53,26 @@ module.exports = {
reject(error);
}
resolve(response.body);
/**
* Invite user to organization
*/
inviteToOrg: function(user) {
return new Promise(function(resolve, reject) {
request
.put('https://api.github.com/orgs/koodiklinikka/memberships/' + user.login)
.set('Authorization', 'token ' + config.github.token)
.send({role: 'member'})
.end(function(error, response){
if(error) {
return reject(error);
}
if(response.statusCode !== 200) {
return reject(response.error);
}
resolve(response.body.user);
});
});
}