forked from cerc-io/plugeth
http provider
This commit is contained in:
parent
eef4cd1b64
commit
5cd93a0618
52
http.js
Normal file
52
http.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
(function () {
|
||||||
|
var HttpProvider = function (host) {
|
||||||
|
this.handlers = [];
|
||||||
|
this.host = host;
|
||||||
|
};
|
||||||
|
|
||||||
|
//TODO unify the format of object passed to 'send method'
|
||||||
|
function formatJsonRpcObject(object) {
|
||||||
|
return {
|
||||||
|
jsonrpc: '2.0',
|
||||||
|
method: object.call,
|
||||||
|
params: object.args,
|
||||||
|
id: object._id
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//TODO unify the format of output messages, maybe there should be objects instead
|
||||||
|
function formatJsonRpcMessage(message) {
|
||||||
|
var object = JSON.parse(message);
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
_id: object.id,
|
||||||
|
data: object.result
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
HttpProvider.prototype.send = function (payload) {
|
||||||
|
var data = formatJsonRpcObject(payload);
|
||||||
|
|
||||||
|
var request = new XMLHttpRequest();
|
||||||
|
request.open("POST", this.host, true);
|
||||||
|
request.send(JSON.stringify(data));
|
||||||
|
var self = this;
|
||||||
|
request.onreadystatechange = function () {
|
||||||
|
if (request.readyState === 4) {
|
||||||
|
self.handlers.forEach(function (handler) {
|
||||||
|
handler.call(self, formatJsonRpcMessage(request.responseText));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(HttpProvider.prototype, "onmessage", {
|
||||||
|
set: function (handler) {
|
||||||
|
this.handlers.push(handler);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (typeof(web3) !== "undefined" && web3.providers !== undefined) {
|
||||||
|
web3.providers.HttpProvider = HttpProvider;
|
||||||
|
}
|
||||||
|
})();
|
33
main.js
33
main.js
@ -49,37 +49,40 @@
|
|||||||
eth: {
|
eth: {
|
||||||
prototype: Object(),
|
prototype: Object(),
|
||||||
|
|
||||||
|
//TODO solve the issue with numberOrHash impl
|
||||||
block: function(numberOrHash) {
|
block: function(numberOrHash) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
/*
|
var args = typeof numberOrHash === "string" ? [0, numberOrHash] : [numberOrHash, ""];
|
||||||
var func;
|
web3.provider.send({call: "block", args: args}, function(block) {
|
||||||
if(typeof numberOrHash == "string") {
|
|
||||||
func = "getBlockByHash";
|
|
||||||
} else {
|
|
||||||
func = "getBlockByNumber";
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
web3.provider.send({call: /*func*/"block", args: [numberOrHash]}, function(block) {
|
|
||||||
if(block)
|
if(block)
|
||||||
resolve(block);
|
resolve(block);
|
||||||
else
|
else
|
||||||
reject("not found");
|
reject("not found");
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
transaction: function(numberOrHash, nth) {
|
transaction: function(numberOrHash, nth) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
reject("`transaction` not yet implemented")
|
var args = typeof numberOrHash === "string" ? [0, numberOrHash, nth] : [numberOrHash, "", nth];
|
||||||
|
web3.provider.send({call: "transaction", args: args}, function(block) {
|
||||||
|
if(block)
|
||||||
|
resolve(block);
|
||||||
|
else
|
||||||
|
reject("not found");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
uncle: function(numberOrHash, nth) {
|
uncle: function(numberOrHash, nth) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
reject("`uncle` not yet implemented")
|
var args = typeof numberOrHash === "string" ? [0, numberOrHash, nth] : [numberOrHash, "", nth];
|
||||||
|
web3.provider.send({call: "uncle", args: args}, function(block) {
|
||||||
|
if(block)
|
||||||
|
resolve(block);
|
||||||
|
else
|
||||||
|
reject("not found");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -128,7 +131,7 @@
|
|||||||
return Promise.all(promises).then(function() {
|
return Promise.all(promises).then(function() {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
params.data = params.data.join("");
|
params.data = params.data.join("");
|
||||||
web3.provider.send({call: "transact", args: ["0x"+params]}, function(data) {
|
web3.provider.send({call: "transact", args: [params]}, function(data) {
|
||||||
if(data[1])
|
if(data[1])
|
||||||
reject(data[0]);
|
reject(data[0]);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user