From ac730dc1f3e3b3836525fb87fca8f13edfe248de Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Tue, 19 Nov 2013 14:52:29 +0100 Subject: [PATCH 1/2] override URL parameter values in the GetFeatureInfo request if someone provides a param in getFeatureInfoOptions with the same name --- src/ol/source/wmssource.js | 5 +++++ test/spec/ol/source/wmssource.test.js | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/ol/source/wmssource.js b/src/ol/source/wmssource.js index dac71c6b10..230a5a5889 100644 --- a/src/ol/source/wmssource.js +++ b/src/ol/source/wmssource.js @@ -95,6 +95,11 @@ ol.source.wms.getFeatureInfo = goog.object.extend(params, {'X': x, 'Y': y}); } goog.object.extend(params, localOptions.params); + for (var key in params) { + if (goog.uri.utils.hasParam(url, key)) { + url = goog.uri.utils.removeParam(url, key); + } + } url = goog.uri.utils.appendParamsFromMap(url, params); if (localOptions.method == ol.source.WMSGetFeatureInfoMethod.IFRAME) { goog.global.setTimeout(function() { diff --git a/test/spec/ol/source/wmssource.test.js b/test/spec/ol/source/wmssource.test.js index fb23af0dbf..f5241abc9f 100644 --- a/test/spec/ol/source/wmssource.test.js +++ b/test/spec/ol/source/wmssource.test.js @@ -45,6 +45,17 @@ describe('ol.source.wms', function() { done(); }); }); + it('overrides any existing parameters', function(done) { + ol.source.wms.getFeatureInfo('?REQUEST=GetMap&VERSION=1.3&LAYERS=' + + 'foo&STYLES=x', + [5, 10], {params: {'INFO_FORMAT': 'text/plain', STYLES: 'y'}}, + function(info) { + expect(info).to.eql(''); + done(); + }); + }); }); }); From bb53087541826e30feb4f8cd0e391265ee6f1255 Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Tue, 19 Nov 2013 17:09:02 +0100 Subject: [PATCH 2/2] make sure parameter name lookups are case-insensitive --- src/ol/source/wmssource.js | 8 ++++---- test/spec/ol/source/wmssource.test.js | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ol/source/wmssource.js b/src/ol/source/wmssource.js index 230a5a5889..962fb6b199 100644 --- a/src/ol/source/wmssource.js +++ b/src/ol/source/wmssource.js @@ -1,6 +1,7 @@ goog.provide('ol.source.WMSGetFeatureInfoMethod'); goog.provide('ol.source.wms'); +goog.require('goog.Uri'); goog.require('goog.net.XhrIo'); goog.require('goog.object'); goog.require('goog.uri.utils'); @@ -95,12 +96,11 @@ ol.source.wms.getFeatureInfo = goog.object.extend(params, {'X': x, 'Y': y}); } goog.object.extend(params, localOptions.params); + var uri = new goog.Uri(url, true); for (var key in params) { - if (goog.uri.utils.hasParam(url, key)) { - url = goog.uri.utils.removeParam(url, key); - } + uri.setParameterValue(key, params[key]); } - url = goog.uri.utils.appendParamsFromMap(url, params); + url = uri.toString(); if (localOptions.method == ol.source.WMSGetFeatureInfoMethod.IFRAME) { goog.global.setTimeout(function() { success(''); diff --git a/test/spec/ol/source/wmssource.test.js b/test/spec/ol/source/wmssource.test.js index f5241abc9f..af0e6b7c58 100644 --- a/test/spec/ol/source/wmssource.test.js +++ b/test/spec/ol/source/wmssource.test.js @@ -32,8 +32,8 @@ describe('ol.source.wms', function() { [5, 10], {params: {'INFO_FORMAT': 'text/plain'}}, function(info) { expect(info).to.eql(''); + '?request=GetFeatureInfo&version=1.3&layers=foo&query_layers=' + + 'foo&info_format=text%2Fplain&i=5&j=10">'); done(); }); }); @@ -47,12 +47,12 @@ describe('ol.source.wms', function() { }); it('overrides any existing parameters', function(done) { ol.source.wms.getFeatureInfo('?REQUEST=GetMap&VERSION=1.3&LAYERS=' + - 'foo&STYLES=x', + 'foo&styles=x', [5, 10], {params: {'INFO_FORMAT': 'text/plain', STYLES: 'y'}}, function(info) { expect(info).to.eql(''); + '?request=GetFeatureInfo&version=1.3&layers=foo&query_layers=' + + 'foo&styles=y&info_format=text%2Fplain&i=5&j=10">'); done(); }); });