2020-11-01 19:39:42 +00:00
|
|
|
import { Feed, IFeedOptions } from './smartfeed.classes.feed';
|
|
|
|
import * as plugins from './smartfeed.plugins';
|
|
|
|
|
|
|
|
export class Smartfeed {
|
|
|
|
public createFeed(optionsArg: IFeedOptions) {
|
|
|
|
const feedVersion = new Feed(optionsArg);
|
|
|
|
return feedVersion;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* creates a feed from a standardized article object (@tsclass/tsclass).content.IArticle
|
|
|
|
*/
|
|
|
|
public async createFeedFromArticleArray(optionsArg: IFeedOptions, articleArray: plugins.tsclass.content.IArticle[]): Promise<string> {
|
|
|
|
const feed = this.createFeed(optionsArg);
|
|
|
|
for (const article of articleArray) {
|
|
|
|
feed.addItem({
|
|
|
|
authorName: `${article.author.firstName} ${article.author.surName}`,
|
|
|
|
timestamp: article.timestamp,
|
|
|
|
imageUrl: article.featuredImageUrl,
|
|
|
|
title: article.title,
|
2020-11-11 10:37:36 +00:00
|
|
|
url: article.url,
|
|
|
|
content: article.content
|
2020-11-01 19:39:42 +00:00
|
|
|
});
|
|
|
|
}
|
2020-11-28 14:38:04 +00:00
|
|
|
const feedXmlString = feed.exportAtomFeed();
|
2020-11-01 19:39:42 +00:00
|
|
|
return feedXmlString;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* allows the parsing of a rss feed string
|
|
|
|
* @param rssFeedString
|
|
|
|
*/
|
|
|
|
public async parseFeedFromString(rssFeedString: string) {
|
|
|
|
const parser = new plugins.rssParser();
|
|
|
|
const resultingFeed = await parser.parseString(rssFeedString);
|
|
|
|
return resultingFeed;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* allows the parsing of a feed from urls
|
|
|
|
* @param urlArg
|
|
|
|
*/
|
|
|
|
public async parseFeedFromUrl(urlArg: string) {
|
|
|
|
const parser = new plugins.rssParser();
|
|
|
|
const resultingFeed = await parser.parseURL(urlArg);
|
|
|
|
return resultingFeed;
|
|
|
|
}
|
|
|
|
}
|