From 2b99d15fd5b90978a089243cb22dd6ec1f139b0f Mon Sep 17 00:00:00 2001 From: Marc Tobias Date: Thu, 5 May 2022 01:45:17 +0200 Subject: [PATCH] config value Nominatim_API_Endpoint can also be a callback --- dist/config.defaults.js | 6 ++++++ src/lib/api_utils.js | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dist/config.defaults.js b/dist/config.defaults.js index 1ab8bd9..5846e92 100644 --- a/dist/config.defaults.js +++ b/dist/config.defaults.js @@ -5,6 +5,12 @@ let Nominatim_Config = { // Where Nominatim API runs. Remember to add port if needed and trailing slash. Nominatim_API_Endpoint: 'http://localhost/nominatim/', + // Alternatively provide a function callback + // Nominatim_API_Endpoint: function (endpoint) { + // var url = 'http://localhost/nominatim/'; + // if (endpoint) { url += endpoint + '.php' }; + // return url; + // } // Additional request headers for Nominatim API. Nominatim_API_Endpoint_Headers: {}, diff --git a/src/lib/api_utils.js b/src/lib/api_utils.js index e6f8158..7510c12 100644 --- a/src/lib/api_utils.js +++ b/src/lib/api_utils.js @@ -73,7 +73,7 @@ export async function fetch_content_into_element(url, dom_element) { await fetch(url) .then(response => response.text()) .then(html => { - html = html.replace('Nominatim_API_Endpoint', Nominatim_Config.Nominatim_API_Endpoint); + html = html.replace('Nominatim_API_Endpoint', generate_nominatim_endpoint_url()); dom_element.innerHTML = html; fetch_content_cache[url] = html; }); @@ -82,12 +82,25 @@ export async function fetch_content_into_element(url, dom_element) { } } +function generate_nominatim_endpoint_url(endpoint_name) { + var conf_endpoint = Nominatim_Config.Nominatim_API_Endpoint; + + if (typeof conf_endpoint === 'function') { + return conf_endpoint(endpoint_name); + } + + if (!endpoint_name) return conf_endpoint; + + return conf_endpoint + endpoint_name + '.php'; +} + function generate_nominatim_api_url(endpoint_name, params) { // default value for /search if (params.dedupe === 1) delete params.dedupe; extend_parameters(params, Nominatim_Config.Nominatim_API_Endpoint_Params); - return Nominatim_Config.Nominatim_API_Endpoint + endpoint_name + '.php?' + return generate_nominatim_endpoint_url(endpoint_name) + + '?' + Object.keys(clean_up_parameters(params)).map((k) => { return encodeURIComponent(k) + '=' + encodeURIComponent(params[k]); }).join('&'); -- 2.39.5