const { assetDefaults: { thumbnail }, details: { host }, } = require('@config/siteConfig'); const padSizes = { small : 'padSmall', medium: 'padMedium', large : 'padLarge', }; const argumentProcessors = { 'bottom': async (config) => { config.classNames.push('bottom'); }, 'right': async (config) => { config.classNames.push('right'); }, 'pad': async (config, val) => { config.classNames.push(padSizes[val]); }, 'logoClaim': async (config, val) => { config.logoUrl = `${host}/${val}`; }, 'link': async (config, val) => { config.logoLink = val; }, }; const parseLogoConfigParam = async (rawConfig) => { if (rawConfig) { let parsedConfig = { classNames: ['logoLink'], logoUrl : thumbnail, }; let splitConfig; try { splitConfig = rawConfig.split(','); } catch (e) { } if (!splitConfig) { return false; } for (let i = 0; i < splitConfig.length; i++) { let currentArgument = splitConfig[i]; if (argumentProcessors[currentArgument]) { await argumentProcessors[currentArgument](parsedConfig); } else { const splitArgument = currentArgument.split(':'); if (argumentProcessors[splitArgument[0]]) { await argumentProcessors[splitArgument[0]](parsedConfig, splitArgument[1]); } } } parsedConfig.classNames = parsedConfig.classNames.join(' '); return parsedConfig; } return false; }; const sendVideoEmbedPage = async ({ params }, res) => { let { claimId, config, name, } = params; // if channel then swap name and claimId for order if (name[0] === '@' && name.includes(':')) { const temp = name; name = claimId; claimId = temp; } const logoConfig = await parseLogoConfigParam(config); // test setting response headers console.log('removing x-frame-options'); res.removeHeader('X-Frame-Options'); // get and render the content res.status(200).render('embed', { host, claimId, name, logoConfig }); }; module.exports = sendVideoEmbedPage;