From 5e1d6cba4ab04eff53ed7ae9694161ff5edcc77e Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Sun, 15 Jan 2023 05:03:58 +0530 Subject: [PATCH] feat: bruno lang support for parsing xml body --- packages/bruno-lang/example/request.next.bru | 12 +++--------- packages/bruno-lang/src/body-tag.js | 16 ++++++++++++++-- packages/bruno-lang/src/index.js | 4 +++- packages/bruno-lang/tests/fixtures/request.bru | 4 ++++ packages/bruno-lang/tests/parser.spec.js | 5 +++-- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/packages/bruno-lang/example/request.next.bru b/packages/bruno-lang/example/request.next.bru index 335702d1..7c5cd4b1 100644 --- a/packages/bruno-lang/example/request.next.bru +++ b/packages/bruno-lang/example/request.next.bru @@ -61,17 +61,11 @@ assert } /assert -vars - 1 petId $res.data.id -/vars - -readme +docs Documentation about the request -/readme +/docs -response-example - name Created - status 201 +response-example(name="Created", status=201) headers 1 content-type application/json 1 accept-language en-US,en;q=0.9,hi;q=0.8 diff --git a/packages/bruno-lang/src/body-tag.js b/packages/bruno-lang/src/body-tag.js index a837e6d0..a20f6fe2 100644 --- a/packages/bruno-lang/src/body-tag.js +++ b/packages/bruno-lang/src/body-tag.js @@ -15,7 +15,10 @@ const bodyGraphqlBegin = regex(/^body\s*\(\s*type\s*=\s*graphql\s*\)\s*\r?\n/); // body(type=text) const bodyTextBegin = regex(/^body\s*\(\s*type\s*=\s*text\s*\)\s*\r?\n/); -const bodyEnd = regex(/^\/body\s*[\r?\n]*/); +// body(type=xml) +const bodyXmlBegin = regex(/^body\s*\(\s*type\s*=\s*xml\s*\)\s*\r?\n/); + +const bodyEnd = regex(/^[\r?\n]+\/body\s*[\r?\n]*/); const bodyJsonTag = between(bodyJsonBegin)(bodyEnd)(everyCharUntil(bodyEnd)).map((bodyJson) => { if(bodyJson && bodyJson.length) { @@ -62,8 +65,17 @@ const bodyTextTag = between(bodyTextBegin)(bodyEnd)(everyCharUntil(bodyEnd)).map } }); +const bodyXmlTag = between(bodyXmlBegin)(bodyEnd)(everyCharUntil(bodyEnd)).map((bodyXml) => { + return { + body: { + xml: bodyXml + } + } +}); + module.exports = { bodyJsonTag, bodyGraphqlTag, - bodyTextTag + bodyTextTag, + bodyXmlTag }; diff --git a/packages/bruno-lang/src/index.js b/packages/bruno-lang/src/index.js index 9f9d04e9..b1a7eb39 100644 --- a/packages/bruno-lang/src/index.js +++ b/packages/bruno-lang/src/index.js @@ -11,7 +11,8 @@ const headersTag = require('./headers-tag'); const { bodyJsonTag, bodyGraphqlTag, - bodyTextTag + bodyTextTag, + bodyXmlTag } = require('./body-tag'); const bruToJson = (fileContents) => { @@ -22,6 +23,7 @@ const bruToJson = (fileContents) => { bodyJsonTag, bodyGraphqlTag, bodyTextTag, + bodyXmlTag, anyChar ])); diff --git a/packages/bruno-lang/tests/fixtures/request.bru b/packages/bruno-lang/tests/fixtures/request.bru index aafabefe..f7294a21 100644 --- a/packages/bruno-lang/tests/fixtures/request.bru +++ b/packages/bruno-lang/tests/fixtures/request.bru @@ -36,3 +36,7 @@ body(type=text) Hello, there. You must be from the past /body +body(type=xml) + back to the ice age +/body + diff --git a/packages/bruno-lang/tests/parser.spec.js b/packages/bruno-lang/tests/parser.spec.js index 687b2ff2..54d61884 100644 --- a/packages/bruno-lang/tests/parser.spec.js +++ b/packages/bruno-lang/tests/parser.spec.js @@ -53,9 +53,10 @@ describe('bruToJson', () => { "body": { "json": '{"apikey":"secret","numbers":"+91998877665"}', "graphql": { - "query": " {\n launchesPast {\n launch_success\n }\n }\n" + "query": " {\n launchesPast {\n launch_success\n }\n }" }, - "text": " Hello, there. You must be from the past\n" + "text": " Hello, there. You must be from the past", + "xml": " back to the ice age" } }); });