@vafanassieff/bitcoin-cli-ts
Version:
Auto-generated Bitcoin client library for bitcoind JSON-RPC API
34 lines • 1.29 kB
JavaScript
import { request } from 'undici';
import JSONBigInt from 'json-bigint';
import { JSONRPCClient as Client } from 'json-rpc-2.0';
const { parse: parseJson } = JSONBigInt({ storeAsString: true });
const sendRequest = async (payload, clientParams) => {
const { url, authHeader } = clientParams;
const reqHeaders = {
Authorization: authHeader,
'Content-Type': 'application/json',
};
const { body, statusCode, headers } = await request(url, {
method: 'POST',
headers: reqHeaders,
body: JSON.stringify(payload),
});
const responseText = await body.text();
if (statusCode !== 200) {
if (statusCode === 401)
return Promise.reject(new Error('Invalid credentials'));
const contentType = headers['content-type'];
const response = contentType === 'application/json'
? parseJson(responseText)
: responseText;
return Promise.reject(response.error || new Error(response));
}
client.receive(parseJson(responseText));
};
const client = new Client(sendRequest);
export default async function (cmd, settings) {
return client
.timeout(settings.timeout || 15000)
.request(cmd.method, cmd.params, settings);
}
//# sourceMappingURL=rpc-request.js.map