mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 13:24:05 -06:00
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
var njsp = require("nano-json-stream-parser");
|
|
var request = require("xhr-request-promise");
|
|
|
|
var EthereumProvider = function EthereumProvider(url) {
|
|
var api = {};
|
|
var onResponse = {};
|
|
var callbacks = {};
|
|
var nextId = 0;
|
|
var send = void 0;
|
|
|
|
var parseResponse = njsp(function (json) {
|
|
onResponse[json.id] && onResponse[json.id](null, json.result);
|
|
});
|
|
|
|
var genPayload = function genPayload(method, params) {
|
|
return {
|
|
jsonrpc: "2.0",
|
|
id: ++nextId,
|
|
method: method,
|
|
params: params
|
|
};
|
|
};
|
|
|
|
if (/^http/.test(url)) {
|
|
api.send = async function (method, params) {
|
|
try {
|
|
var answer = await request(url, {
|
|
method: "POST",
|
|
contentType: "application/json-rpc",
|
|
body: JSON.stringify(genPayload(method, params)) });
|
|
var resp = JSON.parse(answer);
|
|
if (resp.error) {
|
|
return resp.error.message;
|
|
} else {
|
|
throw resp.result;
|
|
}
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
};
|
|
};
|
|
|
|
return api;
|
|
};
|
|
|
|
module.exports = EthereumProvider; |