refactor: removing rpc methods that require caching
This commit is contained in:
parent
69e613075e
commit
0736469296
|
@ -50,91 +50,6 @@ const plugin: Plugin = {
|
||||||
name: "rpc",
|
name: "rpc",
|
||||||
async plugin(_api: PluginAPI): Promise<void> {
|
async plugin(_api: PluginAPI): Promise<void> {
|
||||||
api = _api;
|
api = _api;
|
||||||
if (api.config.bool("cache")) {
|
|
||||||
api.registerMethod("get_cached_item", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(req: string): Promise<RPCResponse> {
|
|
||||||
if (typeof req !== "string") {
|
|
||||||
throw new Error("item must be a string");
|
|
||||||
}
|
|
||||||
|
|
||||||
const cache = api.rpcServer.cache?.data;
|
|
||||||
|
|
||||||
if (!cache?.has(req)) {
|
|
||||||
throw new Error("item does not exist");
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
data: true,
|
|
||||||
...cache.get<RPCCacheItem>(req)?.value,
|
|
||||||
signature: cache.get<RPCCacheItem>(req)?.signature,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
api.registerMethod("clear_cached_item", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(req: string): Promise<void> {
|
|
||||||
if (typeof req !== "string") {
|
|
||||||
throw new Error("item must be a string");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
api.rpcServer.cache.deleteItem(req);
|
|
||||||
} catch (e: any) {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
api.registerMethod("get_peers", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(): Promise<string[]> {
|
|
||||||
const pubkey = b4a.from(api.identity.publicKeyRaw).toString("hex");
|
|
||||||
|
|
||||||
const online = api.rpcServer.cache?.dhtCache.online || new Set();
|
|
||||||
if (online.has(pubkey)) {
|
|
||||||
online.delete(pubkey);
|
|
||||||
}
|
|
||||||
|
|
||||||
return [...online];
|
|
||||||
},
|
|
||||||
});
|
|
||||||
if (api.logger.level === "debug") {
|
|
||||||
api.registerMethod("get_direct_peers", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(): Promise<string[]> {
|
|
||||||
const online = api.rpcServer.cache.dhtCache.online;
|
|
||||||
const pubkey = b4a
|
|
||||||
.from(api.swarm.keyPair.publicKeyRaw())
|
|
||||||
.toString("hex");
|
|
||||||
|
|
||||||
if (online.has(pubkey)) {
|
|
||||||
online.delete(pubkey);
|
|
||||||
}
|
|
||||||
|
|
||||||
const topic = LUMEWEB_TOPIC_HASH.toString("hex");
|
|
||||||
return [...api.swarm.peers.values()]
|
|
||||||
.filter((item: any) =>
|
|
||||||
[...item._seenTopics.keys()].includes(topic)
|
|
||||||
)
|
|
||||||
.map((item: any) => item.publicKey.toString("hex"))
|
|
||||||
.filter((item: any) => online.has(item));
|
|
||||||
},
|
|
||||||
});
|
|
||||||
api.registerMethod("get_bootstrap_info", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(): Promise<string[]> {
|
|
||||||
// @ts-ignore
|
|
||||||
return api.rpcServer.cache.dhtCache._getBootstrapInfo();
|
|
||||||
},
|
|
||||||
});
|
|
||||||
api.registerMethod("get_connected_peers", {
|
|
||||||
cacheable: false,
|
|
||||||
async handler(): Promise<string[]> {
|
|
||||||
// @ts-ignore
|
|
||||||
return [...api.rpcServer.cache.dhtCache.connectedTo];
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
api.registerMethod("broadcast_request", {
|
api.registerMethod("broadcast_request", {
|
||||||
cacheable: false,
|
cacheable: false,
|
||||||
async handler(req: RPCBroadcastRequest): Promise<RPCBroadcastResponse> {
|
async handler(req: RPCBroadcastRequest): Promise<RPCBroadcastResponse> {
|
||||||
|
|
Loading…
Reference in New Issue