importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.ObjectUtils.js //@include lib_sol.common.RepoUtils.js //@include lib_sol.common.HttpUtils.js //@include lib_sol.common.ix.ServiceBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.services.BLPQueries" }); /** * This service returns the queries of a BLP project. * * @author ELO Digital Office GmbH * @version 1.13.000 * * @eloix * @requires sol.common.ObjectUtils * @requires sol.common.JsonUtils * @requires sol.common.SordUtils * @requires sol.common.RepoUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.ServiceBase */ sol.define("sol.common.ix.services.BLPQueries", { extend: "sol.common.ix.ServiceBase", requiredConfig: ["serverUrl", "appToken", "projectId"], /** * @cfg {String} serverUrl Url of the BLP server (http://<IPAdress>:<Port>) * @cfg {String} appToken Encrypted app * @cfg {String} projectId Id (or name) of the BLP project */ /** * Gets all BLP queries of a BLP project * @returns {Object} */ process: function () { var me = this; return me.getBLPQueries(me.serverUrl, me.appToken, me.projectId); }, /** * Collects the types and stores them to `_types`. */ getBLPQueries: function (serverUrl, appToken, projectId) { var me = this, url, queries = []; url = serverUrl + "/api/v1/project/" + projectId + "/dataquery"; result = me.sendBLPRequest(url, appToken, "GET"); if (!result || !result.result) { throw Error("No queries returned. Content: " + JSON.stringify(result)); } result.result.forEach(function (module) { // sometimes BLP returns null instead of an empty array items = module.items || []; module.items.forEach(function (query) { query.moduleId = module.module_id; query.addInId = module.addin_id; queries.push(query); }); }); return queries; }, /** * @private * Retrieves a list of all projects of a BLP server. * @return {[]} */ sendBLPRequest: function (url, appToken, method, data) { var me = this, responseObj, results, des, decryptedAppToken; logger.enter("sendBLPRequest", url); des = new Packages.de.elo.utils.sec.DesEncryption(); decryptedAppToken = des.decrypt(appToken); requestProperties = { Authorization: "Bearer " + decryptedAppToken }; responseObj = sol.common.HttpUtils.sendRequest({ url: url, method: method, connectTimeout: 10000, readTimeout: 60000, dataObj: data, encodeData: false, requestProperties: requestProperties }); try { results = JSON.parse(responseObj.content); } catch (e) { results = null; } logger.exit("sendBLPRequest"); return results; } }); /** * @member sol.common.ix.services.BLPQueries * @method BLPQueries * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_BLPQueries(ec, args) { var config, service, result; logger.enter("RF_sol_common_service_BLPQueries", args); config = sol.common.ix.RfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "serverUrl", "appToken", "projectId"); config.ci = ec.ci; config.user = ec.user; service = sol.create("sol.common.ix.services.BLPQueries", config); result = sol.common.ix.RfUtils.stringify(service.process()); logger.exit("RF_sol_common_service_BLPQueries", result); return result; }