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

Method buildFetchURL

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

Source from the content-addressed store, hash-verified

1175 }
1176
1177 buildFetchURL(requestPanelEl) {
1178 let fetchUrl;
1179 const pathParamEls = [...requestPanelEl.querySelectorAll("[data-ptype='path']")];
1180 const queryParamEls = [...requestPanelEl.querySelectorAll("[data-ptype='query']")];
1181 const queryParamObjTypeEls = [...requestPanelEl.querySelectorAll("[data-ptype='query-object']")];
1182 fetchUrl = this.path;
1183 // Generate URL using Path Params
1184 pathParamEls.map((el) => {
1185 fetchUrl = fetchUrl.replace(`{${el.dataset.pname}}`, encodeURIComponent(el.value));
1186 });
1187
1188 // Query Params
1189 const urlQueryParamsMap = new Map();
1190 const queryParamsWithReservedCharsAllowed = [];
1191 if (queryParamEls.length > 0) {
1192 queryParamEls.forEach((el) => {
1193 const queryParam = new URLSearchParams();
1194 if (el.dataset.paramAllowReserved === 'true') {
1195 queryParamsWithReservedCharsAllowed.push(el.dataset.pname);
1196 }
1197 if (el.dataset.array === 'false') {
1198 if (el.value !== '') {
1199 queryParam.append(el.dataset.pname, el.value);
1200 }
1201 } else {
1202 const { paramSerializeStyle, paramSerializeExplode } = el.dataset;
1203 let vals = ((el.value && Array.isArray(el.value)) ? el.value : []);
1204 vals = Array.isArray(vals) ? vals.filter((v) => v !== '') : [];
1205 if (vals.length > 0) {
1206 if (paramSerializeStyle === 'spaceDelimited') {
1207 queryParam.append(el.dataset.pname, vals.join(' ').replace(/^\s|\s$/g, ''));
1208 } else if (paramSerializeStyle === 'pipeDelimited') {
1209 queryParam.append(el.dataset.pname, vals.join('|').replace(/^\||\|$/g, ''));
1210 } else {
1211 if (paramSerializeExplode === 'true') { // eslint-disable-line no-lonely-if
1212 vals.forEach((v) => { queryParam.append(el.dataset.pname, v); });
1213 } else {
1214 queryParam.append(el.dataset.pname, vals.join(',').replace(/^,|,$/g, ''));
1215 }
1216 }
1217 }
1218 }
1219 if (queryParam.toString()) {
1220 urlQueryParamsMap.set(el.dataset.pname, queryParam);
1221 }
1222 });
1223 }
1224
1225 // Query Params (Dynamic - create from JSON)
1226 if (queryParamObjTypeEls.length > 0) {
1227 queryParamObjTypeEls.map((el) => {
1228 const queryParam = new URLSearchParams();
1229 try {
1230 let queryParamObj = {};
1231 const { paramSerializeStyle, paramSerializeExplode, pname } = el.dataset;
1232 queryParamObj = Object.assign(queryParamObj, JSON.parse(el.value.replace(/\s+/g, ' ')));
1233 if (el.dataset.paramAllowReserved === 'true') {
1234 queryParamsWithReservedCharsAllowed.push(el.dataset.pname);

Callers 2

onTryClickMethod · 0.95
applyCURLSyntaxMethod · 0.95

Calls 10

json2xmlFunction · 0.90
mapMethod · 0.45
forEachMethod · 0.45
pushMethod · 0.45
appendMethod · 0.45
filterMethod · 0.45
toStringMethod · 0.45
setMethod · 0.45
parseMethod · 0.45
includesMethod · 0.45

Tested by

no test coverage detected