ds/ipprot/IpadClient.js

/**
 * @fileoverview This file is generated by BoosterClientGenerator, do not edit.
 *               If this file needs to change consider updating the exporter
 *               code and re-run the export.
 *
 * @author anders.rejdebrant@spark-vision.com (Anders Rejdebrant)
 */

goog.provide('spv.ds.ipprot.IpadClient');

goog.require('goog.events.EventTarget');
goog.require('goog.json');
goog.require('goog.net.Jsonp');
goog.require('goog.net.XhrIo');
goog.require('goog.Uri.QueryData');
goog.require('spv.ds.ipprot.boosterconfig.FreshConfig');
goog.require('spv.ds.ipprot.boosterconfig.Result');
goog.require('spv.ds.ipprot.boostercshw.Bump');
goog.require('spv.ds.ipprot.boostercshw.ConfigBop');
goog.require('spv.ds.ipprot.boostercshw.OutBop');
goog.require('spv.ds.ipprot.boostercshw.OutBopUpdate');
goog.require('spv.ds.ipprot.boostercshw.OutResolvers');
goog.require('spv.ds.ipprot.boostercshw.PdfGenerationResult');
goog.require('spv.ds.ipprot.boostercshw.SavedUser');
goog.require('spv.ds.ipprot.boostermiddle.Category');
goog.require('spv.ds.ipprot.boostermiddle.FacebookShareData');
goog.require('spv.ds.ipprot.boostermiddle.ImageResponse');
goog.require('spv.ds.ipprot.dsproto.SessionInitData');
goog.require('spv.ds.ipprot.intropage.Root');



/**
 * @constructor
 * @struct
 * @param {string} service_url
 * @param {boolean} use_jsonp
 */
spv.ds.ipprot.IpadClient = function(
		service_url,
		use_jsonp)
{
	this._service_url = service_url;
	if (use_jsonp)
	{
		this._send_http_request = spv.ds.ipprot.IpadClient.sendJsonpHttpRequest;
		this._api_name = 'jsonp';
	}
	else
	{
		this._send_http_request = spv.ds.ipprot.IpadClient.sendJsonHttpRequest;
		this._api_name = 'api';
	}
};




/**
 * @param {string} session_id
 * @param {string} category
 * @param {string} input
 * @param {function(spv.ds.ipprot.boostercshw.OutBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.bip = function(
		session_id,
		category,
		input,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/bip';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('category', typeof(category) == "object" ? goog.json.serialize(category) : category);
	query.set('input', typeof(input) == "object" ? goog.json.serialize(input) : input);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['bip']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} menu_query
 * @param {string} readmore_mode
 * @param {function(spv.ds.ipprot.dsproto.SessionInitData)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.create_session = function(
		menu_query,
		readmore_mode,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/create_session';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('menu_query', typeof(menu_query) == "object" ? goog.json.serialize(menu_query) : menu_query);
	query.set('readmore_mode', typeof(readmore_mode) == "object" ? goog.json.serialize(readmore_mode) : readmore_mode);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['create_session']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} user_name
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.create_user = function(
		session_id,
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/create_user';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} template_name
 * @param {boolean} add_auto_print
 * @param {boolean} show_print_dialog
 * @param {function(spv.ds.ipprot.boostercshw.PdfGenerationResult)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.generate_pdf = function(
		session_id,
		template_name,
		add_auto_print,
		show_print_dialog,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/generate_pdf';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('template_name', typeof(template_name) == "object" ? goog.json.serialize(template_name) : template_name);
	query.set('add_auto_print', typeof(add_auto_print) == "object" ? goog.json.serialize(add_auto_print) : add_auto_print);
	query.set('show_print_dialog', typeof(show_print_dialog) == "object" ? goog.json.serialize(show_print_dialog) : show_print_dialog);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['generate_pdf']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} conf_name
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.generate_public_config = function(
		session_id,
		conf_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/generate_public_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('conf_name', typeof(conf_name) == "object" ? goog.json.serialize(conf_name) : conf_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['generate_public_config']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} category
 * @param {function(spv.ds.ipprot.boostercshw.Bump)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_bump = function(
		session_id,
		category,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_bump';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('category', typeof(category) == "object" ? goog.json.serialize(category) : category);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_bump']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(Array.<spv.ds.ipprot.boostermiddle.Category>)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_categories = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_categories';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_categories']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} encoding
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_config_as_string = function(
		session_id,
		encoding,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_config_as_string';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('encoding', typeof(encoding) == "object" ? goog.json.serialize(encoding) : encoding);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_config_as_string']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} encoded_config
 * @param {string} encoding
 * @param {number} scaled_width
 * @param {number} scaled_height
 * @param {string} serie_name
 * @param {number} frame
 * @param {number} crop_x_ratio
 * @param {number} crop_y_ratio
 * @param {number} cropped_width
 * @param {number} cropped_height
 * @param {string} skip
 * @param {string} skip_groups
 * @param {string} only_use
 * @param {string} only_use_groups
 * @param {string} file_type
 * @param {boolean} use_hd
 * @param {boolean} keep_aspect_ratio
 * @param {boolean} auto_crop
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_config_image = function(
		encoded_config,
		encoding,
		scaled_width,
		scaled_height,
		serie_name,
		frame,
		crop_x_ratio,
		crop_y_ratio,
		cropped_width,
		cropped_height,
		skip,
		skip_groups,
		only_use,
		only_use_groups,
		file_type,
		use_hd,
		keep_aspect_ratio,
		auto_crop,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_config_image';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('encoded_config', typeof(encoded_config) == "object" ? goog.json.serialize(encoded_config) : encoded_config);
	query.set('encoding', typeof(encoding) == "object" ? goog.json.serialize(encoding) : encoding);
	query.set('scaled_width', typeof(scaled_width) == "object" ? goog.json.serialize(scaled_width) : scaled_width);
	query.set('scaled_height', typeof(scaled_height) == "object" ? goog.json.serialize(scaled_height) : scaled_height);
	query.set('serie_name', typeof(serie_name) == "object" ? goog.json.serialize(serie_name) : serie_name);
	query.set('frame', typeof(frame) == "object" ? goog.json.serialize(frame) : frame);
	query.set('crop_x_ratio', typeof(crop_x_ratio) == "object" ? goog.json.serialize(crop_x_ratio) : crop_x_ratio);
	query.set('crop_y_ratio', typeof(crop_y_ratio) == "object" ? goog.json.serialize(crop_y_ratio) : crop_y_ratio);
	query.set('cropped_width', typeof(cropped_width) == "object" ? goog.json.serialize(cropped_width) : cropped_width);
	query.set('cropped_height', typeof(cropped_height) == "object" ? goog.json.serialize(cropped_height) : cropped_height);
	query.set('skip', typeof(skip) == "object" ? goog.json.serialize(skip) : skip);
	query.set('skip_groups', typeof(skip_groups) == "object" ? goog.json.serialize(skip_groups) : skip_groups);
	query.set('only_use', typeof(only_use) == "object" ? goog.json.serialize(only_use) : only_use);
	query.set('only_use_groups', typeof(only_use_groups) == "object" ? goog.json.serialize(only_use_groups) : only_use_groups);
	query.set('file_type', typeof(file_type) == "object" ? goog.json.serialize(file_type) : file_type);
	query.set('use_hd', typeof(use_hd) == "object" ? goog.json.serialize(use_hd) : use_hd);
	query.set('keep_aspect_ratio', typeof(keep_aspect_ratio) == "object" ? goog.json.serialize(keep_aspect_ratio) : keep_aspect_ratio);
	query.set('auto_crop', typeof(auto_crop) == "object" ? goog.json.serialize(auto_crop) : auto_crop);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_config_image']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} encoded_config
 * @param {string} encoding
 * @param {number} output_width
 * @param {number} output_height
 * @param {string} serie_name
 * @param {number} frame
 * @param {string} file_type
 * @param {boolean} keep_aspect_ratio
 * @param {function(spv.ds.ipprot.boostermiddle.ImageResponse)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_config_image_light = function(
		encoded_config,
		encoding,
		output_width,
		output_height,
		serie_name,
		frame,
		file_type,
		keep_aspect_ratio,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_config_image_light';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('encoded_config', typeof(encoded_config) == "object" ? goog.json.serialize(encoded_config) : encoded_config);
	query.set('encoding', typeof(encoding) == "object" ? goog.json.serialize(encoding) : encoding);
	query.set('output_width', typeof(output_width) == "object" ? goog.json.serialize(output_width) : output_width);
	query.set('output_height', typeof(output_height) == "object" ? goog.json.serialize(output_height) : output_height);
	query.set('serie_name', typeof(serie_name) == "object" ? goog.json.serialize(serie_name) : serie_name);
	query.set('frame', typeof(frame) == "object" ? goog.json.serialize(frame) : frame);
	query.set('file_type', typeof(file_type) == "object" ? goog.json.serialize(file_type) : file_type);
	query.set('keep_aspect_ratio', typeof(keep_aspect_ratio) == "object" ? goog.json.serialize(keep_aspect_ratio) : keep_aspect_ratio);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_config_image_light']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(spv.ds.ipprot.boosterconfig.Result)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_configs = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_configs';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_configs']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {number} scaled_width
 * @param {number} scaled_height
 * @param {string} serie_name
 * @param {number} frame
 * @param {number} crop_x_ratio
 * @param {number} crop_y_ratio
 * @param {number} cropped_width
 * @param {number} cropped_height
 * @param {string} skip
 * @param {string} skip_groups
 * @param {string} only_use
 * @param {string} only_use_groups
 * @param {string} file_type
 * @param {boolean} use_hd
 * @param {boolean} keep_aspect_ratio
 * @param {boolean} auto_crop
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_current_config_image = function(
		session_id,
		scaled_width,
		scaled_height,
		serie_name,
		frame,
		crop_x_ratio,
		crop_y_ratio,
		cropped_width,
		cropped_height,
		skip,
		skip_groups,
		only_use,
		only_use_groups,
		file_type,
		use_hd,
		keep_aspect_ratio,
		auto_crop,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_current_config_image';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('scaled_width', typeof(scaled_width) == "object" ? goog.json.serialize(scaled_width) : scaled_width);
	query.set('scaled_height', typeof(scaled_height) == "object" ? goog.json.serialize(scaled_height) : scaled_height);
	query.set('serie_name', typeof(serie_name) == "object" ? goog.json.serialize(serie_name) : serie_name);
	query.set('frame', typeof(frame) == "object" ? goog.json.serialize(frame) : frame);
	query.set('crop_x_ratio', typeof(crop_x_ratio) == "object" ? goog.json.serialize(crop_x_ratio) : crop_x_ratio);
	query.set('crop_y_ratio', typeof(crop_y_ratio) == "object" ? goog.json.serialize(crop_y_ratio) : crop_y_ratio);
	query.set('cropped_width', typeof(cropped_width) == "object" ? goog.json.serialize(cropped_width) : cropped_width);
	query.set('cropped_height', typeof(cropped_height) == "object" ? goog.json.serialize(cropped_height) : cropped_height);
	query.set('skip', typeof(skip) == "object" ? goog.json.serialize(skip) : skip);
	query.set('skip_groups', typeof(skip_groups) == "object" ? goog.json.serialize(skip_groups) : skip_groups);
	query.set('only_use', typeof(only_use) == "object" ? goog.json.serialize(only_use) : only_use);
	query.set('only_use_groups', typeof(only_use_groups) == "object" ? goog.json.serialize(only_use_groups) : only_use_groups);
	query.set('file_type', typeof(file_type) == "object" ? goog.json.serialize(file_type) : file_type);
	query.set('use_hd', typeof(use_hd) == "object" ? goog.json.serialize(use_hd) : use_hd);
	query.set('keep_aspect_ratio', typeof(keep_aspect_ratio) == "object" ? goog.json.serialize(keep_aspect_ratio) : keep_aspect_ratio);
	query.set('auto_crop', typeof(auto_crop) == "object" ? goog.json.serialize(auto_crop) : auto_crop);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_current_config_image']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(spv.ds.ipprot.boostermiddle.FacebookShareData)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_facebook_share_data = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_facebook_share_data';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_facebook_share_data']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {number} ctime
 * @param {number} limit
 * @param {string} meta_filter
 * @param {number} scale_width
 * @param {number} scale_height
 * @param {function(Array.<spv.ds.ipprot.boosterconfig.FreshConfig>)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_fresh_configs = function(
		session_id,
		ctime,
		limit,
		meta_filter,
		scale_width,
		scale_height,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_fresh_configs';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('ctime', typeof(ctime) == "object" ? goog.json.serialize(ctime) : ctime);
	query.set('limit', typeof(limit) == "object" ? goog.json.serialize(limit) : limit);
	query.set('meta_filter', typeof(meta_filter) == "object" ? goog.json.serialize(meta_filter) : meta_filter);
	query.set('scale_width', typeof(scale_width) == "object" ? goog.json.serialize(scale_width) : scale_width);
	query.set('scale_height', typeof(scale_height) == "object" ? goog.json.serialize(scale_height) : scale_height);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_fresh_configs']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {number} serie_index
 * @param {number} frame_index
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_image = function(
		session_id,
		serie_index,
		frame_index,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_image';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('serie_index', typeof(serie_index) == "object" ? goog.json.serialize(serie_index) : serie_index);
	query.set('frame_index', typeof(frame_index) == "object" ? goog.json.serialize(frame_index) : frame_index);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_image']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} item_ids
 * @param {function(Array.<spv.ds.ipprot.boostercshw.OutBopUpdate>)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_item_info = function(
		session_id,
		item_ids,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_item_info';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('item_ids', typeof(item_ids) == "object" ? goog.json.serialize(item_ids) : item_ids);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_item_info']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} item_id
 * @param {function(spv.ds.ipprot.boostercshw.OutResolvers)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_state_resolvers = function(
		session_id,
		item_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_state_resolvers';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('item_id', typeof(item_id) == "object" ? goog.json.serialize(item_id) : item_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_state_resolvers']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} config_name
 * @param {number} scaled_width
 * @param {number} scaled_height
 * @param {string} serie_name
 * @param {number} frame
 * @param {number} crop_x_ratio
 * @param {number} crop_y_ratio
 * @param {number} cropped_width
 * @param {number} cropped_height
 * @param {string} skip
 * @param {string} skip_groups
 * @param {string} only_use
 * @param {string} only_use_groups
 * @param {string} file_type
 * @param {boolean} use_hd
 * @param {boolean} keep_aspect_ratio
 * @param {boolean} auto_crop
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.get_user_config_image = function(
		session_id,
		config_name,
		scaled_width,
		scaled_height,
		serie_name,
		frame,
		crop_x_ratio,
		crop_y_ratio,
		cropped_width,
		cropped_height,
		skip,
		skip_groups,
		only_use,
		only_use_groups,
		file_type,
		use_hd,
		keep_aspect_ratio,
		auto_crop,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/get_user_config_image';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	query.set('scaled_width', typeof(scaled_width) == "object" ? goog.json.serialize(scaled_width) : scaled_width);
	query.set('scaled_height', typeof(scaled_height) == "object" ? goog.json.serialize(scaled_height) : scaled_height);
	query.set('serie_name', typeof(serie_name) == "object" ? goog.json.serialize(serie_name) : serie_name);
	query.set('frame', typeof(frame) == "object" ? goog.json.serialize(frame) : frame);
	query.set('crop_x_ratio', typeof(crop_x_ratio) == "object" ? goog.json.serialize(crop_x_ratio) : crop_x_ratio);
	query.set('crop_y_ratio', typeof(crop_y_ratio) == "object" ? goog.json.serialize(crop_y_ratio) : crop_y_ratio);
	query.set('cropped_width', typeof(cropped_width) == "object" ? goog.json.serialize(cropped_width) : cropped_width);
	query.set('cropped_height', typeof(cropped_height) == "object" ? goog.json.serialize(cropped_height) : cropped_height);
	query.set('skip', typeof(skip) == "object" ? goog.json.serialize(skip) : skip);
	query.set('skip_groups', typeof(skip_groups) == "object" ? goog.json.serialize(skip_groups) : skip_groups);
	query.set('only_use', typeof(only_use) == "object" ? goog.json.serialize(only_use) : only_use);
	query.set('only_use_groups', typeof(only_use_groups) == "object" ? goog.json.serialize(only_use_groups) : only_use_groups);
	query.set('file_type', typeof(file_type) == "object" ? goog.json.serialize(file_type) : file_type);
	query.set('use_hd', typeof(use_hd) == "object" ? goog.json.serialize(use_hd) : use_hd);
	query.set('keep_aspect_ratio', typeof(keep_aspect_ratio) == "object" ? goog.json.serialize(keep_aspect_ratio) : keep_aspect_ratio);
	query.set('auto_crop', typeof(auto_crop) == "object" ? goog.json.serialize(auto_crop) : auto_crop);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['get_user_config_image']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.heartbeat = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/heartbeat';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['heartbeat']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {function(spv.ds.ipprot.intropage.Root)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.init_settings = function(
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/init_settings';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['init_settings']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.initialize_session = function(
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/initialize_session';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['initialize_session']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} service_name
 * @param {string} argument
 * @param {function(Object.<string, string>)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.invoke_dynamic_service = function(
		session_id,
		service_name,
		argument,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/invoke_dynamic_service';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('service_name', typeof(service_name) == "object" ? goog.json.serialize(service_name) : service_name);
	query.set('argument', typeof(argument) == "object" ? goog.json.serialize(argument) : argument);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['invoke_dynamic_service']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} conf_name
 * @param {function(spv.ds.ipprot.boostercshw.ConfigBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.load_config = function(
		session_id,
		conf_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/load_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('conf_name', typeof(conf_name) == "object" ? goog.json.serialize(conf_name) : conf_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['load_config']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} config
 * @param {string} encoding
 * @param {function(spv.ds.ipprot.boostercshw.ConfigBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.load_config_from_string = function(
		session_id,
		config,
		encoding,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/load_config_from_string';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('config', typeof(config) == "object" ? goog.json.serialize(config) : config);
	query.set('encoding', typeof(encoding) == "object" ? goog.json.serialize(encoding) : encoding);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['load_config_from_string']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} conf_name
 * @param {function(spv.ds.ipprot.boostercshw.ConfigBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.load_public_config = function(
		session_id,
		conf_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/load_public_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('conf_name', typeof(conf_name) == "object" ? goog.json.serialize(conf_name) : conf_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['load_public_config']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} user_name
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.login = function(
		session_id,
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/login';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['login']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(spv.ds.ipprot.boostercshw.OutBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.rebop = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/rebop';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['rebop']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} conf_name
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.remove_config = function(
		session_id,
		conf_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/remove_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('conf_name', typeof(conf_name) == "object" ? goog.json.serialize(conf_name) : conf_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['remove_config']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {function(spv.ds.ipprot.boostercshw.OutBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.reset = function(
		session_id,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/reset';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['reset']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} conf_name
 * @param {boolean} allow_overwrite
 * @param {function(string)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.save_config = function(
		session_id,
		conf_name,
		allow_overwrite,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/save_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('conf_name', typeof(conf_name) == "object" ? goog.json.serialize(conf_name) : conf_name);
	query.set('allow_overwrite', typeof(allow_overwrite) == "object" ? goog.json.serialize(allow_overwrite) : allow_overwrite);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['save_config']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} menu_query
 * @param {function(spv.ds.ipprot.boostercshw.OutBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.set_menu_query = function(
		session_id,
		menu_query,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/set_menu_query';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('menu_query', typeof(menu_query) == "object" ? goog.json.serialize(menu_query) : menu_query);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['set_menu_query']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} lid
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.set_price_localization = function(
		session_id,
		lid,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/set_price_localization';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('lid', typeof(lid) == "object" ? goog.json.serialize(lid) : lid);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['set_price_localization']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.test_internal_server_error = function(
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/test_internal_server_error';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['test_internal_server_error']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} config_name
 * @param {string} flag
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_add_flag = function(
		user_name,
		config_name,
		flag,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_add_flag';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_add_flag']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} flag
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_add_flag_to_all = function(
		user_name,
		flag,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_add_flag_to_all';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_add_flag_to_all']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} flag
 * @param {Array.<string>} ignore_flags
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_add_flag_to_all_ignoring_flags = function(
		user_name,
		flag,
		ignore_flags,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_add_flag_to_all_ignoring_flags';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	query.set('ignore_flags', typeof(ignore_flags) == "object" ? goog.json.serialize(ignore_flags) : ignore_flags);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_add_flag_to_all_ignoring_flags']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {function(spv.ds.ipprot.boostercshw.SavedUser)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_list = function(
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_list';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_list']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {Array.<string>} ignore_flags
 * @param {function(spv.ds.ipprot.boostercshw.SavedUser)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_list_ignoring_flags = function(
		user_name,
		ignore_flags,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_list_ignoring_flags';
	var http_method = 'GET';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('ignore_flags', typeof(ignore_flags) == "object" ? goog.json.serialize(ignore_flags) : ignore_flags);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_list_ignoring_flags']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} user_name
 * @param {string} config_name
 * @param {function(spv.ds.ipprot.boostercshw.ConfigBop)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_load = function(
		session_id,
		user_name,
		config_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_load';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_load']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_all_configs = function(
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_all_configs';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} config_name
 * @param {string} flag
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_flag = function(
		user_name,
		config_name,
		flag,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_flag';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_remove_flag']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} flag
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_flag_from_all = function(
		user_name,
		flag,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_flag_from_all';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_remove_flag_from_all']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} flag
 * @param {Array.<string>} ignore_flags
 * @param {function(boolean)} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_flag_from_all_ignoring_flags = function(
		user_name,
		flag,
		ignore_flags,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_flag_from_all_ignoring_flags';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('flag', typeof(flag) == "object" ? goog.json.serialize(flag) : flag);
	query.set('ignore_flags', typeof(ignore_flags) == "object" ? goog.json.serialize(ignore_flags) : ignore_flags);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success(result_obj['user_config_remove_flag_from_all_ignoring_flags']);
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   false,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_user = function(
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_user';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} user_name
 * @param {string} config_name
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_remove_user_config = function(
		user_name,
		config_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_remove_user_config';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} user_name
 * @param {string} config_name
 * @param {boolean} allow_overwrite
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_save = function(
		session_id,
		user_name,
		config_name,
		allow_overwrite,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_save';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	query.set('config_name', typeof(config_name) == "object" ? goog.json.serialize(config_name) : config_name);
	query.set('allow_overwrite', typeof(allow_overwrite) == "object" ? goog.json.serialize(allow_overwrite) : allow_overwrite);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @param {string} session_id
 * @param {string} user_name
 * @param {Function} on_success
 * @param {function(Error)} on_failure
 */
spv.ds.ipprot.IpadClient.prototype.user_config_save_user_data = function(
		session_id,
		user_name,
		on_success,
		on_failure)
{
	var full_url = this._service_url + '/' + this._api_name + '/user_config_save_user_data';
	var http_method = 'POST';
	var query = new goog.Uri.QueryData();
	query.set('session_id', typeof(session_id) == "object" ? goog.json.serialize(session_id) : session_id);
	query.set('user_name', typeof(user_name) == "object" ? goog.json.serialize(user_name) : user_name);
	/** @type {function(Object)} */
	var on_http_success = function(result_obj)
	{
		on_success();
	}
	this._send_http_request(full_url,
						   http_method,
						   query,
						   true,
						   on_http_success,
						   on_failure);
};




/**
 * @private
 * @param {goog.Uri.QueryData} query
 * @return {string}
 */
spv.ds.ipprot.IpadClient.makeSpecialQueryString = function (query)
{
	var result = '';
	var keys = query.getKeys();
	for (var i = 0; i < keys.length; i++)
	{
		if (0 != i)
		{
			result += '&';
		}
		var key = keys[i];
		var val = query.get(key, '').toString();
		var val_enc = encodeURIComponent(val);
		result += keys[i] + '=' + val_enc;
	}
	return result;
}




/**
 * @private
 * @param {goog.net.XhrIo} xhr
 */
spv.ds.ipprot.IpadClient.getProtocolErrorMessage = function(xhr)
{
	var mess = 'protocol error: ' + xhr.getStatusText();
	mess += ', ' + xhr.getResponseText();
	return mess;
}




/**
 * @private
 * @param {goog.Uri.QueryData} query
 * @return {Object}
 */
spv.ds.ipprot.IpadClient.makeJsonpPayload = function(query)
{
	var result = {};
	var keys = query.getKeys();
	for (var i = 0; i < keys.length; i++)
	{
		var key = keys[i];
		result[key] = query.get(key);
	}
	var t = new Date().getTime();
	result['cachebuster'] = t;
	return result;
}




/**
 * @private
 * @param {Object} response
 * @return {Error}
 */
spv.ds.ipprot.IpadClient.makeResponseError = function(response)
{
	var message = 'Jsonp error: ';
	var error_carrier = spv.ds.ipprot.IpadClient.getResponseErrorCarrier(response);
	if (null == error_carrier)
	{
		message += 'no error information available';
	}
	else
	{
		message += error_carrier['message'];
	}
	return new Error(message);
}




/**
 * @private
 * @param {Object} response
 * @return {Object|null}
 */
spv.ds.ipprot.IpadClient.getResponseErrorCarrier = function(response)
{
	if (!response)
	{
		return null;
	}
	if (!response['error'])
	{
		return null;
	}
	return response['error'];
}




/**
 * @private
 * @param {Object} response
 * @return {boolean}
 */
spv.ds.ipprot.IpadClient.hasErrorCarrier = function(response)
{
	return null != spv.ds.ipprot.IpadClient.getResponseErrorCarrier(response);
}




/**
 * @private
 * @param {string}             url
 * @param {string}             http_method
 * @param {goog.Uri.QueryData} query
 * @param {boolean}            return_is_void
 * @param {function(Object)}   on_success
 * @param {function(Error)}    on_failure
 */
spv.ds.ipprot.IpadClient.sendJsonHttpRequest = function(
		url,
		http_method,
		query,
		return_is_void,
		on_success,
		on_failure)
{
	var cbk = function(e)
	{
		try
		{
			/** @type {goog.net.XhrIo} */
			var xhr = e.target;
			if (!xhr.isSuccess())
			{
				var mess = spv.ds.ipprot.IpadClient.getProtocolErrorMessage(xhr);
				throw new Error(mess);
			}
			if (return_is_void)
			{
				on_success(null);
				return;
			}
			var obj = xhr.getResponseJson();
			if (obj == undefined)
			{
				throw new Error('http response is undefined');
			}
			on_success(obj);
		}
		catch (response_err)
		{
			on_failure(response_err);
		}
	};
	if('POST' == http_method || 'GET' == http_method)
	{
		var body_query = spv.ds.ipprot.IpadClient.makeSpecialQueryString(query);
		goog.net.XhrIo.send(url, cbk, 'POST', body_query);
	}
	else
	{
		throw new Error('Method not supported: ' + http_method);
	}
};




/**
 * @private
 * @param {string}             url
 * @param {string}             http_method
 * @param {goog.Uri.QueryData} query
 * @param {boolean}            return_is_void
 * @param {function(Object)}   on_success
 * @param {function(Error)}    on_failure
 */
spv.ds.ipprot.IpadClient.sendJsonpHttpRequest = function(
		url,
		http_method,
		query,
		return_is_void,
		on_success,
		on_failure)
{
	var on_jsonp_reply = function (response)
	{
		try
		{
			if (spv.ds.ipprot.IpadClient.hasErrorCarrier(response))
			{
				var err = spv.ds.ipprot.IpadClient.makeResponseError(response);
				throw err;
			}
			if (return_is_void)
			{
				on_success(null);
				return;
			}
			on_success(response);
		}
		catch (response_err)
		{
			on_failure(response_err);
		}
	};
	var on_jsonp_error = function(response)
	{
		var jsonp_error = spv.ds.ipprot.IpadClient.makeResponseError(response);
		on_failure(jsonp_error);
	};
	var payload = spv.ds.ipprot.IpadClient.makeJsonpPayload(query);
	var jp = new goog.net.Jsonp(url);
	var timeout_ms = 60 * 1000 * 10;
	jp.setRequestTimeout(timeout_ms);
	jp.send(payload, on_jsonp_reply, on_jsonp_error);
};