UNPKG

1.99 kBJavaScriptView Raw
1var path = require('path');
2var fs = require('fs');
3var request = require('request');
4var qs = require('querystring');
5var argv = require('minimist')(process.argv.slice(2));
6var read = require('read')
7module.exports = Account;
8
9function Account() {}
10Account.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};
19Account.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
36function 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
53function 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
59function 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
72function 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}