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
JavaScript
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;