// src/controllers/media.controller.js const { getPageConnection } = require('../services/tokenStore.service'); const { getIGMedia, getMediaDetails } = require('../services/media.service'); /** * GET /api/social/media * Get Instagram media posts for connected account * Query params: limit (default 50), after (pagination cursor) */ async function listMedia(req, res) { console.log('📸 Media list endpoint hit'); const userId =req.query.userId const { limit = 50, after } = req.query; try { const { pageToken, igUserId } = await getPageConnection(userId); if (!pageToken || !igUserId) { return res.status(400).json({ error: 'Connect a channel first' }); } const media = await getIGMedia(igUserId, pageToken, parseInt(limit), after); console.log(`✅ Fetched ${media.data.length} media items`); return res.json({ data: media.data, paging: media.paging, count: media.data.length }); } catch (error) { console.error('💥 Media list error:', error.message); return res.status(500).json({ error: error.message, details: error.response?.data }); } } /** * GET /api/social/media/:mediaId * Get details of a specific media post */ async function getMedia(req, res) { console.log('📸 Single media endpoint hit'); const userId =req.query.userId const { mediaId } = req.params; if (!mediaId) { return res.status(400).json({ error: 'mediaId parameter required' }); } try { const { pageToken, igUserId } = await getPageConnection(userId); if (!pageToken || !igUserId) { return res.status(400).json({ error: 'Connect a channel first' }); } const media = await getMediaDetails(mediaId, pageToken); console.log('✅ Media details fetched'); return res.json(media); } catch (error) { console.error('💥 Media details error:', error.message); return res.status(500).json({ error: error.message, details: error.response?.data }); } } module.exports = { listMedia, getMedia };