listener-rss
v0.0.3
Published
A lightweight library to create a listener from a rss feed.
Downloads
45
Readme
listener rss
A lightweight library to make simple actions with a RSS feed.
USAGE
Punctual usage
You can parse RSS from a URL with some custom data.
An example :
const ListenerModule = require("ListenerRSS");
const ListenerRss = ListenerModule.ListenerRss;
const listener = new ListenerRss({
address: "fake.rss.service"
});
// make a request to the adr 'fake.rss.service'
const feed = await myListener.fetchRSS();
Recurrent usage
You can parse RSS from a URL each n times.
An example :
const ListenerModule = require("ListenerRSS");
const ListenerRss = ListenerModule.ListenerRss;
const listener = new ListenerRss({
address: "fake.rss.service"
});
listener.on("update", feed => { /* ... */ });
listener.on("error", err => { /* ... */ });
listener.on("newEntries", feedEntries => { /* ... */ });
listener.start();
/*...*/
listener.stop();
Documentation
ListenerRss.Config
An interface to structure listener's data.
Constructor
- address : the service address
- [optional] timeloop : time to wait between 2 request in seconds (default 5 minutes)
- [optional] customfields : to notice field who's custom to the service (default blank) cf annexe CustomFields
- [optional] lastEntriesLinks : to specify an predefined history.
ListenerRSS
Constructor
constructor(ListenerRss.Config)
- ListenerRss.Config : object from the ListenerRss.Config's class.
fetchRSS()
This function allows to make a request to the rss service.
Return
Return a promise object who's resolved like resolve: (value: result_fetch) => void))
where result_fetch
is a json
object who's contain the data. cf Annexe Output
Issues
Reject the promise if the server can't be resolved.
start()
This function will call the update
event to each success update, the
error
event to each fail update, and the newEntries
event for
each update who contains a new item.
Events
Each event take one arg into the callback function.
listener.on("update", feed => { /* ... */ });
listener.on("error", err => { /* ... */ });
listener.on("newEntries", feedEntries => { /* ... */ });
update
It used a callback who receive the received object entirely inside an object.
error
It used a callback who receive an error object.
newEntries
It used a callback who receive only new entries inside an array.
stop()
This function will stop the execution of the callbackFun each time loop.
getProperty()
This function will return a ListenerRss.Config (a.k.a. a JSON object) item corresponding to the internal configuration of the class.
Annexe
CustomFields
This parameter permit to specify some custom fields who's present in the service but not in the RFC.
For example the YouTube RSS api give some data into the <media:group>
field. So you can give this info with this :
[["media:group", "media:group"]];
You can also rename the field with the left part :
[["my_custom_media_group_name", "media:group"]];
In adition you can rename child element into custom field like this :
[
["media:group", "media:group"],
["description", ["media:group", "media:description"]],
["icon", ["media:group", "media:thumbnail"]],
];
In this case it's useless to specify the parent field, so you can just omit the first line :
[
["description", ["media:group", "media:description"]],
["icon", ["media:group", "media:thumbnail"]],
];
Output
Here an example of what type of json object is output during a fetch :
{
"feedUrl": "fake.rrs.service",
"title": "myFakeApiTitle",
"description": "My Fake api desc",
"link": "fake.rrs.service",
"items": [
{
"title": "My last item",
"link": "fake.rrs.service/item1",
"pubDate": "Thu, 12 Nov 2015 21:16:39 +0000",
"creator": "someone",
"content": "<a href=\"http://example.com\">this is a link</a> & <b>this is bold text</b>",
"contentSnippet": "this is a link & this is bold text",
"guid": "fake.rrs.service/item1",
"categories": ["test", "npm", "fakeInfos"],
"isoDate": "2015-11-12T21:16:39.000Z"
}
/*Some Others items*/
]
}