bruno/renderer/utils/network/index.js

70 lines
1.7 KiB
JavaScript
Raw Normal View History

2022-03-19 14:03:16 +01:00
import each from 'lodash/each';
import { rawRequest, gql } from 'graphql-request';
const sendNetworkRequest = async (item) => {
return new Promise((resolve, reject) => {
if(item.type === 'http-request') {
const timeStart = Date.now();
sendHttpRequest(item.draft ? item.draft.request : item.request)
.then((response) => {
const timeEnd = Date.now();
resolve({
state: 'success',
data: response.data,
headers: Object.entries(response.headers),
2022-03-22 13:48:20 +01:00
size: response.headers["content-length"] || 0,
status: response.status,
duration: timeEnd - timeStart
});
})
.catch((err) => reject(err));
}
});
};
const sendHttpRequest = async (request) => {
return new Promise((resolve, reject) => {
2022-03-22 13:48:20 +01:00
const { ipcRenderer } = window;
2022-03-19 14:03:16 +01:00
const headers = {};
each(request.headers, (h) => {
if(h.enabled) {
headers[h.name] = h.value;
}
});
let options = {
method: request.method,
url: request.url,
2022-03-19 14:03:16 +01:00
headers: headers
};
2022-03-20 09:32:33 +01:00
if(request.body && request.body.mode === 'json' && request.body.content) {
2022-03-22 13:48:20 +01:00
options.data = JSON.parse(request.body.content);
2022-03-20 09:32:33 +01:00
}
2022-03-22 13:48:20 +01:00
console.log(request);
2022-03-20 09:32:33 +01:00
ipcRenderer
.invoke('send-http-request', options)
.then(resolve)
.catch(reject);
});
};
const sendGraphqlRequest = async (request,) => {
const query = gql`${request.request.body.graphql.query}`;
const { data, errors, extensions, headers, status } = await rawRequest(request.request.url, query);
return {
data,
headers,
data,
errors
}
};
export {
sendNetworkRequest
};