mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 16:33:01 -06:00
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const multer = require('multer');
|
|
const upload = multer({ storage: multer.memoryStorage() });
|
|
|
|
const { systemReducer, validateApiKey } = require('../helpers/rdio-scanner');
|
|
|
|
module.exports = ({ pubsub, store }) => (req, res) => upload.fields([
|
|
{ name: 'csv', maxCount: 1 },
|
|
{ name: 'key', maxCount: 1 },
|
|
{ name: 'system', maxCount: 1 },
|
|
])(req, res, (err) => {
|
|
if (err instanceof multer.MulterError) {
|
|
res.send(`${err.message}: ${err.field}\n`);
|
|
|
|
} else if (err) {
|
|
res.send(`${err.message}\n`);
|
|
|
|
} else {
|
|
const key = req.body.key;
|
|
|
|
const system = parseInt(req.body.system, 10);
|
|
|
|
const aliases = [];
|
|
|
|
if (!validateApiKey(key, system)) {
|
|
return res.send(`Api key is invalid for system ${system}.\n`);
|
|
}
|
|
|
|
const csv = req.files.csv[0].buffer.toString()
|
|
.split(/\n/)
|
|
.filter((l) => l.length && !/^\s*#/.test(l));
|
|
|
|
for (const line of csv) {
|
|
const vals = line.split(',');
|
|
|
|
aliases.push({
|
|
name: vals[1],
|
|
uid: parseInt(vals[0], 10),
|
|
})
|
|
}
|
|
|
|
store.rdioScannerSystem.findOne({ where: { system } })
|
|
.then((rdioScannerSystem) => {
|
|
if (rdioScannerSystem) {
|
|
rdioScannerSystem.update({ aliases: JSON.stringify(aliases), system }).then(() => {
|
|
res.send(`System ${rdioScannerSystem.name} updated successfully.\n`);
|
|
|
|
store.rdioScannerSystem.findAll({ order: [['system', 'ASC']] }).then((systems) => {
|
|
pubsub.publish('rdioScannerSystems', { rdioScannerSystems: systemReducer(systems) });
|
|
})
|
|
});
|
|
|
|
} else {
|
|
res.send(`Cannot update aliases for system ${rdioScannerSystem.name}.\n`);
|
|
}
|
|
});
|
|
}
|
|
});
|