2020-12-04 13:33:23 +00:00
|
|
|
import _ from "lodash";
|
|
|
|
|
import axios from "axios";
|
2021-12-14 16:18:55 -04:00
|
|
|
import { RCBase64 } from '../utils/utils.js'
|
|
|
|
|
var base64 = RCBase64();
|
2020-12-04 13:33:23 +00:00
|
|
|
const urlBase = "{server}/api/1.0/{workspace}{service}";
|
2021-12-14 16:18:55 -04:00
|
|
|
var credentials = JSON.parse(base64.decode(window.config.SYS_CREDENTIALS));
|
2021-07-26 19:52:42 +00:00
|
|
|
class Api {
|
|
|
|
|
constructor(services) {
|
|
|
|
|
this.services = services;
|
|
|
|
|
}
|
2020-12-04 13:33:23 +00:00
|
|
|
|
|
|
|
|
getUrl(keys, service) {
|
|
|
|
|
let k;
|
2021-07-26 19:52:42 +00:00
|
|
|
let url = urlBase.replace(/{service}/, this.services[service]);
|
2020-12-04 13:33:23 +00:00
|
|
|
let index;
|
|
|
|
|
let reg;
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
|
|
|
for (k in keys) {
|
|
|
|
|
if (Object.prototype.hasOwnProperty.call(keys, k)) {
|
|
|
|
|
url = url.replace(new RegExp(`{${k}}`, "g"), keys[k]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
index = url.indexOf("?");
|
|
|
|
|
if (index !== -1) {
|
|
|
|
|
reg = new RegExp("{\\w+}", "g");
|
|
|
|
|
if (reg.exec(url)) {
|
|
|
|
|
url = url.substring(0, index);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return url;
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2020-12-04 13:33:23 +00:00
|
|
|
/**
|
|
|
|
|
* options.method = "post|get"
|
|
|
|
|
* options.service = "ENDPOINT ALIAS"
|
|
|
|
|
* options.keys = "keys for URL"
|
|
|
|
|
* @param {*} options
|
|
|
|
|
*/
|
|
|
|
|
fetch(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
data = options.data || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-03-24 14:56:11 +00:00
|
|
|
server = window.config.SYS_SERVER_API,
|
2021-05-31 18:19:50 +00:00
|
|
|
lang = window.config.SYS_LANG,
|
2020-12-04 13:33:23 +00:00
|
|
|
method = options.method || "get";
|
|
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
|
|
|
|
return axios({
|
|
|
|
|
method: method,
|
|
|
|
|
url: url,
|
|
|
|
|
data: data,
|
|
|
|
|
headers: {
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-05-31 18:19:50 +00:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2020-12-04 13:33:23 +00:00
|
|
|
}
|
|
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2020-12-04 18:57:26 +00:00
|
|
|
get(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
params = options.params || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-05-31 18:19:50 +00:00
|
|
|
lang = window.config.SYS_LANG,
|
2021-03-24 14:56:11 +00:00
|
|
|
server = window.config.SYS_SERVER_API;
|
2020-12-04 18:57:26 +00:00
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
|
|
|
|
return axios({
|
|
|
|
|
method: "get",
|
|
|
|
|
url: url,
|
|
|
|
|
params,
|
|
|
|
|
headers: {
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-05-31 18:19:50 +00:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2020-12-04 18:57:26 +00:00
|
|
|
}
|
|
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2020-12-10 17:37:02 +00:00
|
|
|
post(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
params = options.params || {},
|
|
|
|
|
data = options.data || {},
|
|
|
|
|
keys = options.keys || {},
|
2021-06-01 18:59:33 +00:00
|
|
|
headers = options.headers || {},
|
2020-12-10 17:37:02 +00:00
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-05-31 18:19:50 +00:00
|
|
|
lang = window.config.SYS_LANG,
|
2021-03-24 14:56:11 +00:00
|
|
|
server = window.config.SYS_SERVER_API;
|
2020-12-10 17:37:02 +00:00
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
|
|
|
|
return axios({
|
|
|
|
|
method: "post",
|
|
|
|
|
url: url,
|
|
|
|
|
params,
|
|
|
|
|
data,
|
2021-06-01 18:59:33 +00:00
|
|
|
headers: _.extend({
|
2020-12-10 17:37:02 +00:00
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-05-31 18:19:50 +00:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2021-06-01 18:59:33 +00:00
|
|
|
}, headers)
|
2020-12-10 17:37:02 +00:00
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2021-06-01 18:59:33 +00:00
|
|
|
|
|
|
|
|
postFiles(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
params = options.params || {},
|
|
|
|
|
data = options.data || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
headers = options.headers || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
|
|
|
|
server = window.config.SYS_SERVER_API;
|
|
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
|
|
|
|
return axios({
|
|
|
|
|
method: "post",
|
|
|
|
|
url: url,
|
|
|
|
|
params,
|
|
|
|
|
data,
|
|
|
|
|
headers: _.extend({
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Authorization": `Bearer ` + credentials.accessToken
|
|
|
|
|
}, headers)
|
|
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2021-06-01 18:59:33 +00:00
|
|
|
|
2020-12-10 17:37:02 +00:00
|
|
|
delete(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
id = options.id || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-05-31 18:19:50 +00:00
|
|
|
lang = window.config.SYS_LANG,
|
2021-03-24 14:56:11 +00:00
|
|
|
server = window.config.SYS_SERVER_API;
|
2020-12-10 17:37:02 +00:00
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
|
|
|
|
return axios({
|
|
|
|
|
method: "delete",
|
|
|
|
|
url: url + id,
|
|
|
|
|
headers: {
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-05-31 18:19:50 +00:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2020-12-10 17:37:02 +00:00
|
|
|
}
|
|
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2020-12-10 11:19:30 -04:00
|
|
|
put(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
params = options.params || {},
|
|
|
|
|
data = options.data || {},
|
|
|
|
|
id = options.id || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-05-31 18:19:50 +00:00
|
|
|
lang = window.config.SYS_LANG,
|
2021-03-24 14:56:11 +00:00
|
|
|
server = window.config.SYS_SERVER_API;
|
2020-12-10 11:19:30 -04:00
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
2021-06-01 18:59:33 +00:00
|
|
|
return axios({
|
|
|
|
|
method: "put",
|
|
|
|
|
url: url,
|
|
|
|
|
params,
|
|
|
|
|
data,
|
|
|
|
|
headers: {
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-09-08 11:47:24 -04:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2021-06-01 18:59:33 +00:00
|
|
|
}
|
|
|
|
|
});
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
2021-06-01 18:59:33 +00:00
|
|
|
/**
|
|
|
|
|
* Put action in AXIOS
|
|
|
|
|
* @param {*} options
|
|
|
|
|
* @returns
|
|
|
|
|
*/
|
|
|
|
|
update(options) {
|
|
|
|
|
let service = options.service || "",
|
|
|
|
|
params = options.params || {},
|
|
|
|
|
data = options.data || {},
|
|
|
|
|
keys = options.keys || {},
|
|
|
|
|
url,
|
|
|
|
|
workspace = window.config.SYS_WORKSPACE,
|
2021-07-20 11:50:16 -04:00
|
|
|
lang = window.config.SYS_LANG,
|
2021-06-01 18:59:33 +00:00
|
|
|
server = window.config.SYS_SERVER_API;
|
|
|
|
|
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
|
|
|
|
|
|
2020-12-10 11:19:30 -04:00
|
|
|
return axios({
|
|
|
|
|
method: "put",
|
2021-05-13 14:45:40 +00:00
|
|
|
url: url,
|
2020-12-10 11:19:30 -04:00
|
|
|
params,
|
|
|
|
|
data,
|
|
|
|
|
headers: {
|
|
|
|
|
"Accept": "application/json",
|
|
|
|
|
"Content-Type": "application/json",
|
2021-12-08 21:30:57 +00:00
|
|
|
"Cache-Control": "no-cache, must-revalidate",
|
2021-05-31 18:19:50 +00:00
|
|
|
"Authorization": `Bearer ` + credentials.accessToken,
|
|
|
|
|
"Accept-Language": lang
|
2020-12-10 11:19:30 -04:00
|
|
|
}
|
|
|
|
|
});
|
2020-12-04 13:33:23 +00:00
|
|
|
}
|
2021-07-26 19:52:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default Api;
|