pgadmin4/web/pgadmin/static/js/api_instance.js
2024-01-03 16:09:42 +05:30

70 lines
2.2 KiB
JavaScript

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2024, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import pgAdmin from 'sources/pgadmin';
import gettext from 'sources/gettext';
import axios from 'axios';
/* Get the axios instance to call back end APIs.
Do not import axios directly, instead use this */
export default function getApiInstance(headers={}) {
return axios.create({
headers: {
'Content-type': 'application/json',
[pgAdmin.csrf_token_header]: pgAdmin.csrf_token,
...headers,
}
});
}
export function parseApiError(error, withData=false) {
if (error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
if(error.response.headers['content-type'] == 'application/json') {
let err_resp_data = error.response.data;
if (err_resp_data.response != undefined && Array.isArray(err_resp_data.response.errors)) {
return err_resp_data.response.errors[0];
} else {
let errormsg = err_resp_data.errormsg;
let data = error.response.data.data;
// If we want to use data which came with error set withData
// flag to true.
return withData ? {errormsg, data} : errormsg;
}
} else {
return error.response.statusText;
}
} else if (error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
return gettext('Connection to pgAdmin server has been lost');
} else if(error.message) {
// Something happened in setting up the request that triggered an Error
return error.message;
} else if(error.errormsg) {
// Received response JSON in socket handle
return error.errormsg;
} else {
return error;
}
}
export function callFetch(url, options, headers={}) {
return fetch(url, {
...options,
headers: {
'Content-type': 'application/json',
[pgAdmin.csrf_token_header]: pgAdmin.csrf_token,
...headers,
}
});
}