110 lines
3.9 KiB
JavaScript
110 lines
3.9 KiB
JavaScript
const axios = require('axios');
|
|
const Settings = require('../models/Settings');
|
|
|
|
// Fonction pour créer un client Radarr pour un utilisateur spécifique
|
|
const createRadarrClient = async (userId) => {
|
|
const settings = await Settings.findOne({ user: userId });
|
|
if (!settings || !settings.radarr || !settings.radarr.url || !settings.radarr.apiKey) {
|
|
throw new Error('Paramètres Radarr non configurés');
|
|
}
|
|
|
|
return axios.create({
|
|
baseURL: settings.radarr.url,
|
|
headers: {
|
|
'X-Api-Key': settings.radarr.apiKey
|
|
}
|
|
});
|
|
};
|
|
|
|
// Récupérer tous les films
|
|
exports.getAllMovies = async (req, res) => {
|
|
try {
|
|
const radarrClient = await createRadarrClient(req.user.id);
|
|
const response = await radarrClient.get('/movie');
|
|
res.json(response.data);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la récupération des films:', error);
|
|
if (error.message === 'Paramètres Radarr non configurés') {
|
|
return res.status(400).json({ message: error.message });
|
|
}
|
|
res.status(500).json({ message: 'Erreur lors de la récupération des films' });
|
|
}
|
|
};
|
|
|
|
// Récupérer les films manquants
|
|
exports.getMissingMovies = async (req, res) => {
|
|
try {
|
|
const radarrClient = await createRadarrClient(req.user.id);
|
|
const response = await radarrClient.get('/movie');
|
|
const missingMovies = response.data.filter(movie => !movie.hasFile);
|
|
res.json(missingMovies);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la récupération des films manquants:', error);
|
|
if (error.message === 'Paramètres Radarr non configurés') {
|
|
return res.status(400).json({ message: error.message });
|
|
}
|
|
res.status(500).json({ message: 'Erreur lors de la récupération des films manquants' });
|
|
}
|
|
};
|
|
|
|
// Récupérer les films à venir
|
|
exports.getUpcomingMovies = async (req, res) => {
|
|
try {
|
|
const radarrClient = await createRadarrClient(req.user.id);
|
|
const today = new Date();
|
|
const response = await radarrClient.get('/movie');
|
|
|
|
const upcomingMovies = response.data.filter(movie => {
|
|
const releaseDate = new Date(movie.digitalRelease || movie.physicalRelease || movie.inCinemas);
|
|
return releaseDate > today;
|
|
});
|
|
|
|
res.json(upcomingMovies);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la récupération des films à venir:', error);
|
|
if (error.message === 'Paramètres Radarr non configurés') {
|
|
return res.status(400).json({ message: error.message });
|
|
}
|
|
res.status(500).json({ message: 'Erreur lors de la récupération des films à venir' });
|
|
}
|
|
};
|
|
|
|
// Récupérer l'historique des téléchargements
|
|
exports.getHistory = async (req, res) => {
|
|
try {
|
|
const radarrClient = await createRadarrClient(req.user.id);
|
|
const response = await radarrClient.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 Radarr 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 radarrClient = await createRadarrClient(req.user.id);
|
|
const { start, end } = req.query;
|
|
const startDate = start || new Date().toISOString();
|
|
const endDate = end || new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
|
|
|
|
const response = await radarrClient.get('/calendar', {
|
|
params: {
|
|
start: startDate,
|
|
end: endDate
|
|
}
|
|
});
|
|
|
|
res.json(response.data);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la récupération du calendrier:', error);
|
|
if (error.message === 'Paramètres Radarr non configurés') {
|
|
return res.status(400).json({ message: error.message });
|
|
}
|
|
res.status(500).json({ message: 'Erreur lors de la récupération du calendrier' });
|
|
}
|
|
};
|