UNPKG

@parity/api

Version:

The Parity Promise-based API library for interfacing with Ethereum over RPC

57 lines (56 loc) 2.34 kB
"use strict"; // Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see <http://www.gnu.org/licenses/>. var Middleware = /** @class */ (function () { function Middleware(transport) { this._transport = transport; this._subscribe = transport.subscribe; transport.subscribe = this.handleSubscribe.bind(this); this._handlers = {}; this._subHandlers = {}; } Middleware.prototype.registerSubscribe = function (method, handler) { if (method in this._subHandlers) { throw new Error(method + " is already defined in the middleware!"); } this._subHandlers[method] = handler; }; Middleware.prototype.register = function (method, handler) { if (method in this._handlers) { throw new Error(method + " is already defined in the middleware!"); } this._handlers[method] = handler; }; Middleware.prototype.handleSubscribe = function (api, callback, event) { // Don't ask var method = api.subscribe ? api.subscribe : event[0]; var params = event.length === 2 ? event[1] : event; var handler = this._subHandlers[method]; if (handler) { return handler(params, callback); } this._subscribe.call(this._transport, api, callback, event); }; Middleware.prototype.handle = function (method, params) { var handler = this._handlers[method]; if (handler) { return handler(params); } return null; }; Middleware.prototype.rpcRequest = function (method, params) { return this._transport._execute(method, params); }; return Middleware; }()); module.exports = Middleware;