Skip to content

Commit

Permalink
Merge 58e7ed1 into 533da27
Browse files Browse the repository at this point in the history
  • Loading branch information
yhahn committed Dec 2, 2015
2 parents 533da27 + 58e7ed1 commit 9b26582
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 2 deletions.
3 changes: 3 additions & 0 deletions index.js
Expand Up @@ -164,6 +164,9 @@ Vector.prototype.getTile = function(z, x, y, callback) {
.digest('hex'));
headers['Last-Modified'] = new Date(head && head['Last-Modified'] || 0).toUTCString();

// Passthrough backend expires header if present.
if (head['Expires']||head['expires']) headers['Expires'] = head['Expires']||head['expires'];

// Return headers for 'headers' format.
if (format === 'headers') return callback(null, headers, headers);

Expand Down
30 changes: 30 additions & 0 deletions test/fixtures/expires.xml
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" background-color="#ffffff" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">

<Parameters>
<Parameter name="bounds">-180,-85.0511,180,85.0511</Parameter>
<Parameter name="center">0,0,2</Parameter>
<Parameter name="format">png8:m=h</Parameter>
<Parameter name="minzoom">0</Parameter>
<Parameter name="maxzoom">8</Parameter>
<Parameter name="scale">1</Parameter>
<Parameter name="source">test:///expires</Parameter>
<Parameter name="name"><![CDATA[test-a]]></Parameter>
<Parameter name="interactivity_layer">coastline</Parameter>
<Parameter name="interactivity_fields">ScaleRank</Parameter>
<Parameter name="json"><![CDATA[{"level1":{"level2":"property"},"scale":2}]]></Parameter>
</Parameters>


<Style name="coastline" filter-mode="first">
<Rule>
<LineSymbolizer stroke-width="1" stroke="#000000" />
</Rule>
</Style>
<Layer name="coastline"
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
<StyleName>coastline</StyleName>
</Layer>

</Map>
14 changes: 13 additions & 1 deletion test/test.js
Expand Up @@ -16,7 +16,8 @@ var xml = {
b: fs.readFileSync(path.resolve(__dirname + '/fixtures/b.xml'), 'utf8'),
c: fs.readFileSync(path.resolve(__dirname + '/fixtures/c.xml'), 'utf8'),
i: fs.readFileSync(path.resolve(__dirname + '/fixtures/i.xml'), 'utf8'),
space: fs.readFileSync(path.resolve(__dirname + '/fixtures/s p a c e/i.xml'), 'utf8')
space: fs.readFileSync(path.resolve(__dirname + '/fixtures/s p a c e/i.xml'), 'utf8'),
expires: fs.readFileSync(path.resolve(__dirname + '/fixtures/expires.xml'), 'utf8')
};

test('should fail without backend', function(t) {
Expand Down Expand Up @@ -88,6 +89,17 @@ test('should use fallback backend', function(t) {
t.end();
});
});
test('passes through backend expires header', function(t) {
new Vector({ source:'test:///expires', xml: xml.expires }, function(err, source) {
t.ifError(err);
source.getTile(0, 0, 0, function(err, buffer, headers) {
t.ifError(err);
t.ok(buffer);
t.equal(headers.Expires, 'Wed, 01 Jan 2020 00:00:00 GMT');
t.end();
});
});
});

var sources = {
a: new Vector({ backend: new Testsource('a'), xml: xml.a }),
Expand Down
27 changes: 26 additions & 1 deletion test/testsource.js
Expand Up @@ -67,6 +67,23 @@ var infos = {
}
}
]
},
expires: {
minzoom:0,
maxzoom:1,
vector_layers: [
{
"id": "coastline",
"description": "",
"minzoom": 0,
"maxzoom": 22,
"fields": {
"FeatureCla": "String",
"Note": "String",
"ScaleRank": "Number"
}
}
]
}
};
var tiles = {
Expand All @@ -89,7 +106,12 @@ var tiles = {
var key = basename.split('.').slice(0,3).join('.');
memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'gz', basename)));
return memo;
}, {})
}, {}),
expires: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','a'))).reduce(function(memo, basename) {
var key = basename.split('.').slice(0,3).join('.');
memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'a', basename)));
return memo;
}, {}),
};

// Additional error tile fixtures.
Expand Down Expand Up @@ -133,6 +155,9 @@ Testsource.prototype.getTile = function(z,x,y,callback) {
'Content-Type':'application/x-protobuf'
};

// Additional headers.
if (this.uri === 'expires') headers['expires'] = new Date('2020-01-01').toUTCString();

if (!tiles[this.uri][key]) {
return callback(new Error('Tile does not exist'));
} else {
Expand Down

0 comments on commit 9b26582

Please sign in to comment.