mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-07 14:08:38 +00:00
feat: add certs and proxy config to bru.sendRequest API (#6988)
* feat: add certs and proxy config to bru.sendRequest API Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: handle URL string argument in bru.sendRequest When bru.sendRequest is called with a plain URL string instead of a config object, the function now normalizes it to { url: string } before processing. This fixes the case where spreading a string created an invalid config object. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add variable interpolation to bru.sendRequest certs and proxy config Interpolate environment variables in clientCertificates and proxy configuration for bru.sendRequest API, enabling use of variables like {{CERT_PATH}} or {{PROXY_HOST}} in certificate paths and proxy settings. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: use interpolateObject for certs and proxy config interpolation - Add interpolateObject to electron's interpolate-string.js using buildCombinedVars pattern (matches CLI implementation) - Simplify cert-utils.js by using interpolateObject instead of manual field-by-field interpolation - Add interpolation for clientCertificates and proxy config in CLI's run-single-request.js for bru.sendRequest Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: add all variable types to sendRequest interpolation options - Add globalEnvVars, collectionVariables, folderVariables, requestVariables to sendRequestInterpolationOptions for complete variable support - Use cached system proxy instead of redundant getSystemProxy() call - Remove duplicate getOptions() call Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: skip CA cert loading when TLS verification is disabled Only load CA certificates when shouldVerifyTls is true, since they are not used for validation when TLS verification is disabled. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,37 @@ const runSingleRequest = async function (
|
||||
const scriptingConfig = get(brunoConfig, 'scripts', {});
|
||||
scriptingConfig.runtime = runtime;
|
||||
|
||||
// Build certsAndProxyConfig for bru.sendRequest
|
||||
const options = getOptions();
|
||||
const systemProxyConfig = options['cachedSystemProxy'];
|
||||
const sendRequestInterpolationOptions = {
|
||||
envVars: envVariables,
|
||||
runtimeVariables,
|
||||
processEnvVars,
|
||||
globalEnvVars,
|
||||
collectionVariables: request.collectionVariables || {},
|
||||
folderVariables: request.folderVariables || {},
|
||||
requestVariables: request.requestVariables || {}
|
||||
};
|
||||
const rawClientCertificates = get(brunoConfig, 'clientCertificates');
|
||||
const rawProxyConfig = get(brunoConfig, 'proxy', {});
|
||||
const certsAndProxyConfig = {
|
||||
collectionPath,
|
||||
options: {
|
||||
noproxy: get(options, 'noproxy', false),
|
||||
shouldVerifyTls: !get(options, 'insecure', false),
|
||||
shouldUseCustomCaCertificate: !!options['cacert'],
|
||||
customCaCertificateFilePath: options['cacert'],
|
||||
shouldKeepDefaultCaCertificates: !options['ignoreTruststore']
|
||||
},
|
||||
clientCertificates: rawClientCertificates ? interpolateObject(rawClientCertificates, sendRequestInterpolationOptions) : undefined,
|
||||
collectionLevelProxy: transformProxyConfig(interpolateObject(rawProxyConfig, sendRequestInterpolationOptions)),
|
||||
systemProxyConfig
|
||||
};
|
||||
|
||||
// Add certsAndProxyConfig to request object for bru.sendRequest
|
||||
request.certsAndProxyConfig = certsAndProxyConfig;
|
||||
|
||||
// run pre request script
|
||||
const requestScriptFile = get(request, 'script.req');
|
||||
const collectionName = collection?.brunoConfig?.name;
|
||||
@@ -237,7 +268,6 @@ const runSingleRequest = async function (
|
||||
request.url = `http://${request.url}`;
|
||||
}
|
||||
|
||||
const options = getOptions();
|
||||
const insecure = get(options, 'insecure', false);
|
||||
const noproxy = get(options, 'noproxy', false);
|
||||
const cachedSystemProxy = get(options, 'cachedSystemProxy', null);
|
||||
|
||||
Reference in New Issue
Block a user