UNPKG

feedsmith

Version:

Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.

92 lines (91 loc) 4.08 kB
const require_utils = require("../../../common/utils.cjs"); //#region src/namespaces/rawvoice/generate/utils.ts const generateRating = (rating) => { if (!require_utils.isObject(rating)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(rating.value), "@tv": require_utils.generatePlainString(rating.tv), "@movie": require_utils.generatePlainString(rating.movie) }); }; const generateLiveStream = (liveStream) => { if (!require_utils.isObject(liveStream)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(liveStream.url), "@schedule": require_utils.generateRfc822Date(liveStream.schedule), "@duration": require_utils.generatePlainString(liveStream.duration), "@type": require_utils.generatePlainString(liveStream.type) }); }; const generatePoster = (poster) => { if (!require_utils.isObject(poster)) return; return require_utils.trimObject({ "@url": require_utils.generatePlainString(poster.url) }); }; const generateAlternateEnclosure = (alternateEnclosure) => { if (!require_utils.isObject(alternateEnclosure)) return; return require_utils.trimObject({ "@src": require_utils.generatePlainString(alternateEnclosure.src), "@type": require_utils.generatePlainString(alternateEnclosure.type), "@length": require_utils.generateNumber(alternateEnclosure.length) }); }; const generateSubscribe = (subscribe) => { if (!require_utils.isObject(subscribe)) return; const value = {}; for (const key in subscribe) value[`@${key}`] = require_utils.generatePlainString(subscribe[key]); return require_utils.trimObject(value); }; const generateMetamark = (metamark) => { if (!require_utils.isObject(metamark)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(metamark.value), "@type": require_utils.generatePlainString(metamark.type), "@link": require_utils.generatePlainString(metamark.link), "@position": require_utils.generateNumber(metamark.position), "@duration": require_utils.generateNumber(metamark.duration) }); }; const generateDonate = (donate) => { if (!require_utils.isObject(donate)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(donate.value), "@href": require_utils.generatePlainString(donate.href) }); }; const generateItem = (item) => { if (!require_utils.isObject(item)) return; return require_utils.trimObject({ "rawvoice:poster": generatePoster(item.poster), "rawvoice:isHd": require_utils.generateYesNoBoolean(item.isHd), "rawvoice:embed": require_utils.generateCdataString(item.embed), "rawvoice:webm": generateAlternateEnclosure(item.webm), "rawvoice:mp4": generateAlternateEnclosure(item.mp4), "rawvoice:metamark": require_utils.trimArray(item.metamarks, generateMetamark) }); }; const generateFeed = (feed) => { if (!require_utils.isObject(feed)) return; return require_utils.trimObject({ "rawvoice:rating": generateRating(feed.rating), "rawvoice:liveEmbed": require_utils.generateCdataString(feed.liveEmbed), "rawvoice:flashLiveStream": generateLiveStream(feed.flashLiveStream), "rawvoice:httpLiveStream": generateLiveStream(feed.httpLiveStream), "rawvoice:shoutcastLiveStream": generateLiveStream(feed.shoutcastLiveStream), "rawvoice:liveStream": generateLiveStream(feed.liveStream), "rawvoice:location": require_utils.generateCdataString(feed.location), "rawvoice:frequency": require_utils.generateCdataString(feed.frequency), "rawvoice:mycast": require_utils.generateYesNoBoolean(feed.mycast), "rawvoice:subscribe": generateSubscribe(feed.subscribe), "rawvoice:donate": generateDonate(feed.donate) }); }; //#endregion exports.generateAlternateEnclosure = generateAlternateEnclosure; exports.generateDonate = generateDonate; exports.generateFeed = generateFeed; exports.generateItem = generateItem; exports.generateLiveStream = generateLiveStream; exports.generateMetamark = generateMetamark; exports.generatePoster = generatePoster; exports.generateRating = generateRating; exports.generateSubscribe = generateSubscribe;