diff --git a/api/user.js b/api/user.js index d2563c0..1d9f841 100644 --- a/api/user.js +++ b/api/user.js @@ -6,9 +6,7 @@ var email = require('../lib/email'); exports.store; var getUserInfo = function(username, res) { if ("string" !== typeof username) { - process.nextTick(function() { - throw { res : res, error: new Error("Username is required") } - }); + response.json({result:'error',message:'Username is required'}).status(400).pipe(res) return; } @@ -38,11 +36,7 @@ var getUserInfo = function(username, res) { exports.store.read_where({key:"address",value:username,res:res}, function(resp) { if (resp.error) { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }); - res.end(JSON.stringify({result:'error',message:resp.error.message})); + response.json({result:'error',message:resp.error.message}).status(400).pipe(res) return; } var obj = {} @@ -55,19 +49,11 @@ var getUserInfo = function(username, res) { obj.username = row.username, obj.address = row.address, obj.emailVerified = row.email_verified, - res.writeHead(200, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }); - res.end(JSON.stringify(obj)); + response.json(obj).pipe(res) } else { obj.exists = false; obj.reserved = false; - res.writeHead(200, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }); - res.end(JSON.stringify(obj)); + response.json(obj).pipe(res) } } ) @@ -83,24 +69,16 @@ var verify = function(req,res) { var username = req.params.username; var token = req.params.token; if ("string" !== typeof username) { - process.nextTick(function() { - throw { res : res, error: new Error("Username is required") } - }); + response.json({result:'error',message:'Username is required'}).status(400).pipe(res) return; } if ("string" !== typeof token) { - process.nextTick(function() { - throw { res : res, error: new Error("Token is required") } - }); + response.json({result:'error', message:'Token is required'}).status(400).pipe(res) return; } exports.store.read({username:username,res:res},function(resp) { if (resp.exists === false) { - res.writeHead(404, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }); - res.end(JSON.stringify({result:'error',message:'No such user'})); + response.json({result:'error',message:'No such user'}).status(404).pipe(res) return; } else { var obj = {} @@ -117,11 +95,7 @@ var verify = function(req,res) { response.json(obj).pipe(res); }); } else { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }); - res.end(JSON.stringify({result:'error',message:'Invalid token'})); + response.json({result:'error',message:'Invalid token'}).status(400).pipe(res) return; } } @@ -131,57 +105,33 @@ var email_change = function(req,res) { console.log("email_change"); var keyresp = libutils.hasKeys(req.body,['email','blob_id','username','hostlink']); if (!keyresp.hasAllKeys) { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'Missing keys',missing:keyresp.missing})); + response.json({result:'error', message:'Missing keys',missing:keyresp.missing}).status(400).pipe(res) return } if (!libutils.isValidEmail(req.body.email)) { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'invalid email address'})); + response.json({result:'error', message:'invalid email address'}).status(400).pipe(res) return } var token = libutils.generateToken(); exports.store.update_where({set:{email:req.body.email,email_token:token},where:{key:'id',value:req.body.blob_id}},function(resp) { if ((resp.result) && (resp.result == 'success')) { email.send({email:req.body.email,hostlink:req.body.hostlink,token:token,name:req.body.username}); - res.writeHead(200, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'success'})); + response.json({result:'success'}).pipe(res) } else { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error',message:'unspecified error'})); + response.json({result:'error',message:'unspecified error'}).status(400).pipe(res) } }); } var resend = function(req,res) { var keyresp = libutils.hasKeys(req.body,['email','username','hostlink']); if (!keyresp.hasAllKeys) { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'Missing keys',missing:keyresp.missing})); + response.json({result:'error', message:'Missing keys',missing:keyresp.missing}).status(400).pipe(res) return } var token = libutils.generateToken(); exports.store.update_where({set:{email:req.body.email,email_token:token},where:{key:'username',value:req.body.username}},function(resp) { email.send({email:req.body.email,hostlink:req.body.hostlink,token:token,name:req.body.username}); - res.writeHead(200, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'success'})); + response.json({result:'success'}).pipe(res) }); } exports.emailResend = resend; diff --git a/error/index.js b/error/index.js index 02d3374..b428d01 100644 --- a/error/index.js +++ b/error/index.js @@ -8,16 +8,8 @@ var bindObject = function(obj1,binder) { }); } d.on('error',function (obj) { - if (obj.res) { - if (obj.error !== undefined) { - console.log("API Error",obj.error + " " + new Date()); - obj.res.writeHead(obj.statusCode || 400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - obj.res.end(JSON.stringify({result:'error',message:obj.error.message})); - } - } + if ((obj.res) && (obj.error !== undefined)) + response.json({result:'error',message:obj.error.message}).status(obj.statusCode || 400).pipe(obj.res) }); exports.setDomain = function(obj) { bindObject(obj); diff --git a/lib/dbcommon.js b/lib/dbcommon.js index 452d0ab..24e469a 100644 --- a/lib/dbcommon.js +++ b/lib/dbcommon.js @@ -314,7 +314,7 @@ var dbcommon = function(db) { }) }; - self.hmac_getSecret = function(params, callback) { + self.hmac_getSecret = function(params, cb) { var blobId = params.blobId; var res = params.res; db('blob') @@ -325,10 +325,11 @@ var dbcommon = function(db) { throw new Error("Invalid blobId"); return; } - callback(null, rows[0].auth_secret); + cb(null, rows[0].auth_secret); }) .catch(function(obj) { // obj is the real error, but we mask it + console.log(obj); cb({error:new Error("Database hmac get secret error")}); }) }; diff --git a/lib/ecdsa.js b/lib/ecdsa.js index 43adc27..200b8cf 100644 --- a/lib/ecdsa.js +++ b/lib/ecdsa.js @@ -3,22 +3,15 @@ var libutils = require('../lib/utils'); var _ = require('lodash'); var RL = require('ripple-lib'); var config = require('../config'); +var response = require('response') var remote = new RL.Remote(config.ripplelib); remote.connect(); var Message = RL.Message; var handleError = function(obj) { - console.log("API Error"); - if (obj.res) { - if (obj.error !== undefined) { - obj.res.writeHead(obj.statusCode || 400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - obj.res.end(JSON.stringify({result:'error',message:obj.error.message})); - } - } + if ((obj.res) && (obj.error !== undefined)) + response.json({result:'error',message:obj.error.message}).status(obj.statusCode || 400).pipe(obj.res) } exports.middleware = function (req, res, next) { if (config.testmode) { @@ -27,11 +20,7 @@ exports.middleware = function (req, res, next) { } var keyresp = libutils.hasKeys(req.query,['signature_account','signature_type','signature','signature_date','signature_blob_id']); if (!keyresp.hasAllKeys) { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'Missing keys',missing:keyresp.missing})); + response.json({result:'error', message:'Missing keys',missing:keyresp.missing}).status(400).pipe(res) return } diff --git a/lib/hmac.js b/lib/hmac.js index d2aef5c..f092007 100644 --- a/lib/hmac.js +++ b/lib/hmac.js @@ -1,20 +1,13 @@ var crypto = require('crypto'); var libutils = require('../lib/utils'); var _ = require('lodash'); +var response = require('response') var config = require('../config'); var handleError = function(obj) { - console.log("API Error"); - if (obj.res) { - if (obj.error !== undefined) { - obj.res.writeHead(obj.statusCode || 400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - obj.res.end(JSON.stringify({result:'error',message:obj.error.message})); - } - } + if ((obj.res) && (obj.error !== undefined)) + response.json({result:'error',message:obj.error.message}).status(obj.statusCode || 400).pipe(obj.res) } exports.store; diff --git a/lib/index.js b/lib/index.js index 7767bdf..6d7828a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,3 +1,4 @@ +var response = require('response') exports.inspect = function(req,res,next) { console.log(req.method + " " + req.url); console.log(req.headers); @@ -19,19 +20,11 @@ exports.limiter = { } hash[req.body.email].count++; if (hash[req.body.email].count > 5) { - res.writeHead(403, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'resend limit reached'})); + response.json({result:'error', message:'resend limit reached'}).status(403).pipe(res) } else next() } else { - res.writeHead(400, { - 'Content-Type' : 'application/json', - 'Access-Control-Allow-Origin': '*' - }) - res.end(JSON.stringify({result:'error', message:'missing email in body'})); + response.json({result:'error', message:'missing email in body'}).status(400).pipe(res) } } return {check : check}