ionic
Version:
A tool for creating and developing Ionic Framework mobile apps.
95 lines (79 loc) • 2.54 kB
JavaScript
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;