61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
// @flow
|
|
|
|
import {
|
|
Client as RpcWebSocketClient,
|
|
NodeWebSocketTypeOptions,
|
|
IWSClientAdditionalOptions,
|
|
} from 'rpc-websockets';
|
|
|
|
// Define TEST_LIVE in the environment to test against the real full node
|
|
// identified by `url` instead of using the mock
|
|
export const mockRpcEnabled = !process.env.TEST_LIVE;
|
|
|
|
let mockNotice = true;
|
|
|
|
export class Client {
|
|
client: RpcWebSocketClient;
|
|
|
|
constructor(
|
|
url: string,
|
|
options: NodeWebSocketTypeOptions & IWSClientAdditionalOptions,
|
|
) {
|
|
//console.log('MockClient', url, options);
|
|
if (!mockRpcEnabled) {
|
|
if (mockNotice) {
|
|
console.log(
|
|
'Note: rpc-websockets mock is disabled, testing live against',
|
|
url,
|
|
);
|
|
mockNotice = false;
|
|
}
|
|
this.client = new RpcWebSocketClient(url, options);
|
|
}
|
|
}
|
|
|
|
connect() {
|
|
if (!mockRpcEnabled) {
|
|
return this.client.connect();
|
|
}
|
|
}
|
|
|
|
close() {
|
|
if (!mockRpcEnabled) {
|
|
return this.client.close();
|
|
}
|
|
}
|
|
|
|
on(event: string, callback: Function) {
|
|
if (!mockRpcEnabled) {
|
|
return this.client.on(event, callback);
|
|
}
|
|
//console.log('on', event);
|
|
}
|
|
|
|
async call(method: string, params: Object): Promise<Object> {
|
|
if (!mockRpcEnabled) {
|
|
return await this.client.call(method, params);
|
|
}
|
|
throw new Error('call unsupported');
|
|
}
|
|
}
|