const router = require("express").Router();
const response = require("./response-wrapper");
// const config = require('../../config-handler');

// Парсинг куки
//router.use(require('cookie-parser')());

// Загрузка музыки при помощи спец. метода
function muzicLoad(req, res) {
	res.setHeader("Content-Type", "audio/mpeg");
	global.database.muzic.get(
		(err, data) => {
			data = data[0]?.data;
			if (err) {
				res.send(Buffer.from([]));
			} else {
				res.send(!data ? Buffer.from([]) : data);
			}
		},
		{ where: { id: !Number.isInteger(+req.query.id) ? 0 : +req.query.id } },
	);
}

// Подгрузка с файла
router.use("/:method_name", async (req, res, next, ...etc) => {
	if (req.params.method_name === "muzic") {
		muzicLoad(req, res);
		return;
	}

	try {
		const methodFunct = require(`./methods/${req.params.method_name}`);
		response(methodFunct, req, res);
	} catch (e) {
		if (e.message.includes("Cannot find module")) {
			const ApiError = require("./errorClass");
			res.status(400).sendModed(
				await response(
					(req, res) => {
						throw new ApiError("METHOD_NOT_FOUNDED");
					},
					req,
					res,
				),
			);
		} else {
			response(
				async () => {
					throw e;
				},
				req,
				res,
			);
		}
	}
});

module.exports = router;