1 |
|
2 | (function() {
|
3 | var prompt, request, signup;
|
4 |
|
5 | prompt = require('prompt');
|
6 |
|
7 | request = require('request');
|
8 |
|
9 | signup = function() {
|
10 | var crystal;
|
11 | console.log("Ready to signup? Let's go!");
|
12 | crystal = this;
|
13 | prompt.message = '';
|
14 | prompt.delimiter = '';
|
15 | prompt.start();
|
16 | return prompt.get({
|
17 | properties: {
|
18 | email: {
|
19 | description: 'Enter your email',
|
20 | required: true,
|
21 | type: 'string'
|
22 | },
|
23 | username: {
|
24 | description: 'Enter your username',
|
25 | required: true,
|
26 | type: 'string'
|
27 | },
|
28 | password: {
|
29 | description: 'Enter your password',
|
30 | hidden: true,
|
31 | required: true,
|
32 | type: 'string'
|
33 | }
|
34 | }
|
35 | }, function(err, result) {
|
36 | if (!result) {
|
37 | throw new Error('Email/Username/Password are required.');
|
38 | }
|
39 | if (!result.email) {
|
40 | throw new Error('Email is required.');
|
41 | }
|
42 | if (!result.username) {
|
43 | throw new Error('Username is required.');
|
44 | }
|
45 | if (!result.password) {
|
46 | throw new Error('Password is required.');
|
47 | }
|
48 | crystal.cache('username', result.username);
|
49 | return request.post({
|
50 | formData: {
|
51 | email: result.email,
|
52 | username: result.username,
|
53 | password: result.password
|
54 | },
|
55 | url: crystal.url('api', 'users')
|
56 | }, function(err, resp, body) {
|
57 | if (!err && resp.statusCode === 200) {
|
58 | return console.log("Thanks for signing up!");
|
59 | } else if (body.match('duplicate')) {
|
60 | return console.log("Username already in use. Please try again!");
|
61 | } else {
|
62 | return console.log("Unable to signup.");
|
63 | }
|
64 | });
|
65 | });
|
66 | };
|
67 |
|
68 | module.exports = signup;
|
69 |
|
70 | }).call(this);
|