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.
63 lines (62 loc) • 2.98 kB
JavaScript
const require_utils = require("../../../common/utils.cjs");
//#region src/namespaces/itunes/generate/utils.ts
const generateImage = (image) => {
if (!require_utils.isNonEmptyString(image)) return;
return { "@href": require_utils.generatePlainString(image) };
};
const generateCategory = (category) => {
if (!require_utils.isObject(category)) return;
return require_utils.trimObject({
"@text": require_utils.generatePlainString(category.text),
"itunes:category": require_utils.trimArray(category.categories, generateCategory)
});
};
const generateOwner = (owner) => {
if (!require_utils.isObject(owner)) return;
return require_utils.trimObject({
"itunes:name": require_utils.generateCdataString(owner.name),
"itunes:email": require_utils.generateCdataString(owner.email)
});
};
const generateItem = (item) => {
if (!require_utils.isObject(item)) return;
return require_utils.trimObject({
"itunes:duration": require_utils.generateNumber(item.duration),
"itunes:image": generateImage(item.image),
"itunes:explicit": require_utils.generateYesNoBoolean(item.explicit),
"itunes:author": require_utils.generateCdataString(item.author),
"itunes:title": require_utils.generateCdataString(item.title),
"itunes:episode": require_utils.generateNumber(item.episode),
"itunes:season": require_utils.generateNumber(item.season),
"itunes:episodeType": require_utils.generateCdataString(item.episodeType),
"itunes:block": require_utils.generateYesNoBoolean(item.block),
"itunes:summary": require_utils.generateCdataString(item.summary),
"itunes:subtitle": require_utils.generateCdataString(item.subtitle),
"itunes:keywords": require_utils.generateCsvOf(item.keywords)
});
};
const generateFeed = (feed) => {
if (!require_utils.isObject(feed)) return;
return require_utils.trimObject({
"itunes:image": generateImage(feed.image),
"itunes:category": require_utils.trimArray(feed.categories, generateCategory),
"itunes:explicit": require_utils.generateYesNoBoolean(feed.explicit),
"itunes:author": require_utils.generateCdataString(feed.author),
"itunes:title": require_utils.generateCdataString(feed.title),
"itunes:type": require_utils.generateCdataString(feed.type),
"itunes:new-feed-url": require_utils.generateCdataString(feed.newFeedUrl),
"itunes:block": require_utils.generateYesNoBoolean(feed.block),
"itunes:complete": require_utils.generateYesNoBoolean(feed.complete),
"itunes:applepodcastsverify": require_utils.generateCdataString(feed.applePodcastsVerify),
"itunes:summary": require_utils.generateCdataString(feed.summary),
"itunes:subtitle": require_utils.generateCdataString(feed.subtitle),
"itunes:keywords": require_utils.generateCsvOf(feed.keywords),
"itunes:owner": generateOwner(feed.owner)
});
};
//#endregion
exports.generateCategory = generateCategory;
exports.generateFeed = generateFeed;
exports.generateImage = generateImage;
exports.generateItem = generateItem;
exports.generateOwner = generateOwner;