uc-base-libraries
Version:
Typescript libraries for UC projects
240 lines • 8.89 kB
JavaScript
System.register(["./DateTime", "./SiteInfo", "./Debug"], function (exports_1, context_1) {
"use strict";
var DateTime, SiteInfo, Debug, callTypes;
var __moduleName = context_1 && context_1.id;
function addDataToUrl(url, name, value) {
if (url.indexOf(name + '=') >= 0) {
url = url.replace(name + '=', name + 'Old=');
}
if (url.indexOf('?') >= 0) {
url = url + '&' + name + '=' + value;
}
else {
url = url + '?' + name + '=' + value;
}
return url;
}
exports_1("addDataToUrl", addDataToUrl);
function addFormatToUrl(url) {
return addDataToUrl(url, 'Format', 'JSON');
}
exports_1("addFormatToUrl", addFormatToUrl);
function addAntiForgeryToken(data) {
return data;
}
exports_1("addAntiForgeryToken", addAntiForgeryToken);
function apiCall(type, url, sendData, successCallback, errorCallback, beforeSend) {
let cntPiece = 'Cnt=' + DateTime.getTimeCount();
if (url.indexOf('?') !== -1) {
cntPiece = '&' + cntPiece;
}
else {
cntPiece = '?' + cntPiece;
}
let fUrl = url + cntPiece;
if (url.indexOf('://') <= 0) {
if (url.indexOf(SiteInfo.virtualUrl()) === 0) {
url = url.replace(SiteInfo.virtualUrl(), '');
}
if (url.lastIndexOf('/', 0) === 0) {
url = url.substring(1);
}
if (url.indexOf(SiteInfo.virtualUrl()) === 0) {
url = url.replace(SiteInfo.virtualUrl(), '');
}
fUrl = SiteInfo.getVirtualURL(url) + cntPiece;
}
fUrl = fUrl.replaceAll('//', '/').replaceAll(':/', '://');
let pd = true;
let sd = sendData;
let contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
if (sendData instanceof FormData) {
contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
contentType = false;
pd = false;
}
else if (sendData instanceof Blob) {
contentType = 'application/octet-stream';
pd = false;
}
else if (typeof sendData === 'object') {
contentType = 'application/json; charset=utf-8';
sd = JSON.stringify(sendData);
}
if ($) {
$.ajax({
url: fUrl,
processData: pd,
beforeSend: (request) => {
if (beforeSend) {
beforeSend(request);
}
},
type: callTypes[type],
data: sd,
dataType: 'json',
contentType,
xhrFields: {
withCredentials: true,
},
success: (data, textStatus, jqXHR) => {
if (successCallback) {
successCallback(data, textStatus, jqXHR);
}
},
error: (jqXHR, textStatus, errorThrown) => {
if (errorCallback) {
errorCallback(jqXHR, textStatus, errorThrown);
}
},
});
}
}
exports_1("apiCall", apiCall);
function getCallAsync(url, seqNum, sendData = null, beforeSend) {
return new Promise((resolve, reject) => {
getCall(url, seqNum, sendData, (data, seq) => {
resolve(data);
}, (jqXHR, extStatus, errorThrown) => {
reject(Error(jqXHR, extStatus, errorThrown));
}, beforeSend);
});
}
exports_1("getCallAsync", getCallAsync);
function putCallAsync(url, seqNum, sendData, beforeSend) {
return new Promise((resolve, reject) => {
putCall(url, seqNum, sendData, (data, seq) => {
resolve(data);
}, (jqXHR, extStatus, errorThrown) => {
reject(Error(jqXHR, extStatus, errorThrown));
}, beforeSend);
});
}
exports_1("putCallAsync", putCallAsync);
function postCallAsync(url, seqNum, sendData, beforeSend) {
return new Promise((resolve, reject) => {
postCall(url, seqNum, sendData, (data, seq) => {
resolve(data);
}, (jqXHR, extStatus, errorThrown) => {
reject(Error(jqXHR, extStatus, errorThrown));
}, beforeSend);
});
}
exports_1("postCallAsync", postCallAsync);
function deleteCallAsync(url, seqNum, sendData, beforeSend) {
return new Promise((resolve, reject) => {
deleteCall(url, seqNum, sendData, (data, seq) => {
resolve(data);
}, (jqXHR, extStatus, errorThrown) => {
reject(Error(jqXHR, extStatus, errorThrown));
}, beforeSend);
});
}
exports_1("deleteCallAsync", deleteCallAsync);
function getCall(url, seqNum, sendData, successCallback, errorCallback, beforeSend) {
if (!seqNum) {
seqNum = DateTime.getTimeCount();
}
apiCall(callTypes.GET, url, sendData, (data, textStatus, request) => {
const seq = parseInt(request.getResponseHeader('seq'), 10);
if (successCallback) {
successCallback(data, seq);
}
}, errorCallback, (request) => {
request.setRequestHeader('seq', '' + seqNum);
if (beforeSend) {
beforeSend(request);
}
});
}
exports_1("getCall", getCall);
function putCall(url, seqNum, sendData, successCallback, errorCallback, beforeSend) {
if (!seqNum) {
seqNum = DateTime.getTimeCount();
}
sendData = sendData || {};
addAntiForgeryToken(sendData);
apiCall(callTypes.PUT, url, sendData, (data, textStatus, request) => {
const seq = parseInt(request.getResponseHeader('seq'), 10);
if (successCallback) {
successCallback(data, seq);
}
}, errorCallback, (request) => {
request.setRequestHeader('seq', '' + seqNum);
if (beforeSend) {
beforeSend(request);
}
});
}
exports_1("putCall", putCall);
function postCall(url, seqNum, sendData, successCallback, errorCallback, beforeSend) {
if (!seqNum) {
seqNum = DateTime.getTimeCount();
}
sendData = sendData || {};
addAntiForgeryToken(sendData);
apiCall(callTypes.POST, url, sendData, (data, textStatus, request) => {
const seq = parseInt(request.getResponseHeader('seq'), 10);
if (successCallback) {
successCallback(data, seq);
}
}, errorCallback, (request) => {
request.setRequestHeader('seq', '' + seqNum);
if (beforeSend) {
beforeSend(request);
}
});
}
exports_1("postCall", postCall);
function deleteCall(url, seqNum, sendData, successCallback, errorCallback, beforeSend) {
if (!seqNum) {
seqNum = DateTime.getTimeCount();
}
sendData = sendData || {};
addAntiForgeryToken(sendData);
apiCall(callTypes.DELETE, url, sendData, (data, textStatus, request) => {
const seq = parseInt(request.getResponseHeader('seq'), 10);
if (successCallback) {
successCallback(data, seq);
}
}, errorCallback, (request) => {
request.setRequestHeader('seq', '' + seqNum);
if (beforeSend) {
beforeSend(request);
}
});
}
exports_1("deleteCall", deleteCall);
function Error(jqXHR, textStatus, errorThrown) {
Debug.debugWrite(errorThrown);
const err = {};
err.errorThrown = errorThrown;
err.textStatus = textStatus;
err.responseText = jqXHR.responseText;
err.responseObj = jqXHR.responseJSON;
return err;
}
return {
setters: [
function (DateTime_1) {
DateTime = DateTime_1;
},
function (SiteInfo_1) {
SiteInfo = SiteInfo_1;
},
function (Debug_1) {
Debug = Debug_1;
}
],
execute: function () {
(function (callTypes) {
callTypes[callTypes["GET"] = 0] = "GET";
callTypes[callTypes["PUT"] = 1] = "PUT";
callTypes[callTypes["POST"] = 2] = "POST";
callTypes[callTypes["DELETE"] = 3] = "DELETE";
})(callTypes || (callTypes = {}));
exports_1("callTypes", callTypes);
}
};
});
//# sourceMappingURL=ApiLibrary.js.map