Guard against calling wikipedia service with empty query

This commit is contained in:
Bryan Housel
2016-09-28 00:36:00 -04:00
parent aeb2e26fa0
commit 774fe1e67a
+34 -4
View File
@@ -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;