forked from jameslawler/react-native-rss-parser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
38 lines (29 loc) · 937 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var DOMParser = require('xmldom').DOMParser;
var rssV2Parser = require('./parsers/rssv2');
var atomV1Parser = require('./parsers/atomv1');
exports.parse = function(feed) {
return new Promise((resolve, reject) => {
var document = new DOMParser({
errorHandler: function(level, msg) {
reject(msg);
}
}).parseFromString(feed, 'text/xml');
let parser = getParser(document);
if (!parser) {
reject('Unable to find any RSS element in feed');
}
let parsedFeed = parser.parse(document);
resolve(parsedFeed);
});
};
function getParser(document) {
let isRssSpecification = document.getElementsByTagName('channel')[0] !== undefined;
let isAtomSpecification = document.getElementsByTagName('feed')[0] !== undefined;
if (isRssSpecification) {
return rssV2Parser;
}
if (isAtomSpecification) {
return atomV1Parser;
}
return;
}