@hoppscotch/httpsnippet
Version:
HTTP Request snippet generator for *most* languages
98 lines • 3.76 kB
JavaScript
;
exports.__esModule = true;
exports.faraday = void 0;
var code_builder_1 = require("../../../helpers/code-builder");
var escape_1 = require("../../../helpers/escape");
exports.faraday = {
info: {
key: 'faraday',
title: 'faraday',
link: 'https://github.com/lostisland/faraday',
description: 'Faraday HTTP client'
},
convert: function (_a) {
var uriObj = _a.uriObj, queryObj = _a.queryObj, rawMethod = _a.method, postData = _a.postData, allHeaders = _a.allHeaders;
var _b = new code_builder_1.CodeBuilder(), push = _b.push, blank = _b.blank, join = _b.join;
// To support custom methods we check for the supported methods
// and if doesn't exist then we build a custom class for it
var method = rawMethod.toUpperCase();
var methods = [
'GET',
'POST',
'HEAD',
'DELETE',
'PATCH',
'PUT',
'OPTIONS',
'COPY',
'LOCK',
'UNLOCK',
'MOVE',
'TRACE',
];
if (!methods.includes(method)) {
push("# Faraday cannot currently run ".concat(method, " requests. Please use another client."));
return join();
}
push("require 'faraday'");
blank();
// Write body to beginning of script
if (postData.mimeType === 'application/x-www-form-urlencoded') {
if (postData.params) {
push("data = {");
postData.params.forEach(function (param) {
push(" :".concat(param.name, " => ").concat(JSON.stringify(param.value), ","));
});
push("}");
blank();
}
}
push("conn = Faraday.new(");
push(" url: '".concat(uriObj.protocol, "//").concat(uriObj.host, "',"));
if (allHeaders['content-type'] || allHeaders['Content-Type']) {
push(" headers: {'Content-Type' => '".concat(allHeaders['content-type'] || allHeaders['Content-Type'], "'}"));
}
push(")");
blank();
push("response = conn.".concat(method.toLowerCase(), "('").concat(uriObj.pathname, "') do |req|"));
var headers = Object.keys(allHeaders);
if (headers.length) {
headers.forEach(function (key) {
if (key.toLowerCase() !== 'content-type') {
push(" req.headers['".concat(key, "'] = '").concat((0, escape_1.escapeForSingleQuotes)(allHeaders[key]), "'"));
}
});
}
Object.keys(queryObj).forEach(function (name) {
var value = queryObj[name];
if (Array.isArray(value)) {
push(" req.params['".concat(name, "'] = ").concat(JSON.stringify(value)));
}
else {
push(" req.params['".concat(name, "'] = '").concat(value, "'"));
}
});
switch (postData.mimeType) {
case 'application/x-www-form-urlencoded':
if (postData.params) {
push(" req.body = URI.encode_www_form(data)");
}
break;
case 'application/json':
if (postData.jsonObj) {
push(" req.body = ".concat(JSON.stringify(postData.text)));
}
break;
default:
if (postData.text) {
push(" req.body = ".concat(JSON.stringify(postData.text)));
}
}
push('end');
blank();
push('puts response.status');
push('puts response.body');
return join();
}
};
//# sourceMappingURL=client.js.map