From 8c8054b785ab354dadf03a6dd385fde954201142 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 29 Aug 2018 00:43:42 -0400 Subject: [PATCH] Better check for file extension, default to .gpx if `gpx=` in url (closes #5253) --- modules/renderer/background.js | 2 +- modules/svg/data.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/renderer/background.js b/modules/renderer/background.js index 4b71ddfe1..b52db0415 100644 --- a/modules/renderer/background.js +++ b/modules/renderer/background.js @@ -452,7 +452,7 @@ export function rendererBackground(context) { if (q.gpx) { var gpx = context.layers().layer('data'); if (gpx) { - gpx.url(q.gpx); + gpx.url(q.gpx, '.gpx'); } } diff --git a/modules/svg/data.js b/modules/svg/data.js index b4ee1a7ac..a391c8f1f 100644 --- a/modules/svg/data.js +++ b/modules/svg/data.js @@ -316,10 +316,9 @@ export function svgData(projection, context, dispatch) { function getExtension(fileName) { if (!fileName) return; - var lastDotIndex = fileName.lastIndexOf('.'); - if (lastDotIndex < 0) return; - - return fileName.substr(lastDotIndex); + var re = /\.(gpx|kml|(geo)?json)$/i; + var match = fileName.match(re); + return match && match.length && match[0]; } @@ -471,15 +470,16 @@ export function svgData(projection, context, dispatch) { }; - drawData.url = function(url) { + drawData.url = function(url, defaultExtension) { _template = null; _fileList = null; _geojson = null; _src = null; - var extension = getExtension(url); - var re = /\.(gpx|kml|(geo)?json)$/i; - if (re.test(extension)) { + // strip off any querystring/hash from the url before checking extension + var testUrl = url.split(/[?#]/)[0]; + var extension = getExtension(testUrl) || defaultExtension; + if (extension) { _template = null; d3_text(url, function(err, data) { if (err) return;