super-hero/assets/cc-common/cc-rest/ServiceRest.ts

220 lines
7.3 KiB
TypeScript
Raw Normal View History

2024-05-08 04:03:33 -07:00
// Rest API to connect to server
class ServiceRest {
request: any;
constructor() {
this.request = new XMLHttpRequest();
}
encodeQueryData(data) {
return Object.keys(data).map(function(key) {
return [key, data[key]].map(encodeURIComponent).join("=");
}).join("&");
};
get({url = '', params = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const querystring = '?' + this.encodeQueryData(params);
const fullURL = apiUrl + url + querystring;
const request = new XMLHttpRequest();
request.open("GET", fullURL, true);
request.timeout = 15000;
request.setRequestHeader("Content-Type","application/json;charset=UTF-8");
request.onreadystatechange = function () {
if (request.readyState == 4) {
//get status text
if (callback) {
if (request.responseText) {
callback(JSON.parse(request.responseText));
} else {
callbackErr();
}
}
} else if (request.readyState === 0) {
callbackErr();
}
if (request.status !== 200) {
callbackErr();
}
};
request.ontimeout = function (e) {
callbackErr();
};
request.onerror = (e) => {
callbackErr();
};
request.send();
};
getWithHeader({url = '', params = {}, headers = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const querystring = '?' + this.encodeQueryData(params);
const fullURL = apiUrl + url + querystring;
const request = new XMLHttpRequest();
request.open("GET", fullURL, true);
request.timeout = 15000;
request.setRequestHeader("Content-Type","application/json;charset=UTF-8");
Object.keys(headers).forEach( (key) => {
request.setRequestHeader(key, headers[key]);
});
request.onreadystatechange = function () {
if (request.readyState == 4) {
//get status text
if (callback) {
if (request.responseText) {
callback(JSON.parse(request.responseText));
} else {
callbackErr();
}
}
} else if (request.readyState === 0) {
callbackErr();
}
if (request.status !== 200) {
callbackErr();
}
};
request.ontimeout = function () {
callbackErr();
};
request.onerror = () => {
callbackErr();
};
request.send();
};
post({url = '', data = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const dataPost = this.encodeQueryData(data);
const fullURL = apiUrl + url;
const request = new XMLHttpRequest();
request.open('POST', fullURL, true);
request.timeout = 15000;
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function() {
if(request.readyState == 4) {
if (request.responseText) {
callback({
status: request.status,
data: JSON.parse(request.responseText)
});
} else {
callbackErr();
}
} else if (request.readyState === 0) {
callbackErr();
}
if (request.status !== 200) {
callbackErr();
}
};
request.ontimeout = function (e) {
callbackErr();
};
request.onerror = (e) => {
callbackErr();
};
request.send(dataPost);
};
postWithHeader ({url = '',params = {}, headers = {}, data = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const dataPost = JSON.stringify(data);
const querystring = '?' + this.encodeQueryData(params);
const fullURL = apiUrl + url + querystring;
const request = new XMLHttpRequest();
request.open('POST', fullURL, true);
request.timeout = 15000;
request.setRequestHeader('Content-type', 'application/json');
Object.keys(headers).forEach( (key) => {
request.setRequestHeader(key, headers[key]);
});
request.onreadystatechange = function() {
if(request.readyState == 4) {
if (request.responseText) {
callback({
status: request.status,
data: JSON.parse(request.responseText)
});
} else {
callbackErr();
}
} else if (request.readyState === 0) {
callbackErr();
}
if (request.status !== 200) {
callbackErr();
}
};
request.ontimeout = function (e) {
callbackErr();
};
request.onerror = (e) => {
callbackErr();
};
request.send(dataPost);
};
postRaw({url = '', data = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const dataPost = data;
const fullURL = apiUrl + url;
const request = new XMLHttpRequest();
request.open('POST', fullURL, true);
request.timeout = 15000;
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function() {
if(request.status == 200) {
callback({
status: request.status,
data: request.responseText
});
} else {
callbackErr();
}
};
request.ontimeout = function (e) {
callbackErr();
};
request.onerror = (e) => {
callbackErr();
};
request.send(dataPost);
};
put({url = '', data = {}, callback = (data) => {}, apiUrl = '', callbackErr = () => {}}) {
const dataPost = this.encodeQueryData(data);
const fullURL = apiUrl + url;
const request = new XMLHttpRequest();
request.open('PUT', fullURL, true);
request.timeout = 15000;
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function() {
if(request.readyState == 4) {
if (request.responseText) {
callback({
status: request.status,
data: JSON.parse(request.responseText)
});
} else {
callbackErr();
}
} else if (request.readyState === 0) {
callbackErr();
}
if (request.status !== 200) {
callbackErr();
}
};
request.ontimeout = function (e) {
callbackErr();
};
request.onerror = (e) => {
callbackErr();
};
request.send(dataPost);
};
};
const apiObject = new ServiceRest();
export default apiObject;