good morning!!!!

Skip to content
Snippets Groups Projects
Commit 5cd93a06 authored by Marek Kotewicz's avatar Marek Kotewicz
Browse files

http provider

parent eef4cd1b
No related branches found
No related tags found
No related merge requests found
http.js 0 → 100644
(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;
}
})();
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment