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: {
|
||||
prototype: Object(),
|
||||
|
||||
|
||||
//TODO solve the issue with numberOrHash impl
|
||||
block: function(numberOrHash) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
/*
|
||||
var func;
|
||||
if(typeof numberOrHash == "string") {
|
||||
func = "getBlockByHash";
|
||||
} else {
|
||||
func = "getBlockByNumber";
|
||||
}
|
||||
*/
|
||||
|
||||
web3.provider.send({call: /*func*/"block", args: [numberOrHash]}, function(block) {
|
||||
var args = typeof numberOrHash === "string" ? [0, numberOrHash] : [numberOrHash, ""];
|
||||
web3.provider.send({call: "block", args: args}, function(block) {
|
||||
if(block)
|
||||
resolve(block);
|
||||
else
|
||||
reject("not found");
|
||||
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
transaction: function(numberOrHash, nth) {
|
||||
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) {
|
||||
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 new Promise(function(resolve, reject) {
|
||||
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])
|
||||
reject(data[0]);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user