PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo-forks/avalanchejs/src/vms/common
Просмотр файла: rpc.ts
export type RpcCallOptions = {
headers?: Record<string, string>;
};
type JsonRpcSuccessResp<T> = {
jsonrpc: string;
result: T;
id: number;
error?: undefined;
};
interface JsonRpcError {
code: number;
message: string;
data?: any;
}
type JsonRpcErrorResp = {
jsonrpc: string;
id: number;
result?: undefined;
error: JsonRpcError;
};
export class JrpcProvider {
private reqId = 0;
constructor(private readonly url: string) {}
async callMethod<T>(
method: string,
parameters?: Array<Record<string, any>> | Record<string, any>,
fetchOptions?: RequestInit,
): Promise<T> {
const body = {
jsonrpc: '2.0',
id: this.reqId++,
method,
params: parameters,
};
const resp = await fetch(this.url, {
...fetchOptions,
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
...fetchOptions?.headers,
},
})
.then(async (r) => {
return r.json();
})
.then((data) => data as JsonRpcSuccessResp<T> | JsonRpcErrorResp);
if (resp.error) throw new Error(resp.error.message);
return resp.result;
}
// TODO: Batch RPC call
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!