From 6dfb4b39679222d4a89d3cae88de925e84e30216 Mon Sep 17 00:00:00 2001 From: Levi Olson Date: Wed, 23 Dec 2015 09:01:09 -0600 Subject: [PATCH] Hooking up client lookup table --- app.js | 81 ++++++++++++++++++++++++++++++----------------------- database.js | 28 ++++++++++++++---- 2 files changed, 68 insertions(+), 41 deletions(-) diff --git a/app.js b/app.js index e8f2180..b23584c 100644 --- a/app.js +++ b/app.js @@ -4,7 +4,7 @@ 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 DB = require('./database.js'); var app = express(); @@ -14,47 +14,58 @@ app.use(bodyParser.urlencoded({extended:false})); app.use(passport.initialize()); // Custom Strategy -passport.use(new Strategy(db.verify)); - -// Use Custom Strategy +passport.use(new Strategy(DB.DatabaseLookup)); 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); + // 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 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), + // Perform request on API + console.log(req.body._method); + console.log(url); + console.log(req.path); + request( + { + method : req.body._method || req.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 = { + "baseUrl" : url, + "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); } - res.json(request); - } else { - console.log('Error code : ' + response.statusCode); - console.log('Error message : ' + error); } - }); + ); + }); }); var port = process.env.PORT; diff --git a/database.js b/database.js index feba58d..6d5df3b 100644 --- a/database.js +++ b/database.js @@ -2,8 +2,7 @@ var bcrypt = require('bcrypt'); var mysql = require('mysql'); var dotEnv = require('dot-env'); -module.exports = { - verify: function(req, done) { +module.exports.DatabaseLookup = function(req, done) { var connection = mysql.createConnection({ socket : process.env.DB_SOCKET, user : process.env.DB_USER, @@ -34,8 +33,25 @@ module.exports = { }); connection.end(); - }, - clientLookup(client_id): function(client_id) { - return 'http://xkcd.leviolson.com'; - } + }; +module.exports.ClientLookup = function(client_id, done) { + this.client_id = client_id; + console.log(this.client_id); + var connection = mysql.createConnection({ + socket : process.env.DB_SOCKET, + user : process.env.DB_USER, + password : process.env.DB_PASSWORD, + database : process.env.DB_DATABASE + }); + connection.connect(function(err) { + if (err) return done(err, false); + }); + connection.query('SELECT url FROM clients WHERE client_id = \''+this.client_id+'\'', function(err, result, fields) { + if (err) return done(err, false); + if (!result || !result[0] || !result[0].url) return done(null, false); + console.log(result[0].url); + return done(null, result[0].url); + }); + + connection.end(); };