2024-06-11 10:35:26 +00:00
|
|
|
import axios from 'axios';
|
|
|
|
import cookie from 'react-cookies';
|
|
|
|
import { siteRoot } from '../../utils/constants';
|
|
|
|
|
2024-06-12 01:56:53 +00:00
|
|
|
class SeahubMetadataAPI {
|
2024-06-11 10:35:26 +00:00
|
|
|
init({ server, username, password, token }) {
|
|
|
|
this.server = server;
|
|
|
|
this.username = username;
|
|
|
|
this.password = password;
|
|
|
|
this.token = token; //none
|
|
|
|
if (this.token && this.server) {
|
|
|
|
this.req = axios.create({
|
|
|
|
baseURL: this.server,
|
|
|
|
headers: { 'Authorization': 'Token ' + this.token },
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
initForSeahubUsage({ siteRoot, xcsrfHeaders }) {
|
|
|
|
if (siteRoot && siteRoot.charAt(siteRoot.length-1) === '/') {
|
|
|
|
var server = siteRoot.substring(0, siteRoot.length-1);
|
|
|
|
this.server = server;
|
|
|
|
} else {
|
|
|
|
this.server = siteRoot;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.req = axios.create({
|
|
|
|
headers: {
|
|
|
|
'X-CSRFToken': xcsrfHeaders,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
_sendPostRequest(url, form) {
|
|
|
|
if (form.getHeaders) {
|
|
|
|
return this.req.post(url, form, {
|
|
|
|
headers:form.getHeaders()
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
return this.req.post(url, form);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
getMetadataManagementEnabledStatus(repoID) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/';
|
|
|
|
return this.req.get(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
enableMetadataManagement(repoID) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/';
|
2024-06-12 01:56:53 +00:00
|
|
|
return this.req.put(url);
|
2024-06-11 10:35:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
disableMetadataManagement(repoID) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/';
|
|
|
|
return this.req.delete(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
getMetadataRecords(repoID, params) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/records/';
|
|
|
|
return this.req.get(url, {params: params});
|
|
|
|
}
|
|
|
|
|
|
|
|
addMetadataRecords(repoID, parentDir, name) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/records/';
|
|
|
|
const data = {
|
|
|
|
'parent_dir': parentDir,
|
|
|
|
'name': name,
|
|
|
|
};
|
|
|
|
return this.req.post(url, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
updateMetadataRecord(repoID, recordID, creator, createTime, modifier, modifyTime, parentDir, name) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/records/' + recordID + '/';
|
|
|
|
const data = {
|
|
|
|
'creator': creator,
|
|
|
|
'create_time': createTime,
|
|
|
|
'modifier': modifier,
|
|
|
|
'modify_time': modifyTime,
|
|
|
|
'current_dir': parentDir,
|
|
|
|
'name': name,
|
|
|
|
};
|
|
|
|
return this.req.put(url, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
deleteMetadataRecord(repoID, recordID) {
|
|
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/records/' + recordID + '/';
|
|
|
|
return this.req.delete(url);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-12 01:56:53 +00:00
|
|
|
const seahubMetadataAPI = new SeahubMetadataAPI();
|
2024-06-11 10:35:26 +00:00
|
|
|
const xcsrfHeaders = cookie.load('sfcsrftoken');
|
2024-06-12 01:56:53 +00:00
|
|
|
seahubMetadataAPI.initForSeahubUsage({ siteRoot, xcsrfHeaders });
|
2024-06-11 10:35:26 +00:00
|
|
|
|
2024-06-12 01:56:53 +00:00
|
|
|
export default seahubMetadataAPI;
|