fix(core): update

This commit is contained in:
Philipp Kunz 2020-10-25 20:07:35 +00:00
parent b3c4481340
commit c1958bc7fd
2 changed files with 59 additions and 5 deletions

View File

@ -8,4 +8,25 @@ tap.test('should create a feedVersion', async () => {
expect(testSmartFeed).to.be.instanceOf(smartfeed.Smartfeed); expect(testSmartFeed).to.be.instanceOf(smartfeed.Smartfeed);
}); });
tap.test('should create a feed', async () => {
const feed = testSmartFeed.createFeed({
domain: 'central.eu',
title: 'central.eu - ideas for Europe',
category: 'Politics',
company: 'Lossless GmbH',
companyDomain: 'https://lossless.com',
companyEmail: 'hello@lossless.com',
description: 'ideas for Europe',
});
feed.addItem({
title: 'A better European Union',
authorName: 'Phil',
imageUrl: 'https://central.eu/someimage.png',
timestamp: Date.now(),
url: 'https://central.eu/article/somearticle'
});
const rssFeed = feed.exportRssFeedString();
console.log(rssFeed);
});
tap.start(); tap.start();

View File

@ -4,25 +4,32 @@ export interface IFeedOptions {
domain: string; domain: string;
title: string; title: string;
description: string; description: string;
category: string;
company: string; company: string;
companyEmail: string; companyEmail: string;
companyDomain: string; companyDomain: string;
} }
export interface IFeedItem {} export interface IFeedItem {
title: string;
timestamp: number;
url: string;
authorName: string;
imageUrl: string;
}
export class Feed { export class Feed {
options: IFeedOptions; options: IFeedOptions;
items: IFeedOptions[]; items: IFeedItem[] = [];
constructor(optionsArg: IFeedOptions) { constructor(optionsArg: IFeedOptions) {
this.options = optionsArg; this.options = optionsArg;
} }
public addItem() { public addItem(itemArg: IFeedItem) {
this.items.push(itemArg);
} }
public exportRssFeed() { private getFeedObject() {
const feed = new plugins.feed.Feed({ const feed = new plugins.feed.Feed({
copyright: `All rights reserved, ${this.options.company}`, copyright: `All rights reserved, ${this.options.company}`,
id: this.options.domain, id: this.options.domain,
@ -36,5 +43,31 @@ export class Feed {
generator: '@pushrocks/smartfeed', generator: '@pushrocks/smartfeed',
language: "en" language: "en"
}); });
feed.addCategory(this.options.category);
for (const itemArg of this.items) {
feed.addItem({
title: itemArg.title,
date: new Date(itemArg.timestamp),
link: itemArg.url,
image: itemArg.imageUrl,
author: [{
name: itemArg.authorName
}]
});
}
return feed;
}
public exportRssFeedString(): string {
return this.getFeedObject().rss2();
}
public exportAtomFeed(): string {
return this.getFeedObject().atom1();
}
public exportJsonFeed(): string {
return this.getFeedObject().json1();
} }
} }