mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 09:12:52 +00:00
100 lines
2.7 KiB
JavaScript
100 lines
2.7 KiB
JavaScript
import { json as d3_json } from 'd3-request';
|
|
|
|
import { utilQsString } from '../util';
|
|
|
|
|
|
var endpoint = 'https://en.wikipedia.org/w/api.php?';
|
|
|
|
export default {
|
|
|
|
init: function() {},
|
|
reset: function() {},
|
|
|
|
|
|
search: function(lang, query, callback) {
|
|
if (!query) {
|
|
callback('', []);
|
|
return;
|
|
}
|
|
|
|
lang = lang || 'en';
|
|
d3_json(endpoint.replace('en', lang) +
|
|
utilQsString({
|
|
action: 'query',
|
|
list: 'search',
|
|
srlimit: '10',
|
|
srinfo: 'suggestion',
|
|
format: 'json',
|
|
origin: '*',
|
|
srsearch: query
|
|
}), 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; });
|
|
callback(query, results);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
|
|
suggestions: function(lang, query, callback) {
|
|
if (!query) {
|
|
callback('', []);
|
|
return;
|
|
}
|
|
|
|
lang = lang || 'en';
|
|
d3_json(endpoint.replace('en', lang) +
|
|
utilQsString({
|
|
action: 'opensearch',
|
|
namespace: 0,
|
|
suggest: '',
|
|
format: 'json',
|
|
origin: '*',
|
|
search: query
|
|
}), function(err, data) {
|
|
if (err || !data || data.error) {
|
|
callback('', []);
|
|
} else {
|
|
callback(data[0], data[1] || []);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
|
|
translations: function(lang, title, callback) {
|
|
if (!title) {
|
|
callback({});
|
|
return;
|
|
}
|
|
|
|
d3_json(endpoint.replace('en', lang) +
|
|
utilQsString({
|
|
action: 'query',
|
|
prop: 'langlinks',
|
|
format: 'json',
|
|
origin: '*',
|
|
lllimit: 500,
|
|
titles: title
|
|
}), 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]],
|
|
translations = {};
|
|
if (list && list.langlinks) {
|
|
list.langlinks.forEach(function(d) {
|
|
translations[d.lang] = d['*'];
|
|
});
|
|
}
|
|
callback(translations);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
};
|