diff --git a/index.js b/index.js index 0060ea5..5dc6386 100644 --- a/index.js +++ b/index.js @@ -8,11 +8,13 @@ app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); require('./routes/invite')(app); +require('./routes/members')(app); app.use(function(err, req, res, next) { + /*jshint unused:false*/ console.error(err.message); console.error(err.stack); res.status(500).send('Internal server error'); }); -app.listen(9000); +app.listen(process.env.PORT || 9000); diff --git a/package.json b/package.json index 06b1e7a..0e293a6 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "homepage": "https://github.com/koodiklinikka/koodiklinikka.fi-api", "dependencies": { + "apicache": "0.0.12", "body-parser": "^1.10.1", "express": "^4.11.0", "lodash": "^2.4.1", diff --git a/routes/members.js b/routes/members.js new file mode 100644 index 0000000..db00112 --- /dev/null +++ b/routes/members.js @@ -0,0 +1,28 @@ +'use strict'; + +var request = require('superagent'); +var cache = require('apicache').middleware; + +var config = require('../lib/config'); + +module.exports = function (app) { + /* + * POST /members + * Endpoint for fetching GitHub org members + */ + + app.get('/members', cache('3 hours'), function(req, res, next) { + request + .get('https://api.github.com/orgs/koodiklinikka/public_members') + .set('Authorization', 'token ' + config.github.token) + .end(function(error, response){ + if(error) { + return next(error); + } + req.apicacheGroup = response.body; + res.status(200).send(response.body); + }); + + }); + +};