1 | var path = require('path');
|
2 | var fs = require('fs');
|
3 | var request = require('request');
|
4 | var qs = require('querystring');
|
5 | var argv = require('minimist')(process.argv.slice(2));
|
6 | var read = require('read')
|
7 | module.exports = Account;
|
8 |
|
9 | function Account() {}
|
10 | Account.get = function() {
|
11 | var user;
|
12 | try {
|
13 | user = JSON.parse(fs.readFileSync(process.env.HOME + "/account.json", 'utf8'));
|
14 | } catch (e) {
|
15 | user = {};
|
16 | }
|
17 | return user;
|
18 | };
|
19 | Account.adduser = function(cb) {
|
20 | var u = {
|
21 | e: '',
|
22 | p: ''
|
23 | }
|
24 | var fns = [readEmail, readPassword, save]
|
25 |
|
26 | loop()
|
27 |
|
28 | function loop(er) {
|
29 | if (er) return cb(er)
|
30 | var fn = fns.shift()
|
31 | if (fn) return fn(u, loop)
|
32 | cb()
|
33 | }
|
34 | };
|
35 |
|
36 | function readEmail(u, cb) {
|
37 | read({ prompt: 'Email: ', default: '' }, function(er, e) {
|
38 | if (er) {
|
39 | return cb(er.message === 'cancelled' ? er.message : er)
|
40 | }
|
41 | var error = checkEmail(e)
|
42 | if (error) {
|
43 | return readEmail(u, cb)
|
44 | }
|
45 | if (!e) {
|
46 | return readPassword(u, cb)
|
47 | }
|
48 | u.e = e;
|
49 | cb(er)
|
50 | })
|
51 | }
|
52 |
|
53 | function checkEmail(str) {
|
54 | var email = /^([\w-_]+(?:\.[\w-_]+)*)@((?:[a-z0-9]+(?:-[a-zA-Z0-9]+)*)+\.[a-z]{2,6})$/i;
|
55 | return email.test(str) ? false : true;
|
56 | }
|
57 |
|
58 |
|
59 | function readPassword(u, cb) {
|
60 | read({ prompt: 'Password: ', silent: "true", replace: "*" }, function(er, un) {
|
61 | if (er) {
|
62 | return cb(er.message === 'cancelled' ? er.message : er)
|
63 | }
|
64 | if (!un) {
|
65 | return save(u, cb)
|
66 | }
|
67 | u.p = un
|
68 | cb(er)
|
69 | })
|
70 | }
|
71 |
|
72 | function save(u, cb) {
|
73 | var param = {
|
74 | email: u.e,
|
75 | password: u.p
|
76 | };
|
77 | var requestURL = process.env.AICS_HOST + "/account?" + qs.stringify(param);
|
78 | request(requestURL, function(error, response, body) {
|
79 | if (error) throw error;
|
80 | var json = JSON.parse(body);
|
81 | if (json.code === 200) {
|
82 | fs.writeFile(process.env.HOME + "/account.json", JSON.stringify(json.data), function(err, res) {
|
83 | if (err) throw err;
|
84 | console.log("帐户已更新")
|
85 | })
|
86 | } else {
|
87 | console.log(json.msg)
|
88 | }
|
89 | });
|
90 | }
|