Browse Source

Hooking up client lookup table

master
Levi Olson 8 years ago
parent
commit
6dfb4b3967
2 changed files with 68 additions and 41 deletions
  1. +46
    -35
      app.js
  2. +22
    -6
      database.js

+ 46
- 35
app.js View File

@ -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;

+ 22
- 6
database.js View File

@ -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();
};

Loading…
Cancel
Save