UNPKG

bitcoin-cli-ts

Version:

Auto-generated Bitcoin client library for bitcoind JSON-RPC API

50 lines (49 loc) 2.23 kB
import { __awaiter, __generator } from "tslib"; import { request } from 'undici'; import JSONBigInt from 'json-bigint'; import { JSONRPCClient as Client } from 'json-rpc-2.0'; var parseJson = JSONBigInt({ storeAsString: true }).parse; var sendRequest = function (payload, clientParams) { return __awaiter(void 0, void 0, void 0, function () { var url, authHeader, reqHeaders, _a, body, statusCode, headers, responseText, contentType, response; return __generator(this, function (_b) { switch (_b.label) { case 0: url = clientParams.url, authHeader = clientParams.authHeader; reqHeaders = { Authorization: authHeader, 'Content-Type': 'application/json', }; return [4 /*yield*/, request(url, { method: 'POST', headers: reqHeaders, body: JSON.stringify(payload), })]; case 1: _a = _b.sent(), body = _a.body, statusCode = _a.statusCode, headers = _a.headers; return [4 /*yield*/, body.text()]; case 2: responseText = _b.sent(); if (statusCode !== 200) { if (statusCode === 401) return [2 /*return*/, Promise.reject(new Error('Invalid credentials'))]; contentType = headers['content-type']; response = contentType === 'application/json' ? parseJson(responseText) : responseText; return [2 /*return*/, Promise.reject(response.error || new Error(response))]; } client.receive(parseJson(responseText)); return [2 /*return*/]; } }); }); }; var client = new Client(sendRequest); export default function (cmd, settings) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, client .timeout(settings.timeout || 15000) .request(cmd.method, cmd.params, settings)]; }); }); }