From 484fdc2fd02116af084f840b9c0182834c40f8e7 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 10 Feb 2021 18:02:23 +0000 Subject: [PATCH] tendermint-rpc: Enable all params in validators query --- .../tendermint-rpc/src/adaptors/v0-33/requests.ts | 15 ++++++++++++++- packages/tendermint-rpc/src/client.spec.ts | 2 +- packages/tendermint-rpc/src/client.ts | 4 ++-- packages/tendermint-rpc/src/index.ts | 1 + packages/tendermint-rpc/src/requests.ts | 10 +++++++--- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/tendermint-rpc/src/adaptors/v0-33/requests.ts b/packages/tendermint-rpc/src/adaptors/v0-33/requests.ts index c5d8a7ac..0ec03de3 100644 --- a/packages/tendermint-rpc/src/adaptors/v0-33/requests.ts +++ b/packages/tendermint-rpc/src/adaptors/v0-33/requests.ts @@ -84,6 +84,19 @@ function encodeTxSearchParams(params: requests.TxSearchParams): RpcTxSearchParam }; } +interface RpcValidatorsParams { + readonly height?: string; + readonly page?: string; + readonly per_page?: string; +} +function encodeValidatorsParams(params: requests.ValidatorsParams): RpcValidatorsParams { + return { + height: may(Integer.encode, params.height), + page: may(Integer.encode, params.page), + per_page: may(Integer.encode, params.per_page), + }; +} + export class Params { public static encodeAbciInfo(req: requests.AbciInfoRequest): JsonRpcRequest { return createJsonRpcRequest(req.method); @@ -141,6 +154,6 @@ export class Params { } public static encodeValidators(req: requests.ValidatorsRequest): JsonRpcRequest { - return createJsonRpcRequest(req.method, encodeHeightParam(req.params)); + return createJsonRpcRequest(req.method, encodeValidatorsParams(req.params)); } } diff --git a/packages/tendermint-rpc/src/client.spec.ts b/packages/tendermint-rpc/src/client.spec.ts index 0cc81bff..39240f36 100644 --- a/packages/tendermint-rpc/src/client.spec.ts +++ b/packages/tendermint-rpc/src/client.spec.ts @@ -133,7 +133,7 @@ function defaultTestSuite(rpcFactory: () => RpcClient, adaptor: Adaptor, expecte it("can get validators", async () => { pendingWithoutTendermint(); const client = await Client.create(rpcFactory(), adaptor); - const response = await client.validators(); + const response = await client.validators({}); expect(response).toBeTruthy(); expect(response.blockHeight).toBeGreaterThanOrEqual(1); diff --git a/packages/tendermint-rpc/src/client.ts b/packages/tendermint-rpc/src/client.ts index 9df10731..a9519114 100644 --- a/packages/tendermint-rpc/src/client.ts +++ b/packages/tendermint-rpc/src/client.ts @@ -248,10 +248,10 @@ export class Client { }; } - public async validators(height?: number): Promise { + public async validators(params: requests.ValidatorsParams): Promise { const query: requests.ValidatorsRequest = { method: requests.Method.Validators, - params: { height: height }, + params: params, }; return this.doCall(query, this.p.encodeValidators, this.r.decodeValidators); } diff --git a/packages/tendermint-rpc/src/index.ts b/packages/tendermint-rpc/src/index.ts index 1d762ea2..6b87b4e2 100644 --- a/packages/tendermint-rpc/src/index.ts +++ b/packages/tendermint-rpc/src/index.ts @@ -31,6 +31,7 @@ export { TxSearchParams, TxSearchRequest, ValidatorsRequest, + ValidatorsParams, } from "./requests"; export { AbciInfoResponse, diff --git a/packages/tendermint-rpc/src/requests.ts b/packages/tendermint-rpc/src/requests.ts index b4c7e8f4..d985b8e6 100644 --- a/packages/tendermint-rpc/src/requests.ts +++ b/packages/tendermint-rpc/src/requests.ts @@ -161,9 +161,13 @@ export interface TxSearchParams { export interface ValidatorsRequest { readonly method: Method.Validators; - readonly params: { - readonly height?: number; - }; + readonly params: ValidatorsParams; +} + +export interface ValidatorsParams { + readonly height?: number; + readonly page?: number; + readonly per_page?: number; } export interface BuildQueryComponents {