const logger = require('winston'); const lbryUri = require('../../utils/lbryUri'); const getOEmbedDataForChannel = require('./getOEmbedDataForChannel'); const getOEmbedDataForAsset = require('./getOEmbedDataForAsset'); const parseSpeechUrl = require('./parseSpeechUrl'); const getOEmbedData = (req, res) => { const { query: { url, format } } = req; logger.debug('req url', url); logger.debug('req format', format); const { paramOne, paramTwo } = parseSpeechUrl(url); let claimName, isChannel, channelName, channelClaimId, claimId; if (paramTwo) { ({ isChannel, channelName, channelClaimId, claimId } = lbryUri.parseIdentifier(paramOne)); ({ claimName } = lbryUri.parseClaim(paramTwo)); } else { ({ isChannel, channelName, channelClaimId } = lbryUri.parseIdentifier(paramOne)); if (!isChannel) { ({ claimName } = lbryUri.parseClaim(paramOne)); } } if (isChannel && !paramTwo) { getOEmbedDataForChannel(channelName, channelClaimId) .then(data => { if (format === 'xml') { return res.status(503).json({ success: false, message: 'xml format is not implemented yet', }); } else { return res.status(200).json(data); } }) .catch((error) => { return res.status(404).json({ success: false, message: error, }); }); } else { getOEmbedDataForAsset(channelName, channelClaimId, claimName, claimId) .then(data => { if (format === 'xml') { return res.status(503).json({ success: false, message: 'xml format is not implemented yet', }); } else { return res.status(200).json(data); } }) .catch((error) => { return res.status(404).json({ success: false, message: error, }); }); } }; module.exports = getOEmbedData;