Select Git revision
MySQLJWKSDAO.php
-
Sonia Zorba authoredSonia Zorba authored
index.js 4.40 KiB
/*
* This file is part of vospace-ui
* Copyright (C) 2021 Istituto Nazionale di Astrofisica
* SPDX-License-Identifier: GPL-3.0-or-later
*/
const BASE_API_URL = process.env.VUE_APP_API_BASE_URL;
import axios from 'axios';
import store from '../../store';
import main from '../../main';
function apiRequest(options, showLoading = true, handleValidationErrors = false) {
if (showLoading) {
store.commit('setLoading', true);
}
return new Promise((resolve, reject) => {
axios(options)
.then(response => {
if (response.status === 204) {
resolve({});
} else {
resolve(response.data);
}
if (showLoading) {
store.commit('setLoading', false);
}
})
.catch(error => {
store.commit('setLoading', false);
if (handleValidationErrors && error.response && error.response.status === 400) {
reject(error.response.data);
} else {
main.showError(getErrorMessage(error));
}
});
});
}
function getErrorMessage(error) {
if (error.response && error.response.data && error.response.data.message) {
return error.response.data.message;
} else if (error.message) {
return error.message;
} else {
return 'Unknown error';
}
}
function escapePath(path) {
return path.split('/').map(p => encodeURIComponent(p)).join('/');
}
export default {
getNode(path, loading) {
let url = BASE_API_URL + 'nodes/' + escapePath(path);
return apiRequest({
method: 'GET',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
}
}, (typeof loading !== 'undefined') ? loading : true, true);
},
loadJobs() {
let url = BASE_API_URL + 'jobs';
return apiRequest({
method: 'GET',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
}
}, false, true);
},
getUserInfo() {
let url = BASE_API_URL + 'user';
return apiRequest({
method: 'GET',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
}
}, false, false);
},
startAsyncRecallJob(paths) {
let url = BASE_API_URL + 'recall';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data: paths
});
},
createFolder(path, newFolderName) {
let url = BASE_API_URL + 'folder';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data: {
parentPath: path,
name: newFolderName
}
});
},
prepareForUpload(path, files) {
let url = BASE_API_URL + 'preupload';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data: {
parentPath: path,
files: files
}
});
},
uploadFile(url, file) {
let formData = new FormData();
formData.append('file', file);
return axios.put(url, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
},
deleteNodes(paths) {
let url = BASE_API_URL + 'delete';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data: paths
}, true, true);
},
keepalive() {
let url = BASE_API_URL + 'keepalive';
return apiRequest({
method: 'GET',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
}
}, false, false);
},
getSharingInfo() {
let url = BASE_API_URL + 'sharing';
return apiRequest({
method: 'GET',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
}
}, true, true);
},
setNodeGroups(data) {
let url = BASE_API_URL + 'sharing';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data
}, true, true);
},
moveNode(data) {
let url = BASE_API_URL + 'move';
return apiRequest({
method: 'POST',
url: url,
withCredentials: true,
headers: {
'Cache-Control': 'no-cache'
},
data
}, true, true);
}
}