From 9dfb1f8f4d26dda0f2d65075d12d9ef656920326 Mon Sep 17 00:00:00 2001 From: nicoreed Date: Fri, 1 Jul 2011 14:00:16 -0700 Subject: [PATCH 1/2] [minor] fixes #54, a small visual bug --- lib/jitsu/commands/users.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jitsu/commands/users.js b/lib/jitsu/commands/users.js index e73f7dd..709fafb 100644 --- a/lib/jitsu/commands/users.js +++ b/lib/jitsu/commands/users.js @@ -171,7 +171,7 @@ users.forgot = function (username, callback) { return callback(new Error('Username is required'), true); } - winston.info('Request password reset for :' + username.magenta); + winston.info('Request password reset for: ' + username.magenta); jitsu.users.forgot(username, function (err, result) { if (err) { return callback(err); @@ -186,4 +186,4 @@ users.forgot.usage = [ 'Sends the password reset email to the user with the specified `username`.', '', 'jitsu users forgot ' -]; \ No newline at end of file +]; From 119947b64b051246424581dc2addca23bd5b52bf Mon Sep 17 00:00:00 2001 From: nicoreed Date: Fri, 1 Jul 2011 15:35:01 -0700 Subject: [PATCH 2/2] [minor] added a signup command --- lib/jitsu/api/users.js | 32 ++++++++++++++++++++ lib/jitsu/commands/users.js | 60 +++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/lib/jitsu/api/users.js b/lib/jitsu/api/users.js index f6502ed..36e18a4 100644 --- a/lib/jitsu/api/users.js +++ b/lib/jitsu/api/users.js @@ -80,3 +80,35 @@ Users.prototype.forgot = function (username, callback) { callback(null, result); }); }; + +// +// ### function isAvailable (username, callback) +// #### @user {String} the username to check if its available +// #### @callback {function} Continuation to pass control to when complete +// check if the username is available +// +Users.prototype.isAvailable = function (username, callback) { + this.request('GET', ['users', username, 'available'], null, callback, function (res, result) { + callback(null, result); + }); +}; + +// +// ### function submit (username, email, password, callback) +// #### @user {String} the username to create +// #### @email {String} the user's email +// #### @password {String} the user's password +// #### @callback {function} Continuation to pass control to when complete +// try and create a username +// +Users.prototype.submit = function (username, email, password, callback) { + var options = { + username: username, + email: email, + password: password + }; + + this.request('POST', ['users', username], options, callback, function (res, result) { + callback(null, result); + }); +}; diff --git a/lib/jitsu/commands/users.js b/lib/jitsu/commands/users.js index 709fafb..6684636 100644 --- a/lib/jitsu/commands/users.js +++ b/lib/jitsu/commands/users.js @@ -187,3 +187,63 @@ users.forgot.usage = [ '', 'jitsu users forgot ' ]; + +// +// ### function signup (callback) +// #### @callback {function} Continuation to pass control to when complete. +// Creates an account with nodejitsu +// +users.signup = function (callback) { + var username, email, password; + getUsername(); + function getUsername() { + jitsu.prompt.get('username', function (err, result) { + jitsu.users.isAvailable(result.username, function (err,result1) { + if (err) { + callback(err); + } + else if (result1.available === false) { + winston.error('Username was already taken'); + getUsername(); + } + else { + username = result.username; + getEmail(); + } + }) + }); + } + + function getEmail() { + jitsu.prompt.get('email', function (err, result) { + if (err) { + callback(err); + } + else { + email = result.email; + getPassword(); + } + }); + } + + function getPassword() { + jitsu.prompt.get(['password', {name:'confirm password', hidden: true}], function (err, result) { + if (result['password'] === result['confirm password'] && result['password'] != "") { + password = result['password']; + jitsu.users.submit(username, email, password, function(err) { + callback(err); + }); + } + else { + winston.error('The entered passwords do not match'); + getPassword(); + } + }); + } +} + +users.signup.usage = [ + 'Creates a username with nodejitsu', + '', + 'jitsu users signup' +];