@ethersphere/swarm-cli
Version:
CLI tool for Bee
46 lines (45 loc) • 1.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.printCurlCommand = exports.setCurlStore = void 0;
const chalk_1 = __importDefault(require("chalk"));
const printer_1 = require("./printer");
const curlStore = {
path: '',
type: 'buffer',
folder: false,
};
function setCurlStore(props) {
curlStore.path = props.path;
curlStore.type = props.type;
curlStore.folder = props.folder;
}
exports.setCurlStore = setCurlStore;
function printCurlCommand(request) {
const params = Object.entries(request.params || {}).filter(([, v]) => v !== undefined);
const headers = getHeadersString(request);
const queryParameters = new URLSearchParams(params).toString();
const queryString = queryParameters ? '?' + queryParameters : '';
const methodString = request.method.toUpperCase() === 'GET' ? '' : ` -X ${request.method?.toUpperCase()}`;
const dataString = getDataString(request);
const command = chalk_1.default.cyan(`curl${methodString} "${request.url}${queryString}" ${headers}${dataString}`);
printer_1.printer.print(command);
}
exports.printCurlCommand = printCurlCommand;
function getHeadersString(request) {
return Object.entries(request.headers || {})
.filter(entry => String(entry[0]).toLowerCase() !== 'content-length')
.map(([key, value]) => `-H "${key}: ${value}"`)
.join(' ');
}
function getDataString(request) {
if (!curlStore.path || request.method.toUpperCase() !== 'POST' || !request.url.includes('/bzz')) {
return '';
}
if (curlStore.folder) {
return ` --data <${curlStore.type}>`;
}
return ' --data @' + curlStore.path;
}