MCPcopy Index your code
hub / github.com/chartbrew/chartbrew / runDataRequest

Function runDataRequest

server/sources/shared/protocols/api.protocol.js:235–558  ·  view source on GitHub ↗
({
  connection,
  dataRequest,
  chartId,
  getCache,
  filters = [],
  timezone = "",
  variables = {},
  auditContext = null,
})

Source from the content-addressed store, hash-verified

233}
234
235async function runDataRequest({
236 connection,
237 dataRequest,
238 chartId,
239 getCache,
240 filters = [],
241 timezone = "",
242 variables = {},
243 auditContext = null,
244}) {
245 if (getCache) {
246 const drCache = await checkAndGetCache(connection.id, dataRequest);
247 if (drCache) {
248 await completeConnectorAudit(auditContext, {
249 cacheHit: true,
250 connectionType: "api",
251 ...serializeResponsePreview(drCache.responseData),
252 });
253 return drCache;
254 }
255 }
256
257 const limit = dataRequest.itemsLimit
258 ? parseInt(dataRequest.itemsLimit, 10) : 0;
259 const { variables: requestVariables } = dataRequest;
260 const savedConnection = await getSavedConnection(connection);
261 const policyContext = buildApiPolicyContext("api_request_run", savedConnection);
262
263 try {
264 let processedRoute = dataRequest.route || "";
265 let processedHeaders = dataRequest.headers || {};
266 let processedBody = dataRequest.body || "";
267
268 const result = applyApiVariables(dataRequest, variables);
269 processedRoute = result.processedRoute || processedRoute;
270 processedHeaders = result.processedHeaders || processedHeaders;
271 processedBody = result.processedBody || processedBody;
272
273 let tempUrl = savedConnection.getApiUrl(savedConnection);
274 let route = processedRoute;
275 if (route && (route[0] !== "/" && route[0] !== "?")) {
276 route = `/${route}`;
277 }
278
279 tempUrl += route;
280
281 const queryParams = querystring.parse(tempUrl.split("?")[1]);
282
283 if (queryParams && Object.keys(queryParams).length > 0) {
284 if (dataRequest.VariableBindings && dataRequest.VariableBindings.length > 0) {
285 for (const q of Object.keys(queryParams)) {
286 const paramValue = queryParams[q];
287 if (typeof paramValue === "string") {
288 let processedValue = paramValue;
289 const variableMatches = [...paramValue.matchAll(/\{\{([^}]+)\}\}/g)];
290
291 for (const match of variableMatches) {
292 const variableName = match[1].trim();

Callers

nothing calls this directly

Calls 14

checkAndGetCacheFunction · 0.85
completeConnectorAuditFunction · 0.85
serializeResponsePreviewFunction · 0.85
buildApiPolicyContextFunction · 0.85
applyApiVariablesFunction · 0.85
buildChartRuntimeContextFunction · 0.85
getMomentObjFunction · 0.85
safeRequestFunction · 0.85
isArrayPresentFunction · 0.85
sanitizeSnippetFunction · 0.85
failConnectorAuditFunction · 0.85
getSavedConnectionFunction · 0.70

Tested by

no test coverage detected