Skip to content

Commit

Permalink
Ensure subdomains are provided to the renderer from the http factory
Browse files Browse the repository at this point in the history
fixes #321
  • Loading branch information
rochoa committed Apr 21, 2015
1 parent 15e791c commit da268f4
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/windshaft/renderers/http/factory.js
Expand Up @@ -36,12 +36,18 @@ HttpFactory.prototype.getRenderer = function(mapConfig, format, options, callbac
return callback(new Error('Invalid "urlTemplate" for http layer'));
}
}

var subdomains = layer.options.subdomains;
if (!subdomains) {
subdomains = urlTemplate.match(/\{ *([s]+) *\}/g) ? ['a', 'b', 'c'] : [];
}

var rendererOptions = {
tms: layer.options.tms || false,
timeout: this.timeout,
proxy: this.proxy
};
return callback(null, new Renderer(urlTemplate, layer.options.subdomains, rendererOptions));
return callback(null, new Renderer(urlTemplate, subdomains, rendererOptions));
};

function isValidUrlTemplate(urlTemplate, whitelist) {
Expand Down
53 changes: 53 additions & 0 deletions test/integration/renderers/http_factory.js
Expand Up @@ -108,4 +108,57 @@ describe('renderer_http_factory_getRenderer', function() {
done();
});
});

describe('when subdomains are not provided', function() {

var noSubdomainsUrlTemplate = 'http://wadus.example.com/{z}/{x}/{y}.png';
var subdomainsUrlTemplate = 'http://{s}.wadus.example.com/{z}/{x}/{y}.png';

it('returns a renderer with valid subdomains for a subdomain template', function(done) {
var whitelistAnyUrl = ['.*'];
var factoryWithFallbackImage = new HttpRendererFactory(whitelistAnyUrl, 2000);
var mapConfig = MapConfig.create({
layers: [
{
type: 'http',
options: {
urlTemplate: subdomainsUrlTemplate
}
}
]
});
factoryWithFallbackImage.getRenderer(mapConfig, 'png', layerZeroOptions, function(err, renderer) {
assert.ok(!err);
assert.ok(renderer);
assert.equal(renderer.constructor, Renderer);
assert.equal(renderer.subdomains.length, 3);
assert.deepEqual(renderer.subdomains, ['a', 'b', 'c']);
done();
});
});

it('returns a renderer with valid subdomains for a NON subdomain template', function(done) {
var whitelistAnyUrl = ['.*'];
var factoryWithFallbackImage = new HttpRendererFactory(whitelistAnyUrl, 2000);
var mapConfig = MapConfig.create({
layers: [
{
type: 'http',
options: {
urlTemplate: noSubdomainsUrlTemplate
}
}
]
});
factoryWithFallbackImage.getRenderer(mapConfig, 'png', layerZeroOptions, function(err, renderer) {
assert.ok(!err);
assert.ok(renderer);
assert.equal(renderer.constructor, Renderer);
assert.equal(renderer.subdomains.length, 0);
assert.deepEqual(renderer.subdomains, []);
done();
});
});

});
});

0 comments on commit da268f4

Please sign in to comment.