From 774fe1e67a07dd14820982f400fc3f621f5d5f03 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 28 Sep 2016 00:36:00 -0400 Subject: [PATCH] Guard against calling wikipedia service with empty query --- modules/services/wikipedia.js | 38 +++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/modules/services/wikipedia.js b/modules/services/wikipedia.js index a2f572e94..3e37687d9 100644 --- a/modules/services/wikipedia.js +++ b/modules/services/wikipedia.js @@ -6,6 +6,11 @@ var wikipedia = {}, export function init() { wikipedia.search = function(lang, query, callback) { + if (!query) { + callback([]); + return; + } + lang = lang || 'en'; jsonpRequest(endpoint.replace('en', lang) + qsString({ @@ -17,14 +22,23 @@ export function init() { callback: '{callback}', srsearch: query }), function(data) { - if (!data.query) return; + if (!data || !data.query || !data.query.search) { + callback([]); + return; + } callback(query, data.query.search.map(function(d) { return d.title; })); - }); + } + ); }; wikipedia.suggestions = function(lang, query, callback) { + if (!query) { + callback('', []); + return; + } + lang = lang || 'en'; jsonpRequest(endpoint.replace('en', lang) + qsString({ @@ -35,11 +49,21 @@ export function init() { callback: '{callback}', search: query }), function(d) { + if (!d || d.error) { + callback('', []); + return; + } callback(d[0], d[1]); - }); + } + ); }; wikipedia.translations = function(lang, title, callback) { + if (!title) { + callback({}); + return; + } + jsonpRequest(endpoint.replace('en', lang) + qsString({ action: 'query', @@ -49,6 +73,11 @@ export function init() { lllimit: 500, titles: title }), function(d) { + if (!d || d.error) { + callback({}); + return; + } + var list = d.query.pages[Object.keys(d.query.pages)[0]], translations = {}; if (list && list.langlinks) { @@ -57,7 +86,8 @@ export function init() { }); callback(translations); } - }); + } + ); }; return wikipedia;