PromucFlow_constructor/app/client/src/utils/ApiPaneUtils.tsx
arunvjn a31adce20d
Bug/api editor datasources (#4780)
* Fixed datasource urls' disappearance when the saved datasource has a trailing slash

* Refactored query params parser to a seperate function.
Added unit tests for the new function
2021-06-03 10:28:18 +05:30

38 lines
1.3 KiB
TypeScript

export const getIndextoUpdate = (
headers: any,
contentTypeHeaderIndex: number,
) => {
const firstEmptyHeaderRowIndex: number = headers.findIndex(
(element: { key: string; value: string }) =>
element && element.key === "" && element.value === "",
);
const newHeaderIndex =
firstEmptyHeaderRowIndex > -1 ? firstEmptyHeaderRowIndex : headers.length;
const indexToUpdate =
contentTypeHeaderIndex > -1 ? contentTypeHeaderIndex : newHeaderIndex;
return indexToUpdate;
};
export const queryParamsRegEx = /([\s\S]*?)(\?(?![^{]*})[\s\S]*)?$/;
export function parseUrlForQueryParams(url: string) {
const padQueryParams = { key: "", value: "" };
let params = Array(2).fill(padQueryParams);
const matchGroup = url.match(queryParamsRegEx) || [];
const parsedUrlWithQueryParams = matchGroup[2] || "";
if (parsedUrlWithQueryParams.indexOf("?") > -1) {
const paramsString = parsedUrlWithQueryParams.substr(
parsedUrlWithQueryParams.indexOf("?") + 1,
);
params = paramsString.split("&").map((p) => {
const firstEqualPos = p.indexOf("=");
const keyValue =
firstEqualPos > -1
? [p.substring(0, firstEqualPos), p.substring(firstEqualPos + 1)]
: [];
return { key: keyValue[0] || "", value: keyValue[1] || "" };
});
}
return params;
}