2026-02-21 19:07:05 +00:00

75 lines
2.0 KiB
JavaScript

// 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
};