mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-24 21:25:45 +00:00
Implement Response URL variable (#2983)
This commit is contained in:
@@ -463,6 +463,7 @@ const runSingleRequest = async function (
|
||||
statusText: null,
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
},
|
||||
error: err?.message || err?.errors?.map(e => e?.message)?.at(0) || err?.code || 'Request Failed!',
|
||||
@@ -602,6 +603,7 @@ const runSingleRequest = async function (
|
||||
statusText: response.statusText,
|
||||
headers: response.headers,
|
||||
data: response.data,
|
||||
url: response.request ? response.request.protocol + '//' + response.request.host + response.request.path : null,
|
||||
responseTime
|
||||
},
|
||||
error: null,
|
||||
@@ -630,6 +632,7 @@ const runSingleRequest = async function (
|
||||
statusText: null,
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
},
|
||||
status: 'error',
|
||||
|
||||
@@ -901,6 +901,7 @@ const registerNetworkIpc = (mainWindow) => {
|
||||
dataBuffer: response.dataBuffer.toString('base64'),
|
||||
size: Buffer.byteLength(response.dataBuffer),
|
||||
duration: responseTime ?? 0,
|
||||
url: response.request ? response.request.protocol + '//' + response.request.host + response.request.path : null,
|
||||
timeline: response.timeline
|
||||
};
|
||||
} catch (error) {
|
||||
@@ -1208,6 +1209,7 @@ const registerNetworkIpc = (mainWindow) => {
|
||||
data: response.data,
|
||||
responseTime: response.responseTime,
|
||||
timeline: response.timeline,
|
||||
url: response.request ? response.request.protocol + '//' + response.request.host + response.request.path : null
|
||||
},
|
||||
...eventData
|
||||
});
|
||||
|
||||
@@ -9,6 +9,7 @@ class BrunoResponse {
|
||||
this.headers = res ? res.headers : null;
|
||||
this.body = res ? res.data : null;
|
||||
this.responseTime = res ? res.responseTime : null;
|
||||
this.url = res?.request ? res.request.protocol + '//' + res.request.host + res.request.path : null;
|
||||
|
||||
// Make the instance callable
|
||||
const callable = (...args) => get(this.body, ...args);
|
||||
@@ -42,6 +43,10 @@ class BrunoResponse {
|
||||
return this.res ? this.res.responseTime : null;
|
||||
}
|
||||
|
||||
getUrl() {
|
||||
return this.res ? this.url : null;
|
||||
}
|
||||
|
||||
setBody(data) {
|
||||
if (!this.res) {
|
||||
return;
|
||||
|
||||
@@ -10,17 +10,20 @@ const addBrunoResponseShimToContext = (vm, res) => {
|
||||
const headers = marshallToVm(res?.headers, vm);
|
||||
const body = marshallToVm(res?.body, vm);
|
||||
const responseTime = marshallToVm(res?.responseTime, vm);
|
||||
const url = marshallToVm(res?.url, vm);
|
||||
|
||||
vm.setProp(resFn, 'status', status);
|
||||
vm.setProp(resFn, 'statusText', statusText);
|
||||
vm.setProp(resFn, 'headers', headers);
|
||||
vm.setProp(resFn, 'body', body);
|
||||
vm.setProp(resFn, 'responseTime', responseTime);
|
||||
vm.setProp(resFn, 'url', url);
|
||||
|
||||
status.dispose();
|
||||
headers.dispose();
|
||||
body.dispose();
|
||||
responseTime.dispose();
|
||||
url.dispose();
|
||||
statusText.dispose();
|
||||
|
||||
let getStatusText = vm.newFunction('getStatusText', function () {
|
||||
@@ -59,6 +62,12 @@ const addBrunoResponseShimToContext = (vm, res) => {
|
||||
vm.setProp(resFn, 'getResponseTime', getResponseTime);
|
||||
getResponseTime.dispose();
|
||||
|
||||
let getUrl = vm.newFunction('getUrl', function () {
|
||||
return marshallToVm(res.getUrl(), vm);
|
||||
});
|
||||
vm.setProp(resFn, 'getUrl', getUrl);
|
||||
getUrl.dispose();
|
||||
|
||||
let setBody = vm.newFunction('setBody', function (data) {
|
||||
res.setBody(vm.dump(data));
|
||||
});
|
||||
|
||||
@@ -117,6 +117,7 @@ const createResponseParser = (response = {}) => {
|
||||
res.headers = response.headers;
|
||||
res.body = response.data;
|
||||
res.responseTime = response.responseTime;
|
||||
res.url = response.request ? response.request.protocol + '//' + response.request.host + response.request.path : null;
|
||||
|
||||
res.jq = (expr) => {
|
||||
const output = jsonQuery(expr, { data: response.data });
|
||||
|
||||
23
packages/bruno-tests/collection/scripting/api/res/getUrl.bru
Normal file
23
packages/bruno-tests/collection/scripting/api/res/getUrl.bru
Normal file
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: getUrl
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{host}}/ping
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
assert {
|
||||
res.status: eq 200
|
||||
res.body: eq pong
|
||||
}
|
||||
|
||||
tests {
|
||||
test("res.getUrl()", function() {
|
||||
const url = res.getUrl();
|
||||
expect(url).to.equal("https://testbench-sanity.usebruno.com/ping");
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user