|
|
@ -0,0 +1,66 @@ |
|
|
|
const routes = require('express').Router(); |
|
|
|
|
|
|
|
|
|
|
|
const got = require("got"); |
|
|
|
|
|
|
|
|
|
|
|
const GITHUB_API = "https://api.github.com"; |
|
|
|
|
|
|
|
|
|
|
|
const configLoader = require('../configManager'); |
|
|
|
|
|
|
|
const authenticate = "?client_id=" + configLoader.getClientID() + |
|
|
|
"&client_secret=" + configLoader.getClientSecret(); |
|
|
|
|
|
|
|
|
|
|
|
//caching program to make the application run faster
|
|
|
|
const cache = require('memory-cache'); |
|
|
|
|
|
|
|
|
|
|
|
function queryGitHubAPI(requestURL) |
|
|
|
{ |
|
|
|
const apiData = cache.get(requestURL); |
|
|
|
|
|
|
|
return new Promise(function(reject, resolve) |
|
|
|
{ |
|
|
|
if(apiData == null) |
|
|
|
{ |
|
|
|
|
|
|
|
const queryRUL = GITHUB_API + requestURL + authenticate; |
|
|
|
|
|
|
|
got(queryRUL, { json: true }).then(response => |
|
|
|
{ |
|
|
|
resolve(response.body); |
|
|
|
cache.put(requestURL, response.body); |
|
|
|
}).catch(error => |
|
|
|
{ |
|
|
|
resolve(response.body); |
|
|
|
cache.put(requestURL, response.body); |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
resolve(apiData); |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
routes.get('/*', (request, result) => |
|
|
|
{ |
|
|
|
const gitHubAPIURL = request.url; |
|
|
|
|
|
|
|
queryGitHubAPI(gitHubAPIURL).then(function(data) |
|
|
|
{ |
|
|
|
result.write(JSON.stringify(data)); |
|
|
|
result.end(); |
|
|
|
}).catch(function(error) |
|
|
|
{ |
|
|
|
result.write(JSON.stringify(error)); |
|
|
|
result.end(); |
|
|
|
}) |
|
|
|
}); |
|
|
|
|
|
|
|
module.exports = routes; |