var bodyParser = require('body-parser');
|
|
var express = require('express');
|
|
var passport = require('passport');
|
|
var Strategy = require('passport-custom').Strategy;
|
|
var request = require('request');
|
|
var dotEnv = require('dot-env');
|
|
var db = require('./database.js');
|
|
|
|
var app = express();
|
|
|
|
|
|
app.use(bodyParser.json());
|
|
app.use(bodyParser.urlencoded({extended:false}));
|
|
app.use(passport.initialize());
|
|
|
|
// Custom Strategy
|
|
passport.use(new Strategy(db.verify));
|
|
|
|
// Use Custom Strategy
|
|
app.use('*', passport.authenticate('custom', { session: false }));
|
|
|
|
// Main Route /
|
|
app.all('*', function(req, res, next) {
|
|
// TODO: lookup base url based on client_id in request body
|
|
var baseUrl = clientLookup(req.body.client_id);
|
|
|
|
// Perform the actual request to the requested API
|
|
request(
|
|
{
|
|
method : req.body._method || req.method,
|
|
uri : baseUrl + req.path,
|
|
multipart : [{
|
|
'content-type' : 'application/json',
|
|
'body' : JSON.stringify(req.body.params) || ''
|
|
}]
|
|
},
|
|
function(error, response, body) {
|
|
if (!error && response.statusCode == 200) {
|
|
var request = {
|
|
"baseUrl" : baseUrl,
|
|
"body" : req.body,
|
|
"method" : req.method,
|
|
"requestParams" : req.body.params,
|
|
"originalUrl" : req.originalUrl,
|
|
"path" : req.path,
|
|
"protocol" : req.protocol,
|
|
"query" : req.query,
|
|
"secure" : req.secure,
|
|
"signedCookies" : req.signedCookies,
|
|
"response" : JSON.parse(body),
|
|
}
|
|
res.json(request);
|
|
} else {
|
|
console.log('Error code : ' + response.statusCode);
|
|
console.log('Error message : ' + error);
|
|
}
|
|
});
|
|
});
|
|
|
|
var port = process.env.PORT;
|
|
|
|
app.listen(port, '127.0.0.1', function () {
|
|
console.log('Example app listening at http://%s:%s', '127.0.0.1', port);
|
|
});
|