(function() {
/**
* @typedef {Object} Help4.widget.companionCore.UACP.CatalogueResponse
* @property {string} status - response status information
* @property {Help4.widget.help.catalogues.UACP.CatalogueProject[]} data - server response
*/
/**
* @typedef {Object} Help4.widget.companionCore.UACP.ProjectResponse
* @property {string} status - response status information
* @property {Help4.widget.help.project.UACP.Project} data - server response
*/
/**
* helper functionality for UACP backends
*/
Help4.widget.companionCore.UACP = class {
/**
* @param {string} serverBaseUrl - the server base URL
* @returns {string}
*/
static getXCSRF(serverBaseUrl) {
const {Ajax} = Help4.ajax;
const url = serverBaseUrl + '/';
let id = Ajax.getXCSRF(url);
if (id) return id;
id = Help4.createId();
Ajax.setXCSRF({id, url});
return id;
}
/**
* @param {Help4.typedef.SystemConfiguration} config - the system configuration
* @param {boolean} [allowDuplicates = false] - whether to allow duplicate language codes
* @returns {string[]}
*/
static getLanguages({core: {language, defaultLanguage}}, allowDuplicates = false) {
const languagesList = [language.uacp].concat(defaultLanguage.uacp);
return allowDuplicates ? languagesList : Help4.uniqueArray(languagesList);
}
/**
* @param {string} url
* @returns {Promise<*>}
*/
static doGetRequest(url) {
return new Help4.Promise(resolve => {
/**
* @param {*} data
* @param {Help4.typedef.XmlHttpResponse} xhr
*/
const afterRequest = (data, xhr) => {
Help4.widget.companionCore.Core.broadcastXhrStatus(xhr);
resolve(data);
};
// XRAY-1490: do not use XCSRF ID here
Help4.ajax.Ajax({
url,
saml: true,
success: afterRequest,
error: afterRequest
});
});
}
}
})();