Upstreaming API URL signing changes (bug 896791)

This commit is contained in:
Matt Basta 2013-12-02 17:13:05 -08:00
Родитель d0011e26d8
Коммит 34572687e7
2 изменённых файлов: 20 добавлений и 27 удалений

Просмотреть файл

@ -0,0 +1,10 @@
define('routes_api_args', [], function() {
return function() {
// This function should return an object containing the data to be
// added to each API URL.
return {
lang: (navigator.l10n && navigator.l10n.language) || navigator.language || navigator.userLanguage
};
};
});

Просмотреть файл

@ -1,6 +1,7 @@
define('urls',
['capabilities', 'format', 'routes_api', 'settings', 'underscore', 'user', 'utils'],
function(caps, format, api_endpoints, settings, _, user) {
['buckets', 'format', 'routes_api', 'routes_api_args', 'settings',
'user', 'utils'],
function(buckets, format, api_endpoints, api_args, settings, user) {
var group_pattern = /\(.+\)/;
var optional_pattern = /(\(.*\)|\[.*\]|.)\?/g;
@ -36,37 +37,19 @@ define('urls',
console.error('Could not find the view "' + view_name + '".');
};
function _dev() {
if (caps.firefoxOS) {
return 'firefoxos';
} else if (caps.firefoxAndroid) {
return 'android';
}
}
function _userArgs(func) {
return function() {
var out = func.apply(this, arguments);
var lang = navigator.language;
if (navigator.l10n && navigator.l10n.language) {
lang = navigator.l10n.language;
}
var args = {
lang: lang,
region: user.get_setting('region') || '',
carrier: user.get_setting('carrier') || '',
dev: _dev()
};
var args = api_args();
if (user.logged_in()) {
args._user = user.get_token();
}
Object.keys(args).forEach(function(k) {
if (!args[k] ||
settings.api_param_blacklist &&
settings.api_param_blacklist.indexOf(k) !== -1) {
delete args[k];
var blacklist = settings.api_param_blacklist || [];
for (var key in args) {
if (!args[key] || blacklist.indexOf(key) !== -1) {
delete args[key];
}
});
}
return require('utils').urlparams(out, args);
};
}
@ -103,7 +86,7 @@ define('urls',
api: {
url: _userArgs(api),
params: _userArgs(apiParams),
sign: _userArgs(_.identity),
sign: _userArgs(function(url) {return url;}),
unsigned: {
url: api,
params: apiParams