Merge branch 'develop' of github.com:iurimatias/embark-framework into develop

This commit is contained in:
Iuri Matias 2017-12-28 13:54:22 -05:00
commit 9f40958e6a
8 changed files with 94 additions and 37 deletions

View File

@ -285,14 +285,15 @@ class CodeGenerator {
code += "\nimport Web3 from '" + utils.joinPath(fs.embarkPath("js/web3-1.0.min.js")) + "'\n"; code += "\nimport Web3 from '" + utils.joinPath(fs.embarkPath("js/web3-1.0.min.js")) + "'\n";
code += "\nimport web3 from 'Embark/web3';\n"; code += "\nimport web3 from 'Embark/web3';\n";
if (this.storageConfig !== {} && this.storageConfig.provider === 'ipfs' && this.storageConfig.enabled === true) {
code += "\nimport IpfsApi from 'ipfs-api';\n";
}
code += "\n" + embarkjsCode + "\n"; code += "\n" + embarkjsCode + "\n";
code += "\n" + fs.readFileSync(fs.embarkPath('js/embarkjs/ipfs.js')).toString(); let pluginsWithCode = this.plugins.getPluginsFor('embarkjsCode');
code += "\n" + fs.readFileSync(fs.embarkPath('js/embarkjs/whisper.js')).toString(); if (pluginsWithCode.length > 0) {
for (let plugin of pluginsWithCode) {
code += plugin.embarkjs_code.join('\n');
}
}
//code += "\n" + fs.readFileSync(fs.embarkPath('js/embarkjs/orbit.js')).toString(); //code += "\n" + fs.readFileSync(fs.embarkPath('js/embarkjs/orbit.js')).toString();
code += this.generateCommunicationInitialization(true); code += this.generateCommunicationInitialization(true);

View File

@ -200,14 +200,10 @@ class Engine {
} }
}); });
self.servicesMonitor.addCheck('Whisper', function (cb) { this.registerModule('whisper', {
self.web3.version.getWhisper(function (err, version) { addCheck: this.servicesMonitor.addCheck.bind(this.servicesMonitor),
if (err) { communicationConfig: this.config.communicationConfig,
return cb({name: 'Whisper', status: 'off'}); web3: this.web3
} else {
return cb({name: 'Whisper (version ' + version + ')', status: 'on'});
}
});
}); });
} }
} }

View File

@ -21,6 +21,7 @@ var Plugin = function(options) {
this.serviceChecks = []; this.serviceChecks = [];
this.pluginTypes = []; this.pluginTypes = [];
this.uploadCmds = []; this.uploadCmds = [];
this.embarkjs_code = [];
this.logger = options.logger; this.logger = options.logger;
this.events = options.events; this.events = options.events;
this.config = options.config; this.config = options.config;
@ -142,6 +143,11 @@ Plugin.prototype.registerUploadCommand = function(cmd, cb) {
this.pluginTypes.push('uploadCmds'); this.pluginTypes.push('uploadCmds');
}; };
Plugin.prototype.addCodeToEmbarkJS = function(code) {
this.embarkjs_code.push(code);
this.pluginTypes.push('embarkjsCode');
};
Plugin.prototype.runCommands = function(cmd, options) { Plugin.prototype.runCommands = function(cmd, options) {
return this.console.map(function(cb) { return this.console.map(function(cb) {
return cb.call(this, cmd, options); return cb.call(this, cmd, options);

View File

@ -1,10 +1,10 @@
import IpfsApi from 'ipfs-api';
let __embarkIPFS = {}; let __embarkIPFS = {};
__embarkIPFS.setProvider = function(options) { __embarkIPFS.setProvider = function(options) {
var self = this; var self = this;
var promise = new Promise(function(resolve, reject) { var promise = new Promise(function(resolve, reject) {
self.currentStorage = EmbarkJS.Storage.IPFS;
try { try {
if (options === undefined) { if (options === undefined) {
self.ipfsConnection = IpfsApi('localhost', '5001'); self.ipfsConnection = IpfsApi('localhost', '5001');
@ -26,7 +26,7 @@ __embarkIPFS.setProvider = function(options) {
__embarkIPFS.saveText = function(text) { __embarkIPFS.saveText = function(text) {
const self = this; const self = this;
var promise = new Promise(function(resolve, reject) { var promise = new Promise(function(resolve, reject) {
if (!this.ipfsConnection) { if (!self.ipfsConnection) {
var connectionError = new Error('No IPFS connection. Please ensure to call Embark.Storage.setProvider()'); var connectionError = new Error('No IPFS connection. Please ensure to call Embark.Storage.setProvider()');
reject(connectionError); reject(connectionError);
} }
@ -43,6 +43,7 @@ __embarkIPFS.saveText = function(text) {
}; };
__embarkIPFS.get = function(hash) { __embarkIPFS.get = function(hash) {
const self = this;
// TODO: detect type, then convert if needed // TODO: detect type, then convert if needed
//var ipfsHash = web3.toAscii(hash); //var ipfsHash = web3.toAscii(hash);
var promise = new Promise(function(resolve, reject) { var promise = new Promise(function(resolve, reject) {
@ -61,6 +62,7 @@ __embarkIPFS.get = function(hash) {
}; };
__embarkIPFS.uploadFile = function(inputSelector) { __embarkIPFS.uploadFile = function(inputSelector) {
const self = this;
var file = inputSelector[0].files[0]; var file = inputSelector[0].files[0];
if (file === undefined) { if (file === undefined) {
@ -94,4 +96,3 @@ __embarkIPFS.getUrl = function(hash) {
return (self._getUrl || "http://localhost:8080/ipfs/") + hash; return (self._getUrl || "http://localhost:8080/ipfs/") + hash;
}; };
EmbarkJS.Storage.registerProvider('ipfs', __embarkIPFS);

View File

@ -1,5 +1,6 @@
let UploadIPFS = require('./upload.js'); let UploadIPFS = require('./upload.js');
let utils = require('../../utils/utils.js'); let utils = require('../../utils/utils.js');
let fs = require('../../core/fs.js');
class IPFS { class IPFS {
@ -15,6 +16,7 @@ class IPFS {
this.commandlineDeploy(); this.commandlineDeploy();
this.setServiceCheck(); this.setServiceCheck();
this.addIPFSToEmbarkJS();
} }
commandlineDeploy() { commandlineDeploy() {
@ -82,6 +84,20 @@ class IPFS {
}); });
} }
addIPFSToEmbarkJS() {
if (this.storageConfig === {}) {
return;
}
if(this.storageConfig.provider !== 'ipfs' || this.storageConfig.enabled !== true) {
return;
}
let code = "";
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'embarkjs.js')).toString();
code += "\nEmbarkJS.Storage.registerProvider('ipfs', __embarkIPFS);";
this.embark.addCodeToEmbarkJS(code);
}
} }
module.exports = IPFS; module.exports = IPFS;

View File

@ -1,3 +1,5 @@
/*global EmbarkJS, Web3 */
let __embarkWhisper = {}; let __embarkWhisper = {};
__embarkWhisper.setProvider = function(options) { __embarkWhisper.setProvider = function(options) {
@ -18,8 +20,8 @@ __embarkWhisper.setProvider = function(options) {
console.log("whisper not available"); console.log("whisper not available");
} else if (version >= 5) { } else if (version >= 5) {
if (self.web3CompatibleWithV5()) { if (self.web3CompatibleWithV5()) {
self.web3.shh.newSymKey().then((id) => {self.symKeyID = id;}); self.web3.shh.newSymKey().then((id) => { self.symKeyID = id; });
self.web3.shh.newKeyPair().then((id) => {self.sig = id;}); self.web3.shh.newKeyPair().then((id) => { self.sig = id; });
} else { } else {
console.log("this version of whisper in this node"); console.log("this version of whisper in this node");
} }
@ -32,20 +34,21 @@ __embarkWhisper.setProvider = function(options) {
__embarkWhisper.web3CompatibleWithV5 = function() { __embarkWhisper.web3CompatibleWithV5 = function() {
var _web3 = new Web3(); var _web3 = new Web3();
if (typeof(_web3.version) === "string") { if ((typeof _web3.version) === "string") {
return true; return true;
} }
return parseInt(_web3.version.api.split('.')[1], 10) >= 20; return parseInt(_web3.version.api.split('.')[1], 10) >= 20;
}; };
__embarkWhisper.getWhisperVersion = function(cb) { __embarkWhisper.getWhisperVersion = function(cb) {
const self = this;
if (EmbarkJS.isNewWeb3()) { if (EmbarkJS.isNewWeb3()) {
this.web3.shh.getVersion(function(err, version) { this.web3.shh.getVersion(function(err, version) {
cb(err, version); cb(err, version);
}); });
} else { } else {
this.web3.version.getWhisper(function(err, res) { this.web3.version.getWhisper(function(err, _res) {
cb(err, web3.version.whisper); cb(err, self.web3.version.whisper);
}); });
} }
}; };
@ -88,7 +91,7 @@ __embarkWhisper.sendMessage = function(options) {
data = options.data || options.payload; data = options.data || options.payload;
ttl = options.ttl || 100; ttl = options.ttl || 100;
priority = options.priority || 1000; priority = options.priority || 1000;
var identity = options.identity || this.identity || web3.shh.newIdentity(); var identity = options.identity || this.identity || this.web3.shh.newIdentity();
var _topics; var _topics;
if (topics === undefined) { if (topics === undefined) {

View File

@ -0,0 +1,47 @@
let utils = require('../../utils/utils.js');
let fs = require('../../core/fs.js');
class Whisper {
constructor(embark, options) {
this.logger = embark.logger;
this.events = embark.events;
this.communicationConfig = options.communicationConfig;
this.addCheck = options.addCheck;
this.web3 = options.web3;
this.embark = embark;
this.setServiceCheck();
this.addWhisperToEmbarkJS();
}
setServiceCheck() {
const self = this;
self.addCheck('Whisper', function (cb) {
self.web3.version.getWhisper(function (err, version) {
if (err) {
return cb({name: 'Whisper', status: 'off'});
} else {
return cb({name: 'Whisper (version ' + version + ')', status: 'on'});
}
});
});
}
addWhisperToEmbarkJS() {
if (this.communicationConfig === {}) {
return;
}
if(this.communicationConfig.provider !== 'whisper' || this.communicationConfig.enabled !== true) {
return;
}
let code = "";
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'embarkjs.js')).toString();
code += "\nEmbarkJS.Storage.registerProvider('ipfs', __embarkWhisper);";
this.embark.addCodeToEmbarkJS(code);
}
}
module.exports = Whisper;

View File

@ -1,13 +0,0 @@
var Web3 = require('web3');
web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
EmbarkJS = require('./js/embark.js');
MyToken = require('./test_app/dist/js/mytoken.js');
console.log(MyToken.address);
MyToken.balanceOf(web3.eth.accounts[0]).then((x) => console.log(x.toNumber()));