MCPcopy Index your code
hub / github.com/rapi-doc/RapiDoc / buildFetchBodyOptions

Method buildFetchBodyOptions

src/components/api-request.js:1371–1449  ·  view source on GitHub ↗
(requestPanelEl)

Source from the content-addressed store, hash-verified

1369 }
1370
1371 buildFetchBodyOptions(requestPanelEl) {
1372 const requestBodyContainerEl = requestPanelEl.querySelector('.request-body-container');
1373 const fetchOptions = {
1374 method: this.method.toUpperCase(),
1375 };
1376 if (requestBodyContainerEl) {
1377 const requestBodyType = requestBodyContainerEl.dataset.selectedRequestBodyType;
1378 if (requestBodyType.includes('form-urlencoded')) {
1379 // url-encoded Form Params (dynamic) - Parse JSON and generate Params
1380 const formUrlDynamicTextAreaEl = requestPanelEl.querySelector("[data-ptype='dynamic-form']");
1381 if (formUrlDynamicTextAreaEl) {
1382 const val = formUrlDynamicTextAreaEl.value;
1383 const formUrlDynParams = new URLSearchParams();
1384 let proceed = true;
1385 let tmpObj;
1386 if (val) {
1387 try {
1388 tmpObj = JSON.parse(val);
1389 } catch (err) {
1390 proceed = false;
1391 console.warn('RapiDoc: Invalid JSON provided', err); // eslint-disable-line no-console
1392 }
1393 } else {
1394 proceed = false;
1395 }
1396 if (proceed) {
1397 for (const prop in tmpObj) {
1398 formUrlDynParams.append(prop, JSON.stringify(tmpObj[prop]));
1399 }
1400 fetchOptions.body = formUrlDynParams;
1401 }
1402 } else {
1403 // url-encoded Form Params (regular)
1404 const formUrlEls = [...requestPanelEl.querySelectorAll("[data-ptype='form-urlencode']")];
1405 const formUrlParams = new URLSearchParams();
1406 formUrlEls
1407 .filter((v) => (v.type !== 'file'))
1408 .forEach((el) => {
1409 if (el.dataset.array === 'false') {
1410 if (el.value) {
1411 formUrlParams.append(el.dataset.pname, el.value);
1412 }
1413 } else {
1414 const vals = (el.value && Array.isArray(el.value)) ? el.value.join(',') : '';
1415 formUrlParams.append(el.dataset.pname, vals);
1416 }
1417 });
1418 fetchOptions.body = formUrlParams;
1419 }
1420 } else if (requestBodyType.includes('form-data')) {
1421 const formDataParams = new FormData();
1422 const formDataEls = [...requestPanelEl.querySelectorAll("[data-ptype='form-data']")];
1423 formDataEls.forEach((el) => {
1424 if (el.dataset.array === 'false') {
1425 if (el.type === 'file' && el.files[0]) {
1426 formDataParams.append(el.dataset.pname, el.files[0], el.files[0].name);
1427 } else if (el.value) {
1428 formDataParams.append(el.dataset.pname, el.value);

Callers 2

onTryClickMethod · 0.95
applyCURLSyntaxMethod · 0.95

Calls 5

includesMethod · 0.45
parseMethod · 0.45
appendMethod · 0.45
forEachMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected