managerr/backend/controllers/sonarrController.js
2025-07-28 09:46:26 +02:00

99 lines
3.5 KiB
JavaScript

const axios = require('axios');
const Settings = require('../models/Settings');
// Fonction pour créer un client Sonarr pour un utilisateur spécifique
const createSonarrClient = async (userId) => {
const settings = await Settings.findOne({ user: userId });
if (!settings || !settings.sonarr || !settings.sonarr.url || !settings.sonarr.apiKey) {
throw new Error('Paramètres Sonarr non configurés');
}
return axios.create({
baseURL: settings.sonarr.url,
headers: {
'X-Api-Key': settings.sonarr.apiKey
}
});
};
// Récupérer toutes les séries
exports.getAllSeries = async (req, res) => {
try {
const sonarrClient = await createSonarrClient(req.user.id);
const response = await sonarrClient.get('/series');
res.json(response.data);
} catch (error) {
console.error('Erreur lors de la récupération des séries:', error);
if (error.message === 'Paramètres Sonarr non configurés') {
return res.status(400).json({ message: error.message });
}
res.status(500).json({ message: 'Erreur lors de la récupération des séries' });
}
};
// Récupérer les séries manquantes
exports.getMissingSeries = async (req, res) => {
try {
const sonarrClient = await createSonarrClient(req.user.id);
const response = await sonarrClient.get('/wanted/missing');
res.json(response.data);
} catch (error) {
console.error('Erreur lors de la récupération des séries manquantes:', error);
if (error.message === 'Paramètres Sonarr non configurés') {
return res.status(400).json({ message: error.message });
}
res.status(500).json({ message: 'Erreur lors de la récupération des séries manquantes' });
}
};
// Récupérer les séries à venir
exports.getUpcomingSeries = async (req, res) => {
try {
const sonarrClient = await createSonarrClient(req.user.id);
const response = await sonarrClient.get('/calendar', {
params: {
start: new Date().toISOString(),
end: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString() // 30 jours
}
});
res.json(response.data);
} catch (error) {
console.error('Erreur lors de la récupération des séries à venir:', error);
if (error.message === 'Paramètres Sonarr non configurés') {
return res.status(400).json({ message: error.message });
}
res.status(500).json({ message: 'Erreur lors de la récupération des séries à venir' });
}
};
// Récupérer l'historique des téléchargements
exports.getHistory = async (req, res) => {
try {
const sonarrClient = await createSonarrClient(req.user.id);
const response = await sonarrClient.get('/history');
res.json(response.data);
} catch (error) {
console.error('Erreur lors de la récupération de l\'historique:', error);
if (error.message === 'Paramètres Sonarr non configurés') {
return res.status(400).json({ message: error.message });
}
res.status(500).json({ message: 'Erreur lors de la récupération de l\'historique' });
}
};
// Récupérer le calendrier
exports.getCalendar = async (req, res) => {
try {
const { start, end } = req.query;
const response = await sonarrClient.get('/calendar', {
params: {
start: start || new Date().toISOString(),
end: end || new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString()
}
});
res.json(response.data);
} catch (error) {
console.error('Erreur lors de la récupération du calendrier:', error);
res.status(500).json({ message: 'Erreur lors de la récupération du calendrier' });
}
};