mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-02 17:08:32 +00:00
53 lines
986 B
JavaScript
53 lines
986 B
JavaScript
const {
|
|
many,
|
|
choice,
|
|
anyChar
|
|
} = require("arcsecond");
|
|
const _ = require('lodash');
|
|
|
|
const inlineTag = require('./inline-tag');
|
|
const paramsTag = require('./params-tag');
|
|
const headersTag = require('./headers-tag');
|
|
const {
|
|
bodyJsonTag,
|
|
bodyGraphqlTag,
|
|
bodyTextTag,
|
|
bodyXmlTag,
|
|
bodyFormUrlEncodedTag,
|
|
bodyMultipartFormTag
|
|
} = require('./body-tag');
|
|
|
|
const bruToJson = (fileContents) => {
|
|
const parser = many(choice([
|
|
inlineTag,
|
|
paramsTag,
|
|
headersTag,
|
|
bodyJsonTag,
|
|
bodyGraphqlTag,
|
|
bodyTextTag,
|
|
bodyXmlTag,
|
|
bodyFormUrlEncodedTag,
|
|
bodyMultipartFormTag,
|
|
anyChar
|
|
]));
|
|
|
|
const parsed = parser
|
|
.run(fileContents)
|
|
.result
|
|
.reduce((acc, item) => _.merge(acc, item), {});
|
|
|
|
return {
|
|
ver: parsed.ver,
|
|
type: parsed.type,
|
|
name: parsed.name,
|
|
method: parsed.method,
|
|
url: parsed.url,
|
|
params: parsed.params,
|
|
headers: parsed.headers,
|
|
body: parsed.body
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
bruToJson
|
|
}; |