123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554 |
- /*
- * Licensed Materials - Property of IBM
- *
- * IBM Cognos Products: SHARE
- *
- * (C) Copyright IBM Corp. 2015, 2017
- *
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(["jquery", "q", "bi/sharecommon/utils/translator"], function($, Q, t) {
- var scheduleSvc = {};
- var SERVER_URI = 'v1/reports/';
- var SERVER_URI_SUBSCRIPTION= "v1/subscriptions/";
- var SERVER_URI_USERPROFILE = 'v1/users/~/credentials';
- var SERVER_URI_CONTENTAPPS = 'v1/objects/';
- var PRINTERS_URI = 'v1/system/printers';
- var ARCHIVE_LOCATION_URI = 'v1/archive_locations';
- var SCHEDULE_ENDPOINT = '/schedule';
- var SUBSCRIPTION_ENDPOINT = '/subscriptions';
- var CLOUD_STORAGE_ENDPOINT = 'v1/cos/consumption';
- /* Service functions for UPS / Credential */
- /**
- * create a user credential
- * @param glassContext
- * @param data (optional) parameter data to send
- * @returns promise
- */
- scheduleSvc.createUserCredential = function(glassContext, data) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_USERPROFILE;
- if (typeof data == 'undefined') {
- data = {};
- }
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'POST',
- dataType: 'json',
- headers: {
- Accept: 'application/json',
- "Content-Type": 'application/json'
- },
- data: JSON.stringify(data)
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(dfd, jqXHR, textStatus, errorThrown) {
- if(!jqXHR.responseJSON.promptInfo || !jqXHR.responseJSON.promptInfo.displayObjects) {
- // no promptInfo, true error.
- var errmsg = jqXHR.responseJSON.code + ": " + jqXHR.responseJSON.message;
- glassContext.appController.showErrorMessage(errmsg, t.translate("error_label_share"));
- deferred.reject();
- } else {
- deferred.reject(jqXHR.responseJSON.promptInfo);
- }
- });
- return deferred.promise;
- };
- /**
- * get a user's credentials
- * @param glassContext
- */
- scheduleSvc.getUserCredential = function(glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_USERPROFILE;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'GET',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- console.log(textStatus +": We can't get your credentials right now. Try again later.");
- deferred.reject();
- });
- return deferred.promise;
- };
- scheduleSvc.setOption = function(options, anOptName, value, type) {
- options.forEach(function(anOpt) {
- if (anOpt.name === anOptName) {
- anOpt.value = value;
- return;
- }
- }.bind(this));
- options.push({
- name: anOptName,
- value: value,
- type: type
- });
- return;
- };
- scheduleSvc.updateScheduleCloudOptions = function(scheduleObj, saveToCloudOptions, glassContext) {
- var deferred = Q.defer();
- if (saveToCloudOptions.location) {
- scheduleSvc.setOption(scheduleObj.options, 'runOptionEnum#saveToCloud', saveToCloudOptions.location, 'genericOptionObjectRef');
- if (saveToCloudOptions.reportName) {
- scheduleSvc.setOption(scheduleObj.options, 'runOptionEnum#cloudName', saveToCloudOptions.reportName, 'genericOptionString');
- }
- var server_URL = SERVER_URI_CONTENTAPPS + scheduleObj.id;
- glassContext.getCoreSvc('.Ajax').ajax({
- url: server_URL,
- method: 'PUT',
- contentType: 'application/json; charset=utf-8',
- data: JSON.stringify({
- type: scheduleObj.type,
- id: scheduleObj.id,
- options: scheduleObj.options
- })
- }).done(function(data) {
- deferred.resolve(data);
- });
- } else {
- deferred.resolve();
- }
- return deferred.promise;
- };
- scheduleSvc.readRawSchedule = function(scheduleId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_CONTENTAPPS + scheduleId + '?fields=options';
- if (!glassContext.services.ajax) {
- return Promise.resolve({ data:[{}] });
- }
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errorMessage = t.translate("error_get_object_properties");
- console.log(errorMessage);
- glassContext.appController.showErrorMessage(errorMessage, t.translate("error_label_share"));
- deferred.reject({
- message: errorMessage,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /* Service functions for SCHEDULE */
- /**
- * Create schedule
- * @param scheduleDesc schedule descriptor for the new schedule
- * @returns promise
- */
- scheduleSvc.createOrUpdateSchedule = function(scheduleDescriptor, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI + scheduleDescriptor.reportId + SCHEDULE_ENDPOINT;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'PUT',
- headers: {
- Accept: 'application/vnd.ibm.bi.platform.schedule+json',
- "Content-Type": 'application/vnd.ibm.bi.platform.schedule+json'
- },
- dataType: 'json',
- data: JSON.stringify(scheduleDescriptor)
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_create_schedule");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_create_schedule"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Delete schedule for a report
- * @param reportId id of the report to delete
- * @returns promise
- */
- scheduleSvc.deleteSchedule = function(reportId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI + reportId + SCHEDULE_ENDPOINT;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'PUT',
- headers: {
- Accept: 'application/vnd.ibm.bi.platform.schedule+json',
- "Content-Type": 'application/vnd.ibm.bi.platform.schedule+json'
- },
- dataType: 'json',
- data: JSON.stringify({})
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_delete_schedule");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_delete_schedule"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Retrieve schedule for a report
- * @param reportId id of the report whose schedule we retrieve
- * @returns promise
- */
- scheduleSvc.getSchedule = function(reportId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI + reportId + SCHEDULE_ENDPOINT;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'GET',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- console.log(data);
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_get_schedule");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_get_schedule"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /* Service functions for SUBSCRIPTION */
- /**
- * Create subscription
- * @param scheduleDesc subscription descriptor for the new subscription
- * @returns promise
- */
- scheduleSvc.createSubscription = function(subscriptionDesc, glassContext){
- var deferred = Q.defer();
- var server_URL = SERVER_URI + subscriptionDesc.reportId + SUBSCRIPTION_ENDPOINT;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'POST',
- headers: {
- Accept: 'application/vnd.ibm.bi.platform.subscription+json',
- "Content-Type": 'application/vnd.ibm.bi.platform.subscription+json'
- },
- dataType: 'json',
- data: JSON.stringify(subscriptionDesc)
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- /*
- The error message from the REST service is translated
- */
- var errmsg = textStatus.responseJSON.error;
- console.log(errmsg);
- glassContext.appController.showErrorMessage(errmsg, t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Update subscription
- * @param descriptor The information to use to update a subscription
- * @returns promise
- */
- scheduleSvc.updateSubscription = function(descriptor, glassContext){
- var deferred = Q.defer();
- var server_URL = SERVER_URI_SUBSCRIPTION + descriptor.id;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'PUT',
- headers: {
- Accept: 'application/vnd.ibm.bi.platform.subscription+json',
- "Content-Type": 'application/vnd.ibm.bi.platform.subscription+json'
- },
- dataType: 'json',
- data: JSON.stringify(descriptor)
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_update_subscription");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_update_subscription"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Get subscriptions. retrieve all subscriptions for the current user.
- * @param glassContext
- * @returns promise
- */
- scheduleSvc.getSubscriptions = function(glassContext){
- var deferred = Q.defer();
- var server_URL = SERVER_URI_SUBSCRIPTION;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'GET',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_get_susbcriptions");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_get_susbcriptions"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Get subscriptions. retrieve all subscriptions for the current user.
- * @param glassContext
- * @returns promise
- */
- scheduleSvc.getSubscriptionDetails = function(subscriptionId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_SUBSCRIPTION + subscriptionId;
- glassContext.services.ajax.ajax({
- url: server_URL,
- type: 'GET',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_get_susbcriptions");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_get_susbcriptions"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Deletes a specified subscription
- *
- * @param subContext The context that holds the glassContext and the subId used to delete the specified subscription
- * @returns promise
- */
- scheduleSvc.deleteSubscription = function(subscriptionId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_SUBSCRIPTION + subscriptionId;
- glassContext.services.ajax.ajax({
- type: 'DELETE',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_delete_subscription");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_delete_subscription"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /* Content Apps functions */
- scheduleSvc.getObjectProperties = function(objectId, glassContext) {
- var deferred = Q.defer();
- var server_URL = SERVER_URI_CONTENTAPPS + objectId;
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errorMessage = t.translate("error_get_object_properties");
- console.log(errorMessage);
- glassContext.appController.showErrorMessage(errorMessage, t.translate("error_label_share"));
- deferred.reject({
- message: errorMessage,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Gets all printers configured in the system
- *
- * @param
- * @returns promise
- */
- scheduleSvc.getPrinters = function(glassContext) {
- var deferred = Q.defer();
- var server_URL = PRINTERS_URI;
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_get_printers");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_get_printers"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
- /**
- * Gets archive locations configured in the system
- *
- * @param
- * @returns promise
- */
- scheduleSvc.getArchiveLocations = function(glassContext) {
- var deferred = Q.defer();
- var server_URL = ARCHIVE_LOCATION_URI;
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- }).fail(function(jqXHR, textStatus, errorThrown) {
- var errmsg = textStatus + ':' + t.translate("error_get_file_system_locations");
- console.log(errmsg);
- glassContext.appController.showErrorMessage(t.translate("error_get_file_system_locations"), t.translate("error_label_share"));
- deferred.reject({
- message: errmsg,
- causedBy: errorThrown
- });
- });
- return deferred.promise;
- };
-
- scheduleSvc.getS3ConnectionDetails = function(glassContext) {
- var deferred = Q.defer();
- var server_URL = CLOUD_STORAGE_ENDPOINT;
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- });
- return deferred.promise;
- };
- scheduleSvc.getS3LocationsDetails = function(glassContext, id) {
- var deferred = Q.defer();
- var server_URL = 'v1/cos/' + id + '/coslocations/consumption';
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- });
- return deferred.promise;
- };
- scheduleSvc.getS3LocationParentConnectionID = function(glassContext, id) {
- var deferred = Q.defer();
- var server_URL = 'v1/objects/' + id + '?fields=parent';
- glassContext.services.ajax.ajax({
- type: 'GET',
- url: server_URL,
- contentType: 'application/json; charset=utf-8',
- dataType: 'json'
- }).done(function(data, textStatus, jqXHR) {
- deferred.resolve(data);
- });
- return deferred.promise;
- };
-
- return scheduleSvc;
- });
|