UNPKG

low-code-service

Version:

to handle workflow execution, handlebars execution and condition execution for low code service

69 lines (57 loc) 2.54 kB
import { cleanHandleBarTemplate, getTemplateData } from '../handlebars/handlebars-handler'; import { validateDataUsingFilters } from '../condition-executor/condition-handler'; import { GetWorkFlowRequestData } from './types'; function convertToString(data: any) { if (typeof data === 'string') { return data; } return JSON.stringify(data); } export const getRequestData = (apiData: GetWorkFlowRequestData, params) => { const { headerTemplate, requestTemplate, urlTemplate } = apiData; let compiledHeaders = getTemplateData(convertToString(headerTemplate) || '', params); compiledHeaders = cleanHandleBarTemplate(compiledHeaders, '{}'); compiledHeaders = JSON.parse(compiledHeaders); let compiledRequestBody = getTemplateData(convertToString(requestTemplate) || '', params); compiledRequestBody = cleanHandleBarTemplate(compiledRequestBody, '{}'); compiledRequestBody = JSON.parse(compiledRequestBody); let compiledUrl = getTemplateData(convertToString(urlTemplate) || '', params); compiledUrl = cleanHandleBarTemplate(compiledUrl, ''); let isFormData = false; if (compiledHeaders) { const contentType = compiledHeaders['Content-Type'] || compiledHeaders['content-type']; if (contentType && contentType.includes('application/x-www-form-urlencoded')) { isFormData = true; } } return { headers: compiledHeaders, [isFormData ? 'form': 'body']: compiledRequestBody, url: compiledUrl, }; } const getRequestBody = (obj) => { if (!obj) { return ''; } let strToReturn = ''; for (const key in obj) { strToReturn += ` -d '${key}=${obj[key]}'`; } return strToReturn; } export const getCurlCommand = (apiData: GetWorkFlowRequestData, params) => { try { const { method } = apiData; const { headers: compiledHeaderTemplate, body: compiledRequestTemplate, url: compiledUrl, form: compiledFormData } = getRequestData(apiData, params); const finalHeaders = Object.keys(compiledHeaderTemplate).reduce((acc, curr) => { acc+=(` -H '${curr}:${compiledHeaderTemplate[curr]}'`); return acc; }, ''); const body = compiledFormData ? `${getRequestBody(compiledFormData)}` : `-d '${JSON.stringify(compiledRequestTemplate)}'`; const curlCommand = `curl -X ${method} ${finalHeaders} ${body} ${compiledUrl}`; return curlCommand; } catch (err) { throw new Error('Failed to generate CURL'); } }