Skip to content

Commit 169981a

Browse files
authored
Merge pull request #45 from ndaidong/v6.x.x
v6.0.0rc3
2 parents fb75425 + ba5bdee commit 169981a

39 files changed

+2447
-1363
lines changed

README.md

Lines changed: 15 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# feed-reader
22

3-
Load and parse RSS/ATOM data from given feed url.
3+
Load and parse ATOM/RSS/JSON data from given feed url.
44

55
[![NPM](https://badge.fury.io/js/feed-reader.svg)](https://badge.fury.io/js/feed-reader)
66
![CI test](https://github.com/ndaidong/feed-reader/workflows/ci-test/badge.svg)
@@ -33,13 +33,11 @@ read(url).then((feed) => {
3333
## APIs
3434

3535
- [.read(String url)](#readstring-url)
36-
- [The events](#the-events)
37-
- [.resetEvents()](#reset-event-listeners)
3836
- [Configuration methods](#configuration-methods)
3937

4038
### read(String url)
4139

42-
Load and extract feed data from given RSS/ATOM source. Return a Promise object.
40+
Load and extract feed data from given RSS/ATOM/JSON source. Return a Promise object.
4341

4442
Example:
4543

@@ -62,6 +60,7 @@ const getFeedData = async (url) => {
6260

6361
getFeedData('https://news.google.com/rss')
6462
getFeedData('https://news.google.com/atom')
63+
getFeedData('https://adactio.com/journal/feed.json')
6564
```
6665

6766
Feed data object retuned by `read()` method should look like below:
@@ -86,96 +85,6 @@ Feed data object retuned by `read()` method should look like below:
8685
}
8786
```
8887

89-
### The events
90-
91-
Since v6.0.0, `feed-reader` supports event-driven pattern for easier writing code with more control.
92-
93-
- `onSuccess(Function callback)`
94-
- `onError(Function callback)`
95-
- `onComplete(Function callback)`
96-
97-
The following example will explain better than any word:
98-
99-
```js
100-
import { read, onSuccess, onError, onComplete } from 'feed-reader'
101-
102-
onSuccess((url, feed) => {
103-
console.log(`Feed data from ${url} has been parsed successfully`)
104-
console.log('`feed` is always an object that contains feed data')
105-
console.log(feed)
106-
})
107-
108-
onError((url, err) => {
109-
console.log(`Error occurred while processing ${url}`)
110-
console.log('There is a message and reason:')
111-
console.log(err)
112-
})
113-
114-
onComplete((url, result, error) => {
115-
console.log(`Finish processing ${url}`)
116-
console.log('`result` may be feed data or null')
117-
console.log(result)
118-
console.log('`error` may be an error object or null')
119-
if (error) {
120-
console.log(error.message)
121-
console.log(error.reason)
122-
}
123-
})
124-
125-
read('https://news.google.com/rss')
126-
read('https://google.com')
127-
```
128-
129-
We can mix both style together, for example to handle the error:
130-
131-
```js
132-
import { read, onError } from 'feed-reader'
133-
134-
onError((url, err) => {
135-
console.log(`Error occurred while processing ${url}`)
136-
console.log('There is a message and reason:')
137-
console.log(err)
138-
})
139-
140-
const getFeedData = async (url) => {
141-
const result = await read(url)
142-
// `result` may be feed data or null
143-
return result
144-
}
145-
146-
getFeedData('https://news.google.com/rss')
147-
````
148-
149-
In almost cases, using just `onComplete` is enough:
150-
151-
```js
152-
import { read, onComplete } from 'feed-reader'
153-
154-
onComplete((url, result, error) => {
155-
console.log(`Finish processing ${url}`)
156-
if (result) {
157-
// save feed data
158-
console.log(result)
159-
}
160-
if (error) {
161-
// handle error info
162-
console.log(error)
163-
}
164-
})
165-
166-
read('https://news.google.com/rss')
167-
````
168-
169-
#### Reset event listeners
170-
171-
Use method `resetEvents()` when you want to clear registered listeners from all events.
172-
173-
```js
174-
import { resetEvents } from 'feed-reader'
175-
176-
resetEvents()
177-
````
178-
17988
### Configuration methods
18089

18190
#### `setRequestOptions(Object requestOptions)`
@@ -188,6 +97,18 @@ Return current request options.
18897

18998
Default values can be found [here](https://github.com/ndaidong/feed-reader/blob/main/src/config.js#L5).
19099

100+
#### `setReaderOptions(Object readerOptions)`
101+
102+
To change default reader options.
103+
104+
- `descriptionMaxLen`: Number, max num of chars for description (default: `210`)
105+
- `includeFullContent`: Boolean, add `content` to entry if available (default: `false`)
106+
- `convertPubDateToISO`: Boolean, reformat published date to [ISO standard](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) (default: `true`)
107+
108+
#### `getReaderOptions()`
109+
110+
Return current reader options.
111+
191112

192113
## Test
193114

build.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ const cjsFile = `./dist/cjs/${pkg.name}.js`
1313
const cjsPkg = JSON.parse(readFileSync('./dist/cjs/package.json'))
1414

1515
describe('Validate commonjs version output', () => {
16-
test(`Check if ${cjsFile} created`, () => {
16+
test(`check if ${cjsFile} created`, () => {
1717
expect(existsSync(cjsFile)).toBeTruthy()
1818
})
19-
test('Check if cjs package info updated', () => {
19+
test('check if cjs package info updated', () => {
2020
expect(cjsPkg.name).toEqual(`${pkg.name}-cjs`)
2121
expect(cjsPkg.version).toEqual(pkg.version)
2222
})
2323
const constent = readFileSync(cjsFile, 'utf8')
2424
const lines = constent.split('\n')
25-
test('Check if file meta contains package info', () => {
25+
test('check if file meta contains package info', () => {
2626
expect(lines[0].includes(`${pkg.name}@${pkg.version}`)).toBeTruthy()
2727
expect(lines[0].includes(pkg.author)).toBeTruthy()
2828
expect(lines[0].includes(pkg.license)).toBeTruthy()

0 commit comments

Comments
 (0)