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); }