mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-29 15:44:13 +00:00
84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
const Toml = require('@iarna/toml');
|
|
const { has, each, get } = require('lodash');
|
|
|
|
const stripNewlineAtEnd = (str) => {
|
|
if (!str || typeof str !== 'string') {
|
|
return '';
|
|
}
|
|
|
|
return str.replace(/\n$/, '');
|
|
};
|
|
|
|
const tomlToJson = (toml) => {
|
|
const json = Toml.parse(toml);
|
|
|
|
const formattedJson = {
|
|
meta: {
|
|
name: get(json, 'meta.name', ''),
|
|
type: get(json, 'meta.type', ''),
|
|
seq: get(json, 'meta.seq', 0)
|
|
},
|
|
http: {
|
|
method: json.http.method,
|
|
url: json.http.url
|
|
}
|
|
};
|
|
|
|
if (json.headers) {
|
|
formattedJson.headers = [];
|
|
|
|
// headers are stored in plain json format if they contain duplicate keys
|
|
// the json is stored in a stringified format in the bru key
|
|
if (has(json.headers, 'bru')) {
|
|
let parsedHeaders = JSON.parse(json.headers.bru);
|
|
|
|
each(parsedHeaders, (header) => {
|
|
formattedJson.headers.push({
|
|
name: header.name,
|
|
value: header.value,
|
|
enabled: header.enabled
|
|
});
|
|
});
|
|
} else {
|
|
Object.keys(json.headers).forEach((key) => {
|
|
if (key === 'disabled') {
|
|
Object.keys(json.headers['disabled']).forEach((disabledKey) => {
|
|
formattedJson.headers.push({
|
|
name: disabledKey,
|
|
value: json.headers[key][disabledKey],
|
|
enabled: false
|
|
});
|
|
});
|
|
return;
|
|
}
|
|
|
|
formattedJson.headers.push({
|
|
name: key,
|
|
value: json.headers[key],
|
|
enabled: true
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
if (json.script) {
|
|
if (json.script['pre-request']) {
|
|
formattedJson.script = formattedJson.script || {};
|
|
formattedJson.script.req = stripNewlineAtEnd(json.script['pre-request']);
|
|
}
|
|
|
|
if (json.script['post-response']) {
|
|
formattedJson.script = formattedJson.script || {};
|
|
formattedJson.script.res = stripNewlineAtEnd(json.script['post-response']);
|
|
}
|
|
|
|
if (json.script['tests']) {
|
|
formattedJson.tests = stripNewlineAtEnd(json.script['tests']);
|
|
}
|
|
}
|
|
|
|
return formattedJson;
|
|
};
|
|
|
|
module.exports = tomlToJson;
|