const express = require('express'); const axios = require('axios'); const router = express.Router(); const requireAuth = require('../middleware/requireAuth'); const sanitizeError = require('../utils/sanitizeError'); router.use(requireAuth); // Get queue router.get('/queue', async (req, res) => { try { const response = await axios.get(`${process.env.SONARR_URL}/api/v3/queue`, { headers: { 'X-Api-Key': process.env.SONARR_API_KEY } }); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch Sonarr queue', details: sanitizeError(error) }); } }); // Get history router.get('/history', async (req, res) => { try { const response = await axios.get(`${process.env.SONARR_URL}/api/v3/history`, { headers: { 'X-Api-Key': process.env.SONARR_API_KEY }, params: { pageSize: req.query.pageSize || 50 } }); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch Sonarr history', details: sanitizeError(error) }); } }); // Get series details router.get('/series/:id', async (req, res) => { try { const response = await axios.get(`${process.env.SONARR_URL}/api/v3/series/${req.params.id}`, { headers: { 'X-Api-Key': process.env.SONARR_API_KEY } }); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch series details', details: sanitizeError(error) }); } }); // Get all series with tags router.get('/series', async (req, res) => { try { const response = await axios.get(`${process.env.SONARR_URL}/api/v3/series`, { headers: { 'X-Api-Key': process.env.SONARR_API_KEY } }); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch series', details: sanitizeError(error) }); } }); module.exports = router;