mirror of https://github.com/ethereum/go-ethereum
parent
eef4cd1b64
commit
5cd93a0618
@ -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; |
||||||
|
} |
||||||
|
})(); |
Loading…
Reference in new issue