/** * @class * Create osmTafInforAPI service instance. * http://taginfo.openstreetmap.org/taginfo/apidoc */ class TagInfoAPI{ /** * @param {Object} $http angular $http service * @param {Object} $q angular $q service */ constructor($http, $q, options) { this.$http = $http; this.$q = $q; this.url = options.url; this.cache = true; if (options.cache === false) { this.cache = false; } } /** * internal get request to the remote API * @param {string} method * @param {Object} config $http config object * @return {Promise} */ get(method, config) { var deferred = this.$q.defer(); if (!config) { config = {}; } if (config.cache === undefined) { config.cache = this.cache; } this.$http.get(this.url + method, config).then( function (data) { deferred.resolve(data.data); }, function (error) { deferred.reject(error); } ); return deferred.promise; } /** * @param {any} params key — Tag key (required). query — Only show results where the other_key matches this query (substring match, optional). */ getKeyCombinations(params) { return this.get('/key/combinations', {params: params}); } /** * @param {any} params key — Tag key (required). */ getKeyDistributionNodes(params) { return this.get('/key/distribution/nodes', {params: params}); } /** * @param {any} params * key — Tag key (required). */ getKeyDistributionWays(params) { return this.get('/key/distribution/ways', {params: params}); } /** * @param {any} params * key — Tag key (required). */ getKeyStats(params) { return this.get('/key/stats', {params: params}); } /** * @param {any} params key — Tag key (required). lang — Language for description (optional, default: 'en'). query — Only show results where the value matches this query (substring match, optional). */ getKeyValues(params) { return this.get('/key/values', {params: params}); } /** * @param {any} params key — Tag key (required). */ getKeyWikiPages(params) { return this.get('/key/wiki_pages', {params: params}); } /** * @param {any} params query — Only show keys matching this query (substring match, optional). */ getKeysAll(params) { return this.get('/keys/all', {params: params}); } /** * @param {any} params query — Only show keys matching this query (substring match, optional). */ getKeysWikiPages(params) { return this.get('/keys/wiki_pages', {params: params}); } /** * @param {any} params english — Check for key wiki pages in any language (0, default) or in the English language (1). min_count — How many tags with this key must there be at least to show up here? (default 10000). query — Only show results where the key matches this query (substring match, optional). */ getKeysWithoutWikiPage(params) { return this.get('/keys/without_wiki_page', {params: params}); } /** * @param {any} params query — Only show results where the role matches this query (substring match, optional). rtype — Relation type (required). */ getRelationRoles(params) { return this.get('/relation/roles', {params: params}); } /** * @param {any} params rtype — Relation type (required). */ getRelationStats(params) { return this.get('/relation/stats', {params: params}); } /** * @param {any} params rtype — Relation type (required). */ getRelationWikiPages(params) { return this.get('/relation/wiki_pages', {params: params}); } /** * @param {any} params query — Only show results where the relation type matches this query (substring match, optional). */ getRelationsAll(params) { return this.get('/relations/all', {params: params}); } /** * @param {any} params query — Value to search for (substring search, required). */ getSearchByKeyAndValue(params) { return this.get('/search/by_key_and_value', {params: params}); } /** * @param {any} params query — Value to search for (substring search, required). */ getSearchByKeyword(params) { return this.get('/search/by_keyword', {params: params}); } /** * @param {any} params query — Role to search for (substring search, required). */ getSearchByRole(params) { return this.get('/search/by_role', {params: params}); } /** * @param {any} params query — Value to search for (substring search, required). */ getSearchByValue(params) { return this.get('/search/by_value', {params: params}); } /** * @param {any} params param: No params */ getSiteInfo(params) { return this.get('/site/info', {params: params}); } /** * @param {any} params param: No params */ getSiteSources(params) { return this.get('/site/sources', {params: params}); } /** * @param {any} params key — Tag key (required). query — Only show results where the other_key or other_value matches this query (substring match, optional). value — Tag value (required). */ getTagCombinations(params) { return this.get('/tag/combinations', {params: params}); } /** * @param {any} params key — Tag key (required). value — Tag value (required). */ getTagDistributionNodes(params) { return this.get('/tag/distribution/nodes', {params: params}); } /** * @param {any} params key — Tag key (required). value — Tag value (required). */ getTagDistributionWays(params) { return this.get('/tag/distribution/ways', {params: params}); } /** * @param {any} params key — Tag key (required). value — Tag value (required). */ getTagStats(params) { return this.get('/tag/stats', {params: params}); } /** * @param {any} params key — Tag key (required). value — Tag value (required). */ getTagWikiPages(params) { return this.get('/tag/wiki_pages', {params: params}); } /** * @param {any} params query — Only show tags matching this query (substring match in key and value, optional). */ getTagsPopular(params) { return this.get('/tags/popular', {params: params}); } /** * @param {any} params param: No params */ getWikiLanguages(params) { return this.get('/wiki/languages', {params: params}); } } TagInfoAPI.$inject = ['$http', '$q']; export default TagInfoAPI;