From 46681d9a1af9d9bc6f8fd54e2410506d77b70763 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Wed, 6 Apr 2016 08:14:29 -0500 Subject: [PATCH 1/5] chore: Update nodemailer to v1 --- package.json | 2 +- website/src/libs/utils.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dad8656146..3c085d0efd 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "nconf": "~0.6.9", "newrelic": "~1.26.1", "nib": "~1.0.1", - "nodemailer": "~0.5.2", + "nodemailer": "^1.9.0", "pageres": "^4.1.1", "passport": "~0.2.1", "passport-facebook": "2.0.0", diff --git a/website/src/libs/utils.js b/website/src/libs/utils.js index 6c44287c72..6266843edf 100644 --- a/website/src/libs/utils.js +++ b/website/src/libs/utils.js @@ -8,15 +8,16 @@ var request = require('request'); var isProd, baseUrl; module.exports.sendEmail = function(mailData) { - var smtpTransport = nodemailer.createTransport("SMTP",{ + var smtpTransport = nodemailer.createTransport({ service: nconf.get('SMTP_SERVICE'), auth: { user: nconf.get('SMTP_USER'), pass: nconf.get('SMTP_PASS') } }); + smtpTransport.sendMail(mailData, function(error, response){ - var logging = require('./logging'); + var logging = require('./logging'); if(error) logging.error(error); else logging.info("Message sent: " + response.message); smtpTransport.close(); // shut down the connection pool, no more messages From 3250d9d0646cfc7bcaac81724adeba8f11e85ab3 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Wed, 6 Apr 2016 08:18:51 -0500 Subject: [PATCH 2/5] chore: Remove unused qs dependency --- package.json | 1 - website/src/controllers/api-v2/user.js | 1 - 2 files changed, 2 deletions(-) diff --git a/package.json b/package.json index 3c085d0efd..3950677943 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,6 @@ "ps-tree": "^1.0.0", "push-notify": "^1.1.1", "q": "^1.4.1", - "qs": "^2.3.2", "request": "~2.44.0", "s3-upload-stream": "^1.0.6", "serve-favicon": "^2.3.0", diff --git a/website/src/controllers/api-v2/user.js b/website/src/controllers/api-v2/user.js index 8084edc53b..da57347d15 100644 --- a/website/src/controllers/api-v2/user.js +++ b/website/src/controllers/api-v2/user.js @@ -15,7 +15,6 @@ let acceptablePUTPaths; let restrictedPUTSubPaths; var api = module.exports; -var qs = require('qs'); var firebase = require('../../libs/firebase'); var webhook = require('../../libs/webhook'); From 3a63896e4020464fe90c9c9086309db249e13818 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Wed, 6 Apr 2016 08:42:05 -0500 Subject: [PATCH 3/5] chore: Upgrade dependencies to v3 versions --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3950677943..896c3b6fdb 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dependencies": { "amazon-payments": "0.0.4", "amplitude": "^2.0.3", - "async": "~0.9.0", + "async": "^1.5.0", "aws-sdk": "^2.0.25", "babel-plugin-syntax-async-functions": "^6.5.0", "babel-plugin-transform-regenerator": "^6.6.0", @@ -50,17 +50,17 @@ "image-size": "~0.3.2", "in-app-purchase": "^0.2.0", "jade": "~1.11.0", - "js2xmlparser": "~0.1.2", + "js2xmlparser": "~1.0.0", "lodash": "^3.10.1", "loggly": "~1.0.8", "marked": "^0.3.5", "merge-stream": "^1.0.0", - "method-override": "~2.2.0", - "moment": "~2.8.3", + "method-override": "^2.3.5", + "moment": "~2.10.6", "mongoose": "~3.8.23", "mongoose-id-autoinc": "~2013.7.14-4", "morgan": "^1.7.0", - "nconf": "~0.6.9", + "nconf": "~0.8.2", "newrelic": "~1.26.1", "nib": "~1.0.1", "nodemailer": "^1.9.0", @@ -80,7 +80,7 @@ "superagent": "~1.4.0", "swagger-node-express": "lefnire/swagger-node-express#habitrpg", "universal-analytics": "~0.3.2", - "validator": "~3.19.0", + "validator": "~4.2.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", "winston": "~0.8.0", From 1bc1968f3aa5d1f364442da66cf318976bba86d7 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Wed, 6 Apr 2016 08:54:16 -0500 Subject: [PATCH 4/5] chore: Upgrade winston dependency and remove unused modules --- package.json | 4 +-- website/src/libs/logging.js | 50 +++++++++++++------------------------ 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 896c3b6fdb..529a754d99 100644 --- a/package.json +++ b/package.json @@ -83,9 +83,7 @@ "validator": "~4.2.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", - "winston": "~0.8.0", - "winston-mail": "~0.2.9", - "winston-newrelic": "~0.1.4" + "winston": "^2.1.0" }, "private": true, "engines": { diff --git a/website/src/libs/logging.js b/website/src/libs/logging.js index 9bd291ea64..f832adb6d5 100644 --- a/website/src/libs/logging.js +++ b/website/src/libs/logging.js @@ -1,7 +1,5 @@ var nconf = require('nconf'); var winston = require('winston'); -require('winston-mail').Mail; -// require('winston-newrelic'); var logger, loggly; @@ -22,52 +20,38 @@ if (nconf.get('LOGGLY:enabled')){ }); } -if (logger == null) { - logger = new (winston.Logger)({}); - if (nconf.get('NODE_ENV') == 'production') { - // logger.add(winston.transports.newrelic, {}); - if (!nconf.get('DISABLE_ERROR_EMAILS')) { - logger.add(winston.transports.Mail, { - to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'), - from: "HabitRPG <" + nconf.get('SMTP_USER') + ">", - subject: "HabitRPG Error", - host: nconf.get('SMTP_HOST'), - port: nconf.get('SMTP_PORT'), - tls: nconf.get('SMTP_TLS'), - username: nconf.get('SMTP_USER'), - password: nconf.get('SMTP_PASS'), - level: 'error' - }); - } - } else { - logger.add(winston.transports.Console, {colorize:true}); - logger.add(winston.transports.File, {filename: 'habitrpg.log'}); - } +if (!logger) { + logger = new (winston.Logger)({}); + + if (nconf.get('NODE_ENV') !== 'production') { + logger.add(winston.transports.Console, {colorize:true}); + logger.add(winston.transports.File, {filename: 'habitrpg.log'}); + } } // A custom log function that wraps Winston. Makes it easy to instrument code // and still possible to replace Winston in the future. module.exports.log = function(/* variable args */) { - if (logger) - logger.log.apply(logger, arguments); + if (logger) + logger.log.apply(logger, arguments); }; module.exports.info = function(/* variable args */) { - if (logger) - logger.info.apply(logger, arguments); + if (logger) + logger.info.apply(logger, arguments); }; module.exports.warn = function(/* variable args */) { - if (logger) - logger.warn.apply(logger, arguments); + if (logger) + logger.warn.apply(logger, arguments); }; module.exports.error = function(/* variable args */) { - if (logger) - logger.error.apply(logger, arguments); + if (logger) + logger.error.apply(logger, arguments); }; module.exports.loggly = function(/* variable args */){ - if (loggly) - loggly.log.apply(loggly, arguments); + if (loggly) + loggly.log.apply(loggly, arguments); }; From db62d1add0b3f038acd822b0af0ebbf629f9ca35 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 9 Apr 2016 08:03:32 -0500 Subject: [PATCH 5/5] fix: correct coupon generation code --- test/api-legacy/coupons.js | 15 +++++++++------ website/src/controllers/api-v2/coupon.js | 3 ++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/test/api-legacy/coupons.js b/test/api-legacy/coupons.js index 1f4fcda3b6..31d840de61 100644 --- a/test/api-legacy/coupons.js +++ b/test/api-legacy/coupons.js @@ -40,26 +40,29 @@ describe("Coupons", function() { describe("POST /api/v2/coupons/generate/:event", function() { context("while sudo user", function() { before(function(done) { - return makeSudoUser(user, done); + makeSudoUser(user, done); }); - return it("generates coupons", function(done) { + + it("generates coupons", function(done) { var queries; queries = '?count=10'; - return request.post(baseURL + '/coupons/generate/wondercon' + queries).end(function(err, res) { + + request.post(baseURL + '/coupons/generate/wondercon' + queries).end(function(err, res) { expectCode(res, 200); - return Coupon.find({ + Coupon.find({ event: 'wondercon' }, function(err, _coupons) { coupons = _coupons; expect(coupons.length).to.equal(10); _(coupons).each(function(c) { - return expect(c.event).to.equal('wondercon'); + expect(c.event).to.equal('wondercon'); }).value(); - return done(); + done(); }); }); }); }); + return context("while regular user", function() { before(function(done) { return registerNewUser(done, true); diff --git a/website/src/controllers/api-v2/coupon.js b/website/src/controllers/api-v2/coupon.js index 8ab576cb6e..a69c41e326 100644 --- a/website/src/controllers/api-v2/coupon.js +++ b/website/src/controllers/api-v2/coupon.js @@ -10,7 +10,8 @@ api.ensureAdmin = function(req, res, next) { } api.generateCoupons = function(req,res,next) { - Coupon.generate(req.params.event, req.query.count, function(err){ + let count = Number(req.query.count); + Coupon.generate(req.params.event, count, function(err){ if(err) return next(err); res.sendStatus(200); });