From 45ea450d01c5d815ff37cc0a94786912263dbd15 Mon Sep 17 00:00:00 2001 From: Young Hahn Date: Sun, 18 May 2014 11:50:18 -0400 Subject: [PATCH] Use tiletype for detecting content-type headers. --- lib/mbtiles.js | 11 +++++------ lib/utils.js | 15 --------------- package.json | 1 + 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/lib/mbtiles.js b/lib/mbtiles.js index 406fdb2..d434f03 100644 --- a/lib/mbtiles.js +++ b/lib/mbtiles.js @@ -7,6 +7,7 @@ var qs = require('querystring'); var Buffer = require('buffer').Buffer; var sm = new (require('sphericalmercator')); var sqlite3 = require('sqlite3'); +var tiletype = require('tiletype'); function noop(err) { if (err) throw err; @@ -150,12 +151,10 @@ MBTiles.prototype.getTile = function(z, x, y, callback) { } else if (err) { return callback(err); } else { - var options = { - 'Content-Type': MBTiles.utils.getMimeType(row.tile_data), - 'Last-Modified': new Date(mbtiles._stat.mtime).toUTCString(), - 'ETag': mbtiles._stat.size + '-' + Number(mbtiles._stat.mtime) - }; - return callback(null, row.tile_data, options); + var headers = tiletype.headers(tiletype.type(row.tile_data)); + headers['Last-Modified'] = new Date(mbtiles._stat.mtime).toUTCString(); + headers['ETag'] = mbtiles._stat.size + '-' + Number(mbtiles._stat.mtime); + return callback(null, row.tile_data, headers); } }); }; diff --git a/lib/utils.js b/lib/utils.js index 37146ae..1f0387c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -20,21 +20,6 @@ utils.table = function(fields) { }); }; -utils.getMimeType = function(data) { - if (data[0] === 0x89 && data[1] === 0x50 && data[2] === 0x4E && - data[3] === 0x47 && data[4] === 0x0D && data[5] === 0x0A && - data[6] === 0x1A && data[7] === 0x0A) { - return 'image/png'; - } else if (data[0] === 0xFF && data[1] === 0xD8 && - data[data.length - 2] === 0xFF && data[data.length - 1] === 0xD9) { - return 'image/jpeg'; - } else if (data[0] === 0x47 && data[1] === 0x49 && data[2] === 0x46 && - data[3] === 0x38 && (data[4] === 0x39 || data[4] === 0x37) && - data[5] === 0x61) { - return 'image/gif'; - } -}; - function Queue(callback, concurrency) { this.callback = callback; this.concurrency = concurrency || 10; diff --git a/package.json b/package.json index 1b6b764..3def43a 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "Konstantin Käfer " ], "dependencies": { + "tiletype": "0.0.x", "sqlite3": "~2.2.0", "sphericalmercator": "~1.0.1" },