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.DatabaseLookup)); app.use('*', passport.authenticate('custom', { session: false })); // Main Route / app.all('*', function(req, res, next) { // Lookup client var baseUrl = DB.ClientLookup(req.body.client_id, function(err, url) { if (err) { console.log(err); return res.sendStatus(404); } if (!url) { console.log('No Results'); return res.sendStatus(400); } // Perform request on API console.log(req.body._method); console.log(url); console.log(req.path); var method = req.body._method || req.method; request( { method : method, uri : url + req.path, multipart : [{ 'content-type' : 'application/json', 'body' : JSON.stringify(req.body.params) || '' }] }, function(error, response, body) { if (!error && response.statusCode == 200) { var request = { "ok" : response.statusCode==200?true:false, "baseUrl" : url, "body" : req.body, "method" : method, "ProxyRequest" : 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); });