From 5cf807b770a1ef83e3341f23bbe440fbd547e259 Mon Sep 17 00:00:00 2001 From: Pragadesh-45 <54320162+Pragadesh-45@users.noreply.github.com> Date: Wed, 6 May 2026 13:49:20 +0530 Subject: [PATCH] feat: implement proxy-aware API fetching using axios instance (#7767) --- packages/bruno-electron/src/ipc/apiSpec.js | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/bruno-electron/src/ipc/apiSpec.js b/packages/bruno-electron/src/ipc/apiSpec.js index b8f553117..0e95eb23e 100644 --- a/packages/bruno-electron/src/ipc/apiSpec.js +++ b/packages/bruno-electron/src/ipc/apiSpec.js @@ -3,6 +3,8 @@ const { openApiSpecDialog, openApiSpec } = require('../app/apiSpecs'); const { writeFile } = require('../utils/filesystem'); const { removeApiSpecUid } = require('../cache/apiSpecUids'); const { removeApiSpecFromWorkspace } = require('../utils/workspace-config'); +const { getCertsAndProxyConfig } = require('./network/cert-utils'); +const { makeAxiosInstance } = require('./network/axios-instance'); const path = require('path'); const fs = require('fs'); @@ -62,8 +64,25 @@ const registerRendererEventHandlers = (mainWindow, watcher, lastOpenedApiSpecs) ipcMain.handle('renderer:fetch-api-spec', async (event, url) => { try { - const data = await fetch(url).then((res) => res.text()); - return data; + // Use a proxy-aware axios instance so that the user's configured proxy + const { proxyMode, proxyConfig, httpsAgentRequestFields, interpolationOptions } + = await getCertsAndProxyConfig({ + collectionUid: null, + collection: { promptVariables: {} }, + request: {}, + envVars: {}, + runtimeVariables: {}, + processEnvVars: {}, + collectionPath: '', + globalEnvironmentVariables: {} + }); + + const axiosInstance = makeAxiosInstance({ proxyMode, proxyConfig, httpsAgentRequestFields, interpolationOptions }); + const response = await axiosInstance.get(url, { + timeout: 30000, + transformResponse: [(data) => data] + }); + return response.data; } catch (error) { return Promise.reject(error); }