const json = require('./json');
const geojson = require('./geojson');
const binary = require('./binary');

module.exports = async function (req, res, next) {
	try {
		const handlers = {
			"application/json": json,
			"application/geo+json": geojson,
			"application/vnd.aaltronav.dougal+octet-stream": binary,
			"application/vnd.aaltronav.dougal+octet-stream; format=0x1c": binary,
		};

		const mimetype = (handlers[req.query.mime] && req.query.mime) || req.accepts(Object.keys(handlers));

		if (mimetype) {
			res.set("Content-Type", mimetype);
			await handlers[mimetype](req, res, next);
		} else {
			res.status(406).send();
			next();
		}
	} catch (err) {
		next(err);
	}
}
