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.
41 lines (40 loc) • 1.78 kB
JavaScript
import { isObject, parseSingularOf, parseString, retrieveText, trimObject } from "../../../common/utils.js";
//#region src/namespaces/acast/parse/utils.ts
const parseSignature = (value) => {
if (!isObject(value)) return;
return trimObject({
key: parseString(value["@key"]),
algorithm: parseString(value["@algorithm"]),
value: parseString(retrieveText(value))
});
};
const parseNetwork = (value) => {
if (!isObject(value)) return;
return trimObject({
id: parseString(value["@id"]),
slug: parseString(value["@slug"]),
value: parseString(retrieveText(value))
});
};
const retrieveFeed = (value) => {
if (!isObject(value)) return;
return trimObject({
showId: parseSingularOf(value["acast:showid"], (value) => parseString(retrieveText(value))),
showUrl: parseSingularOf(value["acast:showurl"], (value) => parseString(retrieveText(value))),
signature: parseSingularOf(value["acast:signature"], parseSignature),
settings: parseSingularOf(value["acast:settings"], (value) => parseString(retrieveText(value))),
network: parseSingularOf(value["acast:network"], parseNetwork),
importedFeed: parseSingularOf(value["acast:importedfeed"], (value) => parseString(retrieveText(value)))
});
};
const retrieveItem = (value) => {
if (!isObject(value)) return;
return trimObject({
episodeId: parseSingularOf(value["acast:episodeid"], (value) => parseString(retrieveText(value))),
showId: parseSingularOf(value["acast:showid"], (value) => parseString(retrieveText(value))),
episodeUrl: parseSingularOf(value["acast:episodeurl"], (value) => parseString(retrieveText(value))),
settings: parseSingularOf(value["acast:settings"], (value) => parseString(retrieveText(value)))
});
};
//#endregion
export { parseNetwork, parseSignature, retrieveFeed, retrieveItem };