forked from ionic-team/ionic-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshare.js
More file actions
94 lines (79 loc) · 2.49 KB
/
share.js
File metadata and controls
94 lines (79 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
var fs = require('fs'),
os = require('os'),
request = require('request'),
ncp = require('ncp').ncp,
path = require('path'),
parseUrl = require('url').parse,
shelljs = require('shelljs/global'),
argv = require('optimist').boolean(['no-cordova', 'sass', 'list']).argv,
Q = require('q'),
open = require('open'),
xml2js = require('xml2js'),
FormData = require('form-data'),
IonicProject = require('./project'),
IonicTemplates = require('./templates').IonicTask,
IonicStore = require('./store').IonicStore,
Task = require('./task').Task,
IonicStats = require('./stats').IonicStats,
IonicLoginTask = require('./login').IonicTask;
var IonicTask = function() {};
IonicTask.prototype = new Task();
IonicTask.prototype.getCsrfToken = function(jar) {
for (var i = 0; i < jar.length; i++) {
if (jar[i].key == 'csrftoken') {
return jar[i].value;
}
}
return '';
}
IonicTask.prototype.run = function(ionic) {
this.ionic = ionic;
var self = this;
if(argv._.length < 2) {
return this.ionic.fail('Invalid command', 'share');
}
try {
project = IonicProject.load();
} catch (ex) {
this.ionic.fail(ex.message);
return
}
var email = argv._[1];
if(email.indexOf('@') < 0) {
return this.ionic.fail('Invalid email address', 'share');
}
console.log('Sharing app', project.get('app_id'), 'with', email);
var login = new IonicLoginTask();
login.get(ionic, function(jar) {
self.jar = jar;
var url = self.ionic.IONIC_DASH + self.ionic.IONIC_API + 'app/' + project.get('app_id') + '/share';
var params = parseUrl(url);
var form = new FormData();
form.append('csrfmiddlewaretoken', self.getCsrfToken(self.jar));
form.append('e', email);
form.submit({
protocol: params.protocol,
hostname: params.hostname,
port: params.port,
path: params.path,
headers: form.getHeaders({
cookie: jar.map(function(c) {
return c.key + "=" + encodeURIComponent(c.value);
}).join("; ")
})
}, function (err, response) {
if(err) {
return ionic.fail('Error sharing: ' + err);
}
response.on("data", function(data) {
if(err || response.statusCode !== 200) {
console.log(body);
return ionic.fail('Error sharing: ' + err);
}
console.log('An invite to view your app was sent.');
//console.log('\n', data.toString('utf-8'));
})
});
});
}
exports.IonicTask = IonicTask;