From 0353e294444cd21ca296d3257a306e9447fd7f42 Mon Sep 17 00:00:00 2001 From: john gravois Date: Tue, 8 Nov 2016 16:17:00 -0800 Subject: [PATCH 1/2] make sure image overlays are proxied --- package.json | 4 +++- src/Layers/DynamicMapLayer.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2d10c38ed..486b1c419 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "load-grunt-tasks": "^0.4.0", "mkdirp": "^0.5.1", "mocha": "^2.3.4", + "parallelshell": "^2.0.0", "phantomjs": "^1.9.17", "rollup": "^0.25.4", "rollup-plugin-json": "^2.0.0", @@ -75,7 +76,8 @@ "prepublish": "npm run build", "pretest": "npm run build", "release": "./scripts/release.sh", - "start": "watch 'npm run build' src & http-server -p 5000 -c-1 -o", + "start-watch": "watch \"npm run build\" src", + "start": "parallelshell \"npm run start-watch\" \"http-server -p 5000 -c-1 -o\"", "test": "npm run lint && karma start" }, "semistandard": { diff --git a/src/Layers/DynamicMapLayer.js b/src/Layers/DynamicMapLayer.js index 48e6fe6d5..70135d727 100644 --- a/src/Layers/DynamicMapLayer.js +++ b/src/Layers/DynamicMapLayer.js @@ -23,6 +23,7 @@ export var DynamicMapLayer = RasterLayer.extend({ if ((options.proxy || options.token) && options.f !== 'json') { options.f = 'json'; } + L.Util.setOptions(this, options); }, @@ -150,6 +151,10 @@ export var DynamicMapLayer = RasterLayer.extend({ params.token = this.service.options.token; } + if (this.options.proxy) { + params.proxy = this.options.proxy; + } + return params; }, @@ -160,6 +165,9 @@ export var DynamicMapLayer = RasterLayer.extend({ if (this.options.token) { response.href += ('?token=' + this.options.token); } + if (this.options.proxy) { + response.href = this.options.proxy + '?' + response.href; + } if (response.href) { this._renderImage(response.href, bounds); } else { From d8f33ed2eefe2a8bd69a5db654c283f9f8f4bb38 Mon Sep 17 00:00:00 2001 From: john gravois Date: Wed, 9 Nov 2016 11:28:22 -0800 Subject: [PATCH 2/2] stubbed out test --- spec/Layers/DynamicMapLayerSpec.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/spec/Layers/DynamicMapLayerSpec.js b/spec/Layers/DynamicMapLayerSpec.js index c894befb3..33ee906f2 100644 --- a/spec/Layers/DynamicMapLayerSpec.js +++ b/spec/Layers/DynamicMapLayerSpec.js @@ -187,7 +187,7 @@ describe('L.esri.DynamicMapLayer', function () { server.respond(); }); - it('should bring itself to the front', function (done) { + it('should bring itself to the back', function (done) { layer.on('load', function () { var spy = sinon.spy(layer._currentImage, 'bringToBack'); layer.bringToBack(); @@ -322,6 +322,28 @@ describe('L.esri.DynamicMapLayer', function () { expect(spy.getCall(0).args[0]).to.match(new RegExp(/http:\/\/services.arcgis.com\/mock\/arcgis\/rest\/services\/MockMapService\/MapServer\/export\?bbox=-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+&size=500%2C500&dpi=96&format=png24&transparent=true&bboxSR=3857&imageSR=3857&f=image/)); }); + // it('should be able to request an image using a proxy', function (done) { + // server.respondWith('GET', new RegExp(/\.\/proxy\?http:\/\/services.arcgis.com\/mock\/arcgis\/rest\/services\/MockMapService\/MapServer\/export\?bbox=-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+&size=500%2C500&dpi=96&format=png24&transparent=true&bboxSR=3857&imageSR=3857&f=json/), JSON.stringify({ + // href: 'http://services.arcgis.com/mock/arcgis/rest/directories/arcgisoutput/Census_MapServer/_ags_mapec70f175eca3415a97c0db6779ad9976.png', + // height: 421, + // width: 1675, + // scale: 18055.95482153688 + // })); + + // var proxiedLayer = L.esri.dynamicMapLayer({ + // url: url, + // proxy: './proxy.ashx' + // }); + + // proxiedLayer.once('load', function () { + // expect(proxiedLayer._currentImage._url).to.equal('foo'); + // done(); + // }); + + // proxiedLayer.addTo(map); + // server.respond(); + // }); + it('should be able to parse real base64 images from the export service', function (done) { server.respondWith('GET', new RegExp(/http:\/\/services.arcgis.com\/mock\/arcgis\/rest\/services\/MockMapService\/MapServer\/export\?bbox=-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+%2C-?\d+\.\d+&size=500%2C500&dpi=96&format=png24&transparent=true&bboxSR=3857&imageSR=3857&f=json/), JSON.stringify({ imageData: base64Image,