|  | @@ -1,7 +1,9 @@
 | 
	
		
			
				|  |  |  const express = require('express');
 | 
	
		
			
				|  |  |  const router = express.Router();
 | 
	
		
			
				|  |  |  const request = require('request');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const config = require('../config');
 | 
	
		
			
				|  |  | +const { badge } = require('../lib/badge');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  router.get('/', function(req, res) {
 | 
	
		
			
				|  |  |    res.setLocale(config.locale);
 | 
	
	
		
			
				|  | @@ -33,7 +35,7 @@ router.post('/invite', function(req, res) {
 | 
	
		
			
				|  |  |                message: 'Success! Check “'+ req.body.email +'” for an invite from Slack.'
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |            } else {
 | 
	
		
			
				|  |  | -            const error = body.error;
 | 
	
		
			
				|  |  | +            let error = body.error;
 | 
	
		
			
				|  |  |              if (error === 'already_invited' || error === 'already_in_team') {
 | 
	
		
			
				|  |  |                res.render('result', {
 | 
	
		
			
				|  |  |                  community: config.community,
 | 
	
	
		
			
				|  | @@ -105,4 +107,36 @@ router.post('/invite', function(req, res) {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +router.get('/badge.svg', (req, res) => {
 | 
	
		
			
				|  |  | +  request.get({
 | 
	
		
			
				|  |  | +    url: 'https://'+ config.slackUrl + '/api/users.list',
 | 
	
		
			
				|  |  | +    qs: {
 | 
	
		
			
				|  |  | +      token: config.slacktoken,
 | 
	
		
			
				|  |  | +      presence: true
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }, function(err, httpResponse, body) {
 | 
	
		
			
				|  |  | +    try {
 | 
	
		
			
				|  |  | +      body = JSON.parse(body);
 | 
	
		
			
				|  |  | +    } catch(e) {
 | 
	
		
			
				|  |  | +      return res.status(404).send('');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (!body.members) {
 | 
	
		
			
				|  |  | +      return res.status(404).send('');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const members = body.members.filter(function(m) {
 | 
	
		
			
				|  |  | +      return !m.is_bot;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    const total = members.length;
 | 
	
		
			
				|  |  | +    const presence = members.filter(function(m) {
 | 
	
		
			
				|  |  | +      return m.presence === 'active';
 | 
	
		
			
				|  |  | +    }).length;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    res.type('svg');
 | 
	
		
			
				|  |  | +    res.set('Cache-Control', 'max-age=0, no-cache');
 | 
	
		
			
				|  |  | +    res.set('Pragma', 'no-cache');
 | 
	
		
			
				|  |  | +    res.send(badge(presence, total));
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  module.exports = router;
 |