Files
luos/resources/assets/js/api/Api.js

215 lines
6.9 KiB
JavaScript
Raw Normal View History

2020-12-04 13:33:23 +00:00
import _ from "lodash";
import axios from "axios";
const urlBase = "{server}/api/1.0/{workspace}{service}";
class Api {
constructor(services) {
this.services = services;
}
2020-12-04 13:33:23 +00:00
getUrl(keys, service) {
let k;
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;
}
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,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
server = window.config.SYS_SERVER_API,
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",
"Authorization": `Bearer ` + credentials.accessToken,
"Accept-Language": lang
2020-12-04 13:33:23 +00:00
}
});
}
2020-12-04 18:57:26 +00:00
get(options) {
let service = options.service || "",
params = options.params || {},
keys = options.keys || {},
url,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
lang = window.config.SYS_LANG,
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",
"Authorization": `Bearer ` + credentials.accessToken,
"Accept-Language": lang
2020-12-04 18:57:26 +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 || {},
url,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
lang = window.config.SYS_LANG,
server = window.config.SYS_SERVER_API;
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({
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": `Bearer ` + credentials.accessToken,
"Accept-Language": lang
2021-06-01 18:59:33 +00:00
}, headers)
});
}
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,
credentials = window.config.SYS_CREDENTIALS,
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-06-01 18:59:33 +00:00
delete(options) {
let service = options.service || "",
id = options.id || {},
keys = options.keys || {},
url,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
lang = window.config.SYS_LANG,
server = window.config.SYS_SERVER_API;
url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service);
return axios({
method: "delete",
url: url + id,
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": `Bearer ` + credentials.accessToken,
"Accept-Language": lang
}
});
}
put(options) {
let service = options.service || "",
params = options.params || {},
data = options.data || {},
id = options.id || {},
keys = options.keys || {},
url,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
lang = window.config.SYS_LANG,
server = window.config.SYS_SERVER_API;
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",
"Authorization": `Bearer ` + credentials.accessToken
}
});
}
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,
credentials = window.config.SYS_CREDENTIALS,
workspace = window.config.SYS_WORKSPACE,
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);
return axios({
method: "put",
2021-05-13 14:45:40 +00:00
url: url,
params,
data,
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": `Bearer ` + credentials.accessToken,
"Accept-Language": lang
}
});
2020-12-04 13:33:23 +00:00
}
}
export default Api;