From 33f5d36acab6437fad6d0fd07540a003c3aa306f Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Tue, 30 Aug 2022 22:25:44 -0400 Subject: [PATCH] *Properly handle RPC errors --- src/index.ts | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index 6e115cb..def5782 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,9 @@ import { ensureUniqueRecords, DNSRecord, getTld, + resolverError, } from "@lumeweb/libresolver"; +import { RPCResponse } from "@lumeweb/relay-types"; const HIP5_EXTENSIONS = ["eth", "_eth"]; @@ -24,6 +26,12 @@ interface HnsRecord { ns: string; } +interface HandshakeRPCResponse extends RPCResponse { + data?: { + records: HnsRecord[]; + }; +} + export default class Handshake extends AbstractResolverModule { private async buildBlacklist(): Promise> { const blacklist = new Set(); @@ -66,13 +74,17 @@ export default class Handshake extends AbstractResolverModule { } const chainRecords = await this.query(tld, bypassCache); - if (!chainRecords) { + if (chainRecords.error) { + return resolverError(chainRecords.error); + } + + if (!chainRecords.data?.records.length) { return resolverEmptyResponse(); } let records: DNSRecord[] = []; - for (const record of chainRecords as HnsRecord[]) { + for (const record of chainRecords.data?.records) { switch (record.type) { case "NS": { await this.processNs( @@ -260,17 +272,14 @@ export default class Handshake extends AbstractResolverModule { private async query( tld: string, bypassCache: boolean - ): Promise<[] | boolean> { - const query = this.resolver.rpcNetwork.wisdomQuery( + ): Promise { + let query = this.resolver.rpcNetwork.wisdomQuery( "getnameresource", "handshake", [tld], bypassCache ); - const resp = await query.result; - - // @ts-ignore - return resp?.records || []; + return (await query.result) as HandshakeRPCResponse; } private async processTxt(