@ellcrys/spell
Version:
The official JavaScript library for Ellcrys
87 lines (82 loc) • 1.57 kB
text/typescript
/**
* @module RPC
*/
import { RpcMethod } from "../../..";
import RPCClient from "../rpcclient";
import Namespace from "./namespace";
/**
* RPC is responsible for calling
* JSON-RPC 2.0 methods supported by
* a remote node.
*
* @export
* @class RPC
* @extends {Namespace}
*/
export default class RPC extends Namespace {
/**
* Creates an instance of RPC.
* @param {RPCClient} client
* @memberof RPC
*/
constructor(client: RPCClient) {
super();
this.client = client;
}
/**
* Stop the JSON-RPC 2.0 service
*
* @export
* @class RPC
*/
public stop(): Promise<boolean> {
return new Promise((resolve, reject) => {
this.client
.call("rpc_stop", null)
.then((res) => {
return resolve(res);
})
.catch((err) => {
return reject(err);
});
});
}
/**
* Test JSON-RPC 2.0 service by sending
* messages that are echoed back.
*
* @export
* @class RPC
*/
public echo(params?: any | null): Promise<any> {
return new Promise((resolve, reject) => {
this.client
.call("rpc_echo", params)
.then((res) => {
return resolve(res);
})
.catch((err) => {
return reject(err);
});
});
}
/**
* Get all JSON-RPC 2.0 methods
* supported by the service
*
* @returns {Promise<RpcMethod[]>}
* @memberof RPC
*/
public methods(): Promise<RpcMethod[]> {
return new Promise((resolve, reject) => {
this.client
.call("rpc_methods", null)
.then((res) => {
return resolve(res);
})
.catch((err) => {
return reject(err);
});
});
}
}