
Mapbox File Sniff 
Node module that returns spatial filetype.
Install
With npm:
npm install -g mapbox-file-sniff
Javascript example
var filesniffer = require('mapbox-file-sniff');
var buffer = fs.readFileSync('path/to/data/file.geojson');
filesniffer.sniff(buffer, function(err, filetype){
console.log(filetype);
});
filesniffer.waft(buffer, function(err, protocol) {
console.log(protocol);
});
filesniffer.quaff('path/to/data/file.geojson', true, function(err, protocol) {
console.log(protocol);
});
CLI example
$ mapbox-file-type path/to/data/file.geojson
$ mapbox-file-protocol path/to/data/file.geojson
buffer
: Buffer object of file contents (at least length 300)
API
sniff(buffer, callback)
Returns a string
for the following filetypes:
- Zipped shapefile:
zip
- Unziped shapefile:
shp
- GPX:
gpx
- KML:
kml
- GeoJSON:
geojson
- GeoTIFF:
tif
- Mbtiles:
mbtiles
- TileJSON:
tilejson
- Serialtiles:
serialtiles
- tm2z:
tm2z
- csv:
csv
waft(buffer, callback)
Returns a string
for the following tilelive protocols:
quaff(filepath, protocol, callback)
A wrapper around waft
and sniff
that lets you pass in a file path (read as a buffer) and protocol to either return the protocol (waft) or the file type (sniff).
Tests
Full test suite:
npm test
Run an individual test:
tape test/name.of.test.js