From 1ab7cf790ebce5ea35c91d45803cb30ef9b1af1c Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 4 Jul 2018 17:05:12 +0100 Subject: [PATCH] Use XHR to access wikipedia API instead of JSONP --- modules/services/wikipedia.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/services/wikipedia.js b/modules/services/wikipedia.js index 35bc47a1d..980af8741 100644 --- a/modules/services/wikipedia.js +++ b/modules/services/wikipedia.js @@ -1,4 +1,5 @@ -import { jsonpRequest } from '../util/jsonp_request'; +import { json as d3_json } from 'd3-request'; + import { utilQsString } from '../util'; @@ -17,17 +18,17 @@ export default { } lang = lang || 'en'; - jsonpRequest(endpoint.replace('en', lang) + + d3_json(endpoint.replace('en', lang) + utilQsString({ action: 'query', list: 'search', srlimit: '10', srinfo: 'suggestion', format: 'json', - callback: '{callback}', + origin: '*', srsearch: query - }), function(data) { - if (!data || !data.query || !data.query.search || data.error) { + }), function(err, data) { + if (err || !data || !data.query || !data.query.search || data.error) { callback('', []); } else { var results = data.query.search.map(function(d) { return d.title; }); @@ -45,16 +46,16 @@ export default { } lang = lang || 'en'; - jsonpRequest(endpoint.replace('en', lang) + + d3_json(endpoint.replace('en', lang) + utilQsString({ action: 'opensearch', namespace: 0, suggest: '', format: 'json', - callback: '{callback}', + origin: '*', search: query - }), function(data) { - if (!data || data.error) { + }), function(err, data) { + if (err || !data || data.error) { callback('', []); } else { callback(data[0], data[1] || []); @@ -70,16 +71,16 @@ export default { return; } - jsonpRequest(endpoint.replace('en', lang) + + d3_json(endpoint.replace('en', lang) + utilQsString({ action: 'query', prop: 'langlinks', format: 'json', - callback: '{callback}', + origin: '*', lllimit: 500, titles: title - }), function(data) { - if (!data || !data.query || !data.query.pages || data.error) { + }), function(err, data) { + if (err || !data || !data.query || !data.query.pages || data.error) { callback({}); } else { var list = data.query.pages[Object.keys(data.query.pages)[0]],