Skip to content

Instantly share code, notes, and snippets.

Created September 1, 2013 03:30
Show Gist options
  • Save anonymous/6402157 to your computer and use it in GitHub Desktop.
Save anonymous/6402157 to your computer and use it in GitHub Desktop.
// ab -n 8000 -c 100 -g restify.dat -p post_data -T 'application/x-www-form-urlencoded' http://127.0.0.1/users/register
exports.register = function(req, res, next) {
var phone = req.body.number
, device = req.body.device
, method = req.params.method
, smsText = "Verification code " + user_token;
if (params.notPresent(phone, device))
return res.json(error("InvalidArgumentError", "Missing params"));
if (phone.charAt(0) === "+")
phone = phone.substr(1);
var user_token = crypto.randomString(phone);
// var token_expire = new Date();
// token_expire.setMinutes(token_expire.getMinutes() + 30);
var query = { username: phone }
, select = { username:1 };
mongodb.users.findOne(query, select, function(err, user) {
// Create token for existing user
if (params.notPresent(user)) {
// Create new user
var new_user = { username: phone, token: user_token, token_device: device, verified: false, created_at: new Date(), token_count: 1 };
mongodb.users.insert(new_user, function(err, user) {
if (err)
return res.json(error("InternalError", "Error creating new user"));
// Send SMS
if (method === "sms") {
sendSMS(apiKey, apiSecret, phone, smsText);
return res.json({ code: 200, message: "Registration successful" });
} else {
return res.json({ token: user_token });
}
});
} else {
var new_token = { $set: { token: user_token, token_device: device }, $inc: { token_count: 1 } };
mongodb.users.update(query, new_token, function(err, user) {
if (err)
return res.json(error("InternalError", "Error updating user " + phone));
// Send SMS
if (method === "sms") {
sendSMS(apiKey, apiSecret, phone, smsText);
return res.json({ code: 200, message: "Registration successful" });
} else {
return res.json({ token: user_token });
}
});
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment