/**
* @fileoverview This file contains the IPad Protocol Adaptor and its related
* utility function. There is quite a lot of code dedicated to
* data structure conversion, this is intentional and provides a
* layer of abstraction between the exported web service code and
* GUI code. It is unclear at the time of writing if the VIViD
* protocol will be implemented in this client or if the ipad
* protocol will be implemented in the stand alone server. This
* abstraction of the protocol implementation will allow for both
* options.
*
* TODO: add more assertions of protocol data conversions later.
*
* @author anders.rejdebrant@spark-vision.com (Anders Rejdebrant)
*/
goog.provide('spv.ds.impl.IPPAdaptor');
goog.require('spv.ds.UserConfigInfo');
goog.require('spv.ds.ConfigLoadResult');
goog.require('spv.ds.DisplayPrice');
goog.require('spv.ds.FacebookShareData');
goog.require('spv.ds.FreshConfig');
goog.require('spv.ds.GuiPath');
goog.require('spv.ds.GuiPathItem');
goog.require('spv.ds.Loan');
goog.require('spv.ds.ImageParams');
goog.require('spv.ds.ImageResult');
goog.require('spv.ds.IntroPage');
goog.require('spv.ds.IntroPageConfig');
goog.require('spv.ds.IntroPageGroup');
goog.require('spv.ds.ItemResources');
goog.require('spv.ds.ItemSummary');
goog.require('spv.ds.MenuItem');
goog.require('spv.ds.MenuNode');
goog.require('spv.ds.SessionStateUpdate');
goog.require('spv.ds.Summary');
goog.require('spv.ds.impl.AuxData');
goog.require('spv.ds.impl.Bump');
goog.require('spv.ds.impl.BumpItem');
goog.require('spv.ds.impl.BumpSerie');
goog.require('spv.ds.impl.IDsProtocol');
goog.require('spv.ds.impl.IPPCommon');
goog.require('spv.ds.impl.SessionInitData');
goog.require('spv.ds.ipprot.IpadClient');
goog.require('spv.ds.ipprot.boosterconfig.FreshConfig');
goog.require('spv.ds.ipprot.boosterconfig.Result');
goog.require('spv.ds.ipprot.boostercshw.AuxiliaryCarrier');
goog.require('spv.ds.ipprot.boostercshw.AuxiliaryCarrier_v2');
goog.require('spv.ds.ipprot.boostercshw.Bump');
goog.require('spv.ds.ipprot.boostercshw.BumpItem');
goog.require('spv.ds.ipprot.boostercshw.BumpMenu');
goog.require('spv.ds.ipprot.boostercshw.BumpSerie');
goog.require('spv.ds.ipprot.boostercshw.ConfigBop');
goog.require('spv.ds.ipprot.boostercshw.GuiItem');
goog.require('spv.ds.ipprot.boostercshw.GuiPath');
goog.require('spv.ds.ipprot.boostercshw.MenuNode');
goog.require('spv.ds.ipprot.boostercshw.OutBop');
goog.require('spv.ds.ipprot.boostercshw.OutBopSummary');
goog.require('spv.ds.ipprot.boostercshw.OutBopUpdate');
goog.require('spv.ds.ipprot.boostercshw.PdfGenerationResult');
goog.require('spv.ds.ipprot.boostermiddle.Category');
goog.require('spv.ds.ipprot.boostermiddle.FacebookShareData');
goog.require('spv.ds.ipprot.intropage.Configuration');
goog.require('spv.ds.ipprot.intropage.Groups');
goog.require('spv.ds.ipprot.intropage.Root');
goog.require('spv.ds.ipprot.dsproto.SessionInitData');
/**
* Protocol adaptor for spv.ds.ipprot.IpadClient
*
* Resposible for hiding protocol data types and interpreting reponse data to
* failures in cases where errors are reported inside the normal result data.
* eg. Result codes from load config operations.
*
* @constructor
* @implements {spv.ds.impl.IDsProtocol}
* @param {string} service_url
* @param {boolean} use_jsonp
*/
spv.ds.impl.IPPAdaptor = function(service_url, use_jsonp)
{
/** @type {spv.ds.ipprot.IpadClient} */
this._impl = new spv.ds.ipprot.IpadClient(service_url, use_jsonp);
/** @type {Object.<string,boolean>} */
this.disabled_item = {};
};
/**
* Fetches an image for a serialized configuration.
*
* @param {spv.ds.Config} conf
* @param {spv.ds.ImageParams} img_params
* @param {function(spv.ds.ImageResult)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.getConfigImage = function(
conf,
img_params,
on_success,
on_failure)
{
var proto_success = function(image_url)
{
var result = new spv.ds.ImageResult(image_url);
on_success(result);
};
this._impl.get_config_image(
conf.data,
conf.encoding,
img_params.scaled_width,
img_params.scaled_height,
img_params.serie_name,
img_params.frame,
img_params.crop_x_ratio,
img_params.crop_y_ratio,
img_params.cropped_width,
img_params.cropped_height,
img_params.skip.join(';'),
img_params.skip_groups.join(';'),
img_params.only_use.join(';'),
img_params.only_use_groups.join(';'),
img_params.file_type,
img_params.use_hd,
img_params.keep_aspect_ratio,
img_params.auto_crop,
proto_success,
on_failure);
};
/**
* @param {function(spv.ds.IntroPage)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.getIntroPage = function(
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.intropage.Root} proto_intro_page */
var proto_success = function(proto_intro_page)
{
var intro_page = spv.ds.impl.IPPCommon.convertToIntroPage(proto_intro_page);
on_success(intro_page);
};
this._impl.init_settings(proto_success, on_failure);
};
/**
* @param {string} item_id
* @param {string} model
* @param {string} category
* @param {function(Array.<spv.ds.ReadMoreResource>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.getReadMore = function(
item_id,
model,
category,
language,
on_success,
on_failure)
{
throw Error( "Not yet implemented for legacy booster." );
};
/**
* @param {Array<string>} item_ids
* @param {string} category
* @param {string} model
* @param {string} language
* @param {function(Object<string,spv.ds.ItemResources>)} on_success
* @param {function(Error)} on_failure
**/
spv.ds.impl.IPPAdaptor.prototype.getItemResources = function(
item_ids,
category,
model,
language,
on_success,
on_failure)
{
throw Error( "Not yet implemented for legacy booster." );
}
/**
* @param {string} username
* @param {function(Array.<spv.ds.SavedConfig>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.getUserConfigList = function(
username,
on_success,
on_failure)
{
throw Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {Array.<string>} group_ids
* @param {function()} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionAddGuiGroupSubscriptions = function(
session_id,
group_ids,
on_success,
on_failure )
{
throw Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {function()} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionClearGuiGroupSubscriptions = function(
session_id,
on_success,
on_failure )
{
throw Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {function(string)} on_success Callback taking the generated pdf url
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGeneratePdf = function(
session_id,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boostercshw.PdfGenerationResult} pdf_result */
var handle_protocol = function(pdf_result)
{
var pdf_code = pdf_result.result_code;
if ('SUCCESS' != pdf_code)
{
throw new Error('Pdf generator failed with code: ' + pdf_code);
}
var pdf_url = pdf_result.url;
if (!pdf_url || '' == pdf_url)
{
throw new Error('Pdf generator returned empty url');
}
on_success(pdf_url);
};
this._impl.generate_pdf(
session_id,
'',
false,
false,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} encoding
* @param {function(spv.ds.Config)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetConfig = function(
session_id,
encoding,
on_success,
on_failure)
{
/** @param {string} conf_data */
var on_protocol_success = function(conf_data)
{
var conf = new spv.ds.Config(encoding, conf_data);
on_success(conf);
};
this._impl.get_config_as_string(
session_id,
encoding,
on_protocol_success,
on_failure);
};
/**
* @param {string} session_id
* @param {function(Array.<string>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetConfigNames = function(
session_id,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boosterconfig.Result} result */
var handle_protocol = function(result)
{
on_success(result.Output);
};
this._impl.get_configs(session_id, handle_protocol, on_failure);
};
/**
* @param {string} session_id
* @param {function(spv.ds.FacebookShareData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetFacebookShareData = function(
session_id,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boostermiddle.FacebookShareData} proto_data */
var handle_protocol = function(proto_data)
{
var share_data = spv.ds.impl.IPPCommon.convertToFacebookShareData(proto_data);
on_success(share_data);
};
this._impl.get_facebook_share_data(
session_id,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {number} limit
* @param {number} scale_width
* @param {number} scale_height
* @param {function(Array.<spv.ds.FreshConfig>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetFreshConfigs = function(
session_id,
limit,
scale_width,
scale_height,
on_success,
on_failure)
{
/** @param {Array.<spv.ds.ipprot.boosterconfig.FreshConfig>} proto_data */
var handle_protocol = function(proto_data)
{
var fresh_configs = spv.ds.impl.IPPCommon.convertToFreshConfigs(proto_data);
on_success(fresh_configs);
};
var ctime = 0;
var meta_filter = 'MODEL;ENGINE;GEAR';
this._impl.get_fresh_configs(
session_id,
ctime,
limit,
meta_filter,
scale_width,
scale_height,
handle_protocol,
on_failure);
};
/**
* @param {number} limit
* @param {number} scale_width
* @param {number} scale_height
* @param {function(Array.<spv.ds.FreshConfig>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.getFreshConfigs = function(
limit,
scale_width,
scale_height,
on_success,
on_failure)
{
throw new Error( "Not supported in legacy backend." );
};
/**
* @param {string} session_id
* @param {spv.ds.ImageParams} img_params
* @param {function(spv.ds.ImageResult)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetImage = function(
session_id,
img_params,
on_success,
on_failure)
{
/** @param {string} image_url */
var handle_image_success = function(image_url)
{
var result = new spv.ds.ImageResult(image_url);
on_success(result);
};
this._impl.get_current_config_image(
session_id,
img_params.scaled_width,
img_params.scaled_height,
img_params.serie_name,
img_params.frame,
img_params.crop_x_ratio,
img_params.crop_y_ratio,
img_params.cropped_width,
img_params.cropped_height,
img_params.skip.join(';'),
img_params.skip_groups.join(';'),
img_params.only_use.join(';'),
img_params.only_use_groups.join(';'),
img_params.file_type,
img_params.use_hd,
img_params.keep_aspect_ratio,
img_params.auto_crop,
handle_image_success,
on_failure);
};
/**
* @param {string} session_id
* @param {Array.<string>} item_ids
* @param {string} language
* @param {function(Array.<spv.ds.MenuItem>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetItemInfo = function(
session_id,
item_ids,
language,
on_success,
on_failure)
{
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
var that = this;
/** @param {Array.<spv.ds.ipprot.boostercshw.OutBopUpdate>} obus */
var on_proto_success = function(obus)
{
that.storeItemDisabledFlags( [obus] );
var result = spv.ds.impl.IPPCommon.convertToMenuItems(obus);
on_success(result);
};
this._impl.get_item_info(
session_id,
item_ids.join(';'),
on_proto_success,
on_failure);
};
/**
* @param {string} session_id
* @param {number} serie_index
* @param {number} frame_index
* @param {string} file_type
* @param {boolean} separate_background
* @param {boolean} separate_shadow
* @param {boolean} all_frames
* @param {boolean} use_hd
* @param {number} image_width
* @param {number} image_height
* @param {function(string)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetMediaKit = function(
session_id,
serie_index,
frame_index,
file_type,
separate_background,
separate_shadow,
all_frames,
use_hd,
image_width,
image_height,
on_success,
on_failure)
{
throw new Error( "Not implemented in IPPAdaptor." );
};
/**
* @param {string} session_id
* @param {string} item_id
* @param {function(Array.<spv.ds.impl.GoalStateResolver>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetStateResolvers = function(
session_id,
item_id,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boostercshw.OutResolvers} out_resolver */
var on_protocol_success = function(out_resolver)
{
var goal_resolver = spv.ds.impl.IPPCommon.convertToGoalStateResolver(out_resolver);
var result = [goal_resolver];
on_success(result);
};
this._impl.get_state_resolvers(
session_id,
item_id,
on_protocol_success,
on_failure);
};
/**
* @param {string} session_id
* @param {function(spv.ds.Summary)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetSummary = function(
session_id,
on_success,
on_failure)
{
var that = this;
/** @param {spv.ds.ipprot.boostercshw.OutBop} out_bop */
var handle_protocol = function(out_bop)
{
that.storeItemDisabledFlags( out_bop.updates );
var s = spv.ds.impl.IPPCommon.extractSummary(out_bop);
on_success(s);
};
this._impl.bip(
session_id,
'',
'BTN_SUMMARY',
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {spv.ds.ImageParams} img_params
* @param {function(spv.ds.ImageResult)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetUserConfigImage = function(
session_id,
config_name,
img_params,
on_success,
on_failure)
{
var proto_success = function(image_url)
{
var result = new spv.ds.ImageResult(image_url);
on_success(result);
};
this._impl.get_user_config_image(
session_id,
config_name,
img_params.scaled_width,
img_params.scaled_height,
img_params.serie_name,
img_params.frame,
img_params.crop_x_ratio,
img_params.crop_y_ratio,
img_params.cropped_width,
img_params.cropped_height,
img_params.skip.join(';'),
img_params.skip_groups.join(';'),
img_params.only_use.join(';'),
img_params.only_use_groups.join(';'),
img_params.file_type,
img_params.use_hd,
img_params.keep_aspect_ratio,
img_params.auto_crop,
proto_success,
on_failure);
};
/**
* @param {string} session_id
* @param {string} filter_name
* @param {spv.ds.PresentationStructureQuery} query
* @param {function(spv.ds.PresentationStructure)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGetPresentationStructure = function(
session_id,
filter_name,
query,
on_success,
on_failure )
{
throw Error( "Not yet implemented for legacy booster." );
};
/**
* Hides multiple server calls required to initialize
*
* @param {string} menu_query
* @param {string} readmore_mode
* @param {string} language
* @param {number} ttl NOT IMPLEMENTED IN PRE-NOVA BOOSTER
* @param {string} origin NOT IMPLEMENTED IN PRE-NOVA BOOSTER
* @param {string} category NOT IMPLEMENTED IN PRE-NOVA BOOSTER
* @param {function(spv.ds.impl.SessionInitData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionCreate = function(
menu_query,
readmore_mode,
language,
ttl,
origin,
category,
on_success,
on_failure)
{
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
/** @type {spv.ds.impl.SessionInitData} */
var sid;
/** @param {spv.ds.ipprot.dsproto.SessionInitData} proto_sid */
var on_session_success = function(proto_sid)
{
sid = spv.ds.impl.IPPCommon.convertToSessionInitData(proto_sid);
on_success(sid);
};
this._impl.create_session(
menu_query,
readmore_mode,
on_session_success,
on_failure);
};
/**
* @param {string} session_id
* @param {string} language
* @param {function(spv.ds.impl.SessionInitData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionResume = function(
session_id,
language,
on_success,
on_failure)
{
throw Error( "Not yet implemented for legacy booster." );
}
/**
* @param {string} session_id
* @param {spv.ds.Config} config
* @param {string} language
* @param {function(spv.ds.ConfigLoadResult, spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionLoadConfig = function(
session_id,
config,
language,
on_success,
on_failure)
{
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
/** @param {spv.ds.ipprot.boostercshw.ConfigBop} config_bop */
var handle_protocol = function(config_bop)
{
var config_load_result = spv.ds.impl.IPPCommon.convertToConfigLoadResult(config_bop);
var out_bop = config_bop.bops[0];
var state_update = spv.ds.impl.IPPCommon.convertToSessionStateUpdate(out_bop);
var aux_data = spv.ds.impl.IPPCommon.extractAuxiliaryData(out_bop);
on_success(
config_load_result,
state_update,
aux_data );
};
this._impl.load_config_from_string(
session_id,
config.data,
config.encoding,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {function(spv.ds.ConfigLoadResult, spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionLoadConfigByName = function(
session_id,
config_name,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boostercshw.ConfigBop} config_bop */
var handle_protocol = function(config_bop)
{
var config_load_result = spv.ds.impl.IPPCommon.convertToConfigLoadResult(config_bop);
var out_bop = config_bop.bops[0];
var state_update = spv.ds.impl.IPPCommon.convertToSessionStateUpdate(out_bop);
var aux_data = spv.ds.impl.IPPCommon.extractAuxiliaryData(out_bop);
on_success(config_load_result, state_update, aux_data);
};
this._impl.load_config(
session_id,
config_name,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {function(spv.ds.ConfigLoadResult, spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionLoadPublicConfig = function(
session_id,
config_name,
on_success,
on_failure)
{
/** @param {spv.ds.ipprot.boostercshw.ConfigBop} config_bop */
var handle_protocol = function(config_bop)
{
var config_load_result = spv.ds.impl.IPPCommon.convertToConfigLoadResult(config_bop);
var out_bop = config_bop.bops[0];
var state_update = spv.ds.impl.IPPCommon.convertToSessionStateUpdate(out_bop);
var aux_data = spv.ds.impl.IPPCommon.extractAuxiliaryData(out_bop);
on_success(config_load_result, state_update, aux_data);
};
this._impl.load_public_config(
session_id,
config_name,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {function(string)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionGeneratePublicConfig = function(
session_id,
on_success,
on_failure )
{
var handle_protocol = function(result)
{
if(result == 'SERVICE_FAILURE')
throw new Error(result);
else
on_success(result);
};
this._impl.generate_public_config(
session_id,
"", // Sending an empty string makes booster generate a unique name.
handle_protocol,
on_failure );
}
/**
* @param {string} session_id
* @param {string} user_name
* @param {string} password
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionLogin = function(
session_id,
user_name,
password,
on_success,
on_failure)
{
if( password !== "" )
throw new Error("Legacy booster doesn't support login with password.");
/** @param {string} result_code */
var handle_protocol = function(result_code)
{
if ('SUCCESS' == result_code)
{
on_success();
return;
}
throw new Error('sessionLogin failed with code: ' + result_code);
};
this._impl.login(
session_id,
user_name,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {function(boolean)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionLogout = function(
session_id,
on_success,
on_failure)
{
throw new Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {string} user_name
* @param {string} password
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionCreateUser = function(
session_id,
user_name,
password,
on_success,
on_failure)
{
throw new Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {function(boolean)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionHasLoggedInUser = function(
session_id,
on_success,
on_failure)
{
throw new Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {string} main_url
* @param {string} user_name
* @param {string} language
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionSendResetPasswordMail = function(
session_id,
main_url,
user_name,
language,
on_success,
on_failure)
{
throw new Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} token
* @param {string} new_password
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.resetPassword = function(
token,
new_password,
on_success,
on_failure)
{
throw new Error( "Not yet implemented for legacy booster." );
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionRemoveConfigByName = function(
session_id,
config_name,
on_success,
on_failure)
{
/** @param {string} result_code */
var handle_protocol = function(result_code)
{
if ('SUCCESS' == result_code)
{
on_success();
return;
}
throw new Error('Remove config failed with code: ' + result_code);
};
this._impl.remove_config(
session_id,
config_name,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {boolean} allow_overwrite
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionSaveConfigByName = function(
session_id,
config_name,
allow_overwrite,
on_success,
on_failure)
{
var handle_protocol = function(result_code)
{
if ('SUCCESS' == result_code)
{
on_success();
return;
}
throw new Error(result_code);
};
this._impl.save_config(
session_id,
config_name,
allow_overwrite,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} price_localization_id
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionSetPriceLocalization = function(
session_id,
price_localization_id,
on_success,
on_failure)
{
/** @param {boolean} result_flag */
var handle_protocol = function(result_flag)
{
if (true == result_flag)
{
on_success();
}
else
{
throw new Error('sessionSetPriceLocalization failed for id: ' +
price_localization_id);
}
};
this._impl.set_price_localization(
session_id,
price_localization_id,
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} item_id
* @param {string} category
* @param {string} language
* @param {function(spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_bop
* @param {function(Array.<spv.ds.impl.GoalStateResolver>)} on_resolvers
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionToggleItem = function(
session_id,
item_id,
category,
language,
on_bop,
on_resolvers,
on_failure )
{
spv.assert.isFunction(on_bop, 'on_bop');
spv.assert.isFunction(on_resolvers, 'on_resolvers');
spv.assert.isFunction(on_failure, 'on_failure');
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
if( this.disabled_item[item_id] )
{
this.sessionGetStateResolvers(
session_id,
item_id,
on_resolvers,
on_failure);
}
else
{
this.sessionBip(
session_id,
category,
[item_id],
'',
on_bop,
on_failure);
}
};
/**
* @param {string} session_id
* @param {string} category
* @param {Array.<string>} item_ids
* @param {string} language
* @param {function(spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionBip = function(
session_id,
category,
item_ids,
language,
on_success,
on_failure)
{
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
var that = this;
/** @param {spv.ds.ipprot.boostercshw.OutBop} out_bop */
var handle_protocol = function(out_bop)
{
that.storeItemDisabledFlags( out_bop.updates );
var state_update = spv.ds.impl.IPPCommon.convertToSessionStateUpdate(out_bop);
var aux_data = spv.ds.impl.IPPCommon.extractAuxiliaryData(out_bop);
on_success(state_update, aux_data);
};
this._impl.bip(
session_id,
category,
item_ids.join(';'),
handle_protocol,
on_failure);
};
/**
* @param {string} session_id
* @param {string} language
* @param {function(spv.ds.SessionStateUpdate, spv.ds.impl.AuxData)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionUpdateBop = function(
session_id,
language,
on_success,
on_failure )
{
var that = this;
if( language )
{
throw new Error( "The use of the language argument is not supported in legacy booster." );
}
/** @param {spv.ds.ipprot.boostercshw.OutBop} out_bop */
var handle_protocol = function( out_bop )
{
that.storeItemDisabledFlags( out_bop.updates );
var state_update = spv.ds.impl.IPPCommon.convertToSessionStateUpdate(out_bop);
var aux_data = spv.ds.impl.IPPCommon.extractAuxiliaryData(out_bop);
on_success(state_update, aux_data);
};
this._impl.rebop( session_id, handle_protocol, on_failure );
}
/**
* @param {string} session_id
* @param {function(string)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.sessionSendHeartBeat = function(
session_id,
on_success,
on_failure)
{
this._impl.heartbeat(session_id, on_success, on_failure);
}
/**
* @private
* @param {Array.<spv.ds.ipprot.boostercshw.OutBopUpdate>} bop_updates
*/
spv.ds.impl.IPPAdaptor.prototype.storeItemDisabledFlags = function( bop_updates )
{
for (var i = 0; i < bop_updates.length; i++)
{
var bop_update = bop_updates[i];
this.disabled_item[ bop_update.id ] = bop_update.disabled;
}
};
/**
* @param {string} session_id
* @param {number} config_id
* @param {string} description
* @param {Object.<string,string>} user_config_aux
* @param {Object.<string,string>} config_storage_aux
* @param {function()} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.userConfigV2Save = function(
session_id,
config_id,
description,
user_config_aux,
config_storage_aux,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {string} config_name
* @param {string} config_description
* @param {Object.<string,string>} user_config_aux
* @param {Object.<string,string>} config_storage_aux
* @param {function(number)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.userConfigV2SaveAs = function(
session_id,
config_name,
config_description,
user_config_aux,
config_storage_aux,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {number} config_id
* @param {function()} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.userConfigV2Delete = function(
session_id,
config_id,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {function(Array<spv.ds.UserConfigInfo>)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.userConfigV2List = function(
session_id,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {number} config_id
* @param {function()} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.userConfigV2Load = function(
session_id,
config_id,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {string} public_config_id
* @param {Function} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.publicConfigV2Load = function(
session_id,
public_config_id,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
};
/**
* @param {string} session_id
* @param {string} description
* @param {Object.<string, string>} config_storage_aux
* @param {function(spv.ds.PublicConfigInfo)} on_success
* @param {function(Error)} on_failure
*/
spv.ds.impl.IPPAdaptor.prototype.publicConfigV2Save = function(
session_id,
description,
config_storage_aux,
on_success,
on_failure)
{
throw new Error( "Not implemented." );
}