commit ca871fa76f631b5c26ee75eadef28cb1e802227b Author: Florent Date: Sun Feb 7 16:18:16 2021 +0100 Add README diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb80ce0 --- /dev/null +++ b/README.md @@ -0,0 +1,125 @@ +# easy-rss-parser +A lightweight library to give some additions for the [rss-parser package](https://github.com/rbren/rss-parser). +# USAGE +## Punctual usage +You can parse RSS from a URL with some custom data. +An example : +```js +const easyParser = require('easy-rss-parser'); +const ListenerRss = easyParser.ListenerRss; + +let listener = new ListenerRss('my-test-service', 'fake.rss.service'); + +// make a request to the adr 'fake.rss.service' +myListener.fetchRSS().then((obj, err) => { + // some act +}); +``` +## Recurrent usage +You can parse RSS from a URL each n times. +An example : +```js +const easyParser = require('easy-rss-parser'); +const ListenerRss = easyParser.ListenerRss; + +let listener = new ListenerRss('my-test-service', 'fake.rss.service', 5*60); + +let callback_fun = (obj, err) => { + // some act + }; +// call callback_fun each 5 minutes +listener.start(callback_fun); + +/*...*/ + +listener.stop(); +``` +# Documentation +## ListenerRSSInfo +A class to structure listener's data. +### Constructor +`constructor(name, address, timeloop, customfields)` +- name : the service name +- 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](#customfields) +## ListenerRSS +### Constructor +`constructor(listenerRSSInfo)` +- listenerRSSInfo : object from the ListenerRSSInfo's class. + +`constructor(name, address, timeloop, customfields)` +- name : the service name +- 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) +### 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](#output) +#### Issues +Return an error if the server can't be resolved. +### start(callbackFun) +This function will execute the callbackFun each time loop. +#### Parameter +The `callbackFun` is the function who's going to be called each time loop. She need to be under the shape : +```js +(obj, err) => { + /*...*/ +} +``` +### stop() +This function will stop the execution of the callbackFun each time loop. +# 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 `` field. So you can give this info with this : +```js +[ + ['media:group', 'media:group'] +] +``` +You can also rename the field with the left part : +```js +[ + ['my_custom_media_group_name', 'media:group'] +] +``` +In adition you can rename child element into custom field like this : +```js +[ + ['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 : +```js +[ + ['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 : +```json +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: 'this is a link & this is bold text' + 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' +``` \ No newline at end of file