const address = forwarded(req, req.headers);
- db.ttl(['ban:' + address.ip], function(err, ttl) {
+ db.ttl('ban:' + address.ip, function(err, ttl) {
if (err) {
return next(err);
}
'use strict';
-const redis = require('redis');
+const Redis = require('ioredis');
/**
* Setting up redis clients.
*/
-const songsclient = redis.createClient({ auth_pass: process.env.DB_AUTH });
-const usersclient = redis.createClient({ auth_pass: process.env.DB_AUTH });
+const songsclient = new Redis({ password: process.env.DB_AUTH });
+const usersclient = new Redis({ db: 1, password: process.env.DB_AUTH });
songsclient.on('error', function(err) {
console.error(err.message);
console.error(err.message);
});
-usersclient.select(1);
-
/**
* Expose the clients
*/
Room.prototype.initialize = function() {
const room = this;
- songsdb.zcard([this.roomname], function(err, card) {
+ songsdb.zcard(this.roomname, function(err, card) {
if (err) {
throw err;
}
duration = 0;
}
- usersdb.hget(['user:' + executor, 'role'], function(err, role) {
+ usersdb.hget('user:' + executor, 'role', function(err, role) {
if (err) {
console.error(err.message);
return callback(true);
}
// Check if requested nickname belongs to a registered user
- usersdb.exists(['user:' + nickname], function(err, exists) {
+ usersdb.exists('user:' + nickname, function(err, exists) {
if (!primus.spark(spark.id)) {
if (err) {
console.error(err.message);
const index = randInt(this.trackscount);
const room = this;
- songsdb.zrange([this.roomname, index, index], function(err, res) {
+ songsdb.zrange(this.roomname, index, index, function(err, res) {
if (err) {
throw err;
}
room.playedtracks.push(id);
songsdb.hmget(
- [
- 'song:' + id,
- 'artistName',
- 'trackName',
- 'previewUrl',
- 'artworkUrl60',
- 'trackViewUrl'
- ],
+ 'song:' + id,
+ 'artistName',
+ 'trackName',
+ 'previewUrl',
+ 'artworkUrl60',
+ 'trackViewUrl',
function(err, replies) {
if (err) {
throw err;
console.error(err.message);
return authorized(err);
}
- db.exists(['ban:' + req.forwarded.ip], function(err, exists) {
+ db.exists('ban:' + req.forwarded.ip, function(err, exists) {
if (err) {
console.error(err.message);
return authorized(err);
const key = 'user:' + username;
const multi = db.multi();
if (stats.guesstime) {
- const args = [
+ db.hmget(
key,
'bestscore',
'bestguesstime',
'worstguesstime',
'totguesstime',
- 'guessed'
- ];
- db.hmget(args, function(err, replies) {
- if (err) {
- return console.error(err.message);
- }
- if (stats.guesstime < 1000) {
- stats.guesstime =
- replies[4] !== '0' ? Math.round(replies[3] / replies[4]) : 15000;
- }
- if (stats.userscore > replies[0]) {
- // Set personal best
- multi.hset(key, 'bestscore', stats.userscore);
+ 'guessed',
+ function(err, replies) {
+ if (err) {
+ return console.error(err.message);
+ }
+ if (stats.guesstime < 1000) {
+ stats.guesstime =
+ replies[4] !== '0' ? Math.round(replies[3] / replies[4]) : 15000;
+ }
+ if (stats.userscore > replies[0]) {
+ // Set personal best
+ multi.hset(key, 'bestscore', stats.userscore);
+ }
+ // Update the number of guessed tracks
+ multi.hincrby(key, 'guessed', 1);
+ // Update total guess time
+ multi.hincrby(key, 'totguesstime', stats.guesstime);
+ // Set best answer time
+ if (stats.guesstime < replies[1]) {
+ multi.hset(key, 'bestguesstime', stats.guesstime);
+ }
+ // Set worst answer time
+ if (stats.guesstime > replies[2]) {
+ multi.hset(key, 'worstguesstime', stats.guesstime);
+ }
+ updateStats(key, multi, username, stats);
}
- // Update the number of guessed tracks
- multi.hincrby(key, 'guessed', 1);
- // Update total guess time
- multi.hincrby(key, 'totguesstime', stats.guesstime);
- // Set best answer time
- if (stats.guesstime < replies[1]) {
- multi.hset(key, 'bestguesstime', stats.guesstime);
- }
- // Set worst answer time
- if (stats.guesstime > replies[2]) {
- multi.hset(key, 'worstguesstime', stats.guesstime);
- }
- updateStats(key, multi, username, stats);
- });
+ );
return;
}
if (stats.userscore) {
- db.hget([key, 'bestscore'], function(err, bestscore) {
+ db.hget(key, 'bestscore', function(err, bestscore) {
if (err) {
return console.error(err.message);
}
exports.unban = function(ip, spark, callback) {
const issuedby = spark.nickname;
- db.hget(['user:' + issuedby, 'role'], function(err, role) {
+ db.hget('user:' + issuedby, 'role', function(err, role) {
if (err) {
console.error(err.message);
// Fail silently in case of error
}
// List all banned players
- db.keys(['ban:*'], function(err, replies) {
+ db.keys('ban:*', function(err, replies) {
if (err) {
return console.error(err.message);
}
replies.forEach(function(key) {
const bannedip = key.slice(4);
- db.get([key], function(err, reply) {
+ db.get(key, function(err, reply) {
if (err) {
return console.error(err.message);
}
"primus-emitter": "^3.1.1",
"primus-rooms": "^3.4.1",
"pug": "^3.0.2",
- "redis": "^3.0.2",
+ "ioredis": "^5.3.2",
"serve-favicon": "^2.5.0",
"uglify-js": "^3.5.4",
"ws": "^7.2.1"
const subTask = function(genre) {
return function(callback) {
const index = randInt(rooms[genre].trackscount);
- db.zrange([genre, index, index], function(err, res) {
+ db.zrange(genre, index, index, function(err, res) {
if (err) {
return callback(err);
}
- db.hget(['song:' + res[0], 'artworkUrl100'], callback);
+ db.hget('song:' + res[0], 'artworkUrl100', callback);
});
};
};
*/
exports.leaderboards = function(req, res, next) {
- db.zrevrange(['users', 0, 29, 'withscores'], function(err, pointsresults) {
+ db.zrevrange('users', 0, 29, 'withscores', function(err, pointsresults) {
if (err) {
return next(err);
}
}
const end = begin + 29;
if (by === 'points') {
- db.zrevrange(['users', begin, end, 'withscores'], function(err, results) {
+ db.zrevrange('users', begin, end, 'withscores', function(err, results) {
if (err) {
return next(err);
}
exports.checkOldPasswd = function(req, res, next) {
const key = 'user:' + req.session.user;
- db.hmget([key, 'salt', 'password'], function(err, data) {
+ db.hmget(key, 'salt', 'password', function(err, data) {
if (err) {
return next(err);
}
.update(salt + req.body.newpassword)
.digest('hex');
- db.hmset([key, 'salt', salt, 'password', digest], function(err) {
+ db.hmset(key, 'salt', salt, 'password', digest, function(err) {
if (err) {
return next(err);
}
exports.checkUser = function(req, res, next) {
const key = 'user:' + req.body.username;
- db.exists([key], function(err, exists) {
+ db.exists(key, function(err, exists) {
if (err) {
return next(err);
}
exports.authenticate = function(req, res, next) {
const key = 'user:' + req.body.username;
- db.hmget([key, 'salt', 'password'], function(err, data) {
+ db.hmget(key, 'salt', 'password', function(err, data) {
if (err) {
return next(err);
}
exports.userExists = function(req, res, next) {
const key = 'user:' + req.body.username;
- db.exists([key], function(err, exists) {
+ db.exists(key, function(err, exists) {
if (err) {
return next(err);
}
exports.emailExists = function(req, res, next) {
const key = 'email:' + req.body.email;
- db.exists([key], function(err, exists) {
+ db.exists(key, function(err, exists) {
if (err) {
return next(err);
}
exports.sendEmail = function(req, res, next) {
const key = 'email:' + req.body.email;
- db.get([key], function(err, data) {
+ db.get(key, function(err, data) {
if (err) {
return next(err);
}
// Email exists, generate a secure random token
const token = crypto.randomBytes(48).toString('hex');
// Token expires after 4 hours
- db.setex(['token:' + token, 14400, data], function(err) {
+ db.setex('token:' + token, 14400, data, function(err) {
if (err) {
return next(err);
}
}
const key = 'token:' + req.query.token;
- db.get([key], function(err, user) {
+ db.get(key, function(err, user) {
if (err) {
return next(err);
}
.update(salt + req.body.password)
.digest('hex');
- db.hmset([user, 'salt', salt, 'password', digest], function(err) {
+ db.hmset(user, 'salt', salt, 'password', digest, function(err) {
if (err) {
return next(err);
}
exports.profile = function(req, res, next) {
const key = 'user:' + req.params.username;
- db.exists([key], function(err, exists) {
+ db.exists(key, function(err, exists) {
if (err) {
return next(err);
}
if (exists) {
- db.hgetall([key], function(err, user) {
+ db.hgetall(key, function(err, user) {
if (err) {
return next(err);
}
const parser = JSONStream.parse(['results', true]);
const popIds = artistIds.pop;
const rapIds = artistIds.rap;
-const rc = require('redis').createClient();
+const Redis = require('ioredis');
+const rc = new Redis();
const rockIds = artistIds.rock;
let rooms = require('../config').rooms;
let score;