mirror of
https://github.com/koodiklinikka/koodiklinikka.fi-api.git
synced 2026-01-26 03:34:03 +00:00
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:
@@ -1,9 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var validator = require('validator');
|
var validator = require('validator');
|
||||||
var config = require('../lib/config');
|
var slack = require('../services/slack');
|
||||||
var request = require('superagent');
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = function (app) {
|
module.exports = function (app) {
|
||||||
/*
|
/*
|
||||||
@@ -17,25 +15,22 @@ module.exports = function (app) {
|
|||||||
res.status(400).send('Invalid email');
|
res.status(400).send('Invalid email');
|
||||||
}
|
}
|
||||||
|
|
||||||
request
|
function success() {
|
||||||
.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
res.status(200).end();
|
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
55
services/slack.js
Normal 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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user