fix(core): update
This commit is contained in:
parent
b3c4481340
commit
c1958bc7fd
21
test/test.ts
21
test/test.ts
@ -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();
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user