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.
47 lines (46 loc) • 1.79 kB
JavaScript
import { isObject, parseBoolean, parseNumber, parseSingularOf, parseString, retrieveText, trimObject } from "../../../common/utils.js";
//#region src/namespaces/spotify/parse/utils.ts
const parseLimit = (value) => {
if (!isObject(value)) return;
return trimObject({ recentCount: parseNumber(value["@recentcount"]) });
};
const parsePartner = (value) => {
if (!isObject(value)) return;
const id = parseString(value["@id"]);
return id ? { id } : void 0;
};
const parseSandbox = (value) => {
if (!isObject(value)) return;
const enabled = parseBoolean(value["@enabled"]);
return enabled !== void 0 ? { enabled } : void 0;
};
const parseFeedAccess = (value) => {
if (!isObject(value)) return;
return trimObject({
partner: parseSingularOf(value.partner, parsePartner),
sandbox: parseSingularOf(value.sandbox, parseSandbox)
});
};
const parseEntitlement = (value) => {
if (!isObject(value)) return;
const name = parseString(value["@name"]);
return name ? { name } : void 0;
};
const parseItemAccess = (value) => {
if (!isObject(value)) return;
return trimObject({ entitlement: parseSingularOf(value.entitlement, parseEntitlement) });
};
const retrieveFeed = (value) => {
if (!isObject(value)) return;
return trimObject({
limit: parseSingularOf(value["spotify:limit"], parseLimit),
countryOfOrigin: parseSingularOf(value["spotify:countryoforigin"], (value) => parseString(retrieveText(value))),
access: parseSingularOf(value["spotify:access"], parseFeedAccess)
});
};
const retrieveItem = (value) => {
if (!isObject(value)) return;
return trimObject({ access: parseSingularOf(value["spotify:access"], parseItemAccess) });
};
//#endregion
export { parseEntitlement, parseFeedAccess, parseItemAccess, parseLimit, parsePartner, parseSandbox, retrieveFeed, retrieveItem };