httpsnippet
Version:
HTTP Request snippet generator for *most* languages
122 lines (121 loc) • 5.01 kB
JavaScript
/**
* @description
* HTTP code snippet generator for Node.js using Unirest.
*
* @author
* @AhmadNassri
*
* for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.
*/
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
exports.unirest = void 0;
var stringify_object_1 = __importDefault(require("stringify-object"));
var code_builder_1 = require("../../../helpers/code-builder");
exports.unirest = {
info: {
key: 'unirest',
title: 'Unirest',
link: 'http://unirest.io/nodejs.html',
description: 'Lightweight HTTP Request Client Library'
},
convert: function (_a, options) {
var method = _a.method, url = _a.url, cookies = _a.cookies, queryObj = _a.queryObj, postData = _a.postData, headersObj = _a.headersObj;
var opts = __assign({ indent: ' ' }, options);
var includeFS = false;
var _b = new code_builder_1.CodeBuilder({
indent: opts.indent
}), addPostProcessor = _b.addPostProcessor, blank = _b.blank, join = _b.join, push = _b.push, unshift = _b.unshift;
push("const unirest = require('unirest');");
blank();
push("const req = unirest('".concat(method, "', '").concat(url, "');"));
blank();
if (cookies.length) {
push('const CookieJar = unirest.jar();');
cookies.forEach(function (cookie) {
push("CookieJar.add('".concat(encodeURIComponent(cookie.name), "=").concat(encodeURIComponent(cookie.value), "', '").concat(url, "');"));
});
push('req.jar(CookieJar);');
blank();
}
if (Object.keys(queryObj).length) {
push("req.query(".concat((0, stringify_object_1["default"])(queryObj, { indent: opts.indent }), ");"));
blank();
}
if (Object.keys(headersObj).length) {
push("req.headers(".concat((0, stringify_object_1["default"])(headersObj, { indent: opts.indent }), ");"));
blank();
}
switch (postData.mimeType) {
case 'application/x-www-form-urlencoded':
if (postData.paramsObj) {
push("req.form(".concat((0, stringify_object_1["default"])(postData.paramsObj, { indent: opts.indent }), ");"));
blank();
}
break;
case 'application/json':
if (postData.jsonObj) {
push("req.type('json');");
push("req.send(".concat((0, stringify_object_1["default"])(postData.jsonObj, { indent: opts.indent }), ");"));
blank();
}
break;
case 'multipart/form-data': {
if (!postData.params) {
break;
}
var multipart_1 = [];
postData.params.forEach(function (param) {
var part = {};
if (param.fileName && !param.value) {
includeFS = true;
part.body = "fs.createReadStream('".concat(param.fileName, "')");
addPostProcessor(function (code) {
return code.replace(/'fs\.createReadStream\(\\'(.+)\\'\)'/, "fs.createReadStream('$1')");
});
}
else if (param.value) {
part.body = param.value;
}
if (part.body) {
if (param.contentType) {
part['content-type'] = param.contentType;
}
multipart_1.push(part);
}
});
push("req.multipart(".concat((0, stringify_object_1["default"])(multipart_1, { indent: opts.indent }), ");"));
blank();
break;
}
default:
if (postData.text) {
push("req.send(".concat((0, stringify_object_1["default"])(postData.text, { indent: opts.indent }), ");"));
blank();
}
}
if (includeFS) {
unshift("const fs = require('fs');");
}
push('req.end(function (res) {');
push('if (res.error) throw new Error(res.error);', 1);
blank();
push('console.log(res.body);', 1);
push('});');
return join();
}
};
;