diff --git a/exec/load/rss-atom.js b/exec/load/rss-atom.js index 8f018043f15d345e284d599e6ed12b5a10bb155c..5353618800e3a04b0c1337b334851fb23033bf18 100644 --- a/exec/load/rss-atom.js +++ b/exec/load/rss-atom.js @@ -160,15 +160,24 @@ const Feed = function (url, follow_redirects) { this.channels = []; this.load = function () { - var httpRequest = new HTTPRequest(); - httpRequest.follow_redirects = follow_redirects || 0; - var response = httpRequest.Get(url); - if (typeof response == "undefined" || response == "") { - throw new Error('Empty response from server.'); + var doc; + if (url.search('file://') == 0) { + var f = new File(url.substring(7)); + if (!f.open('f')) throw new Error(f.error); + doc = f.read(); + f.close(); + f = undefined; + } else { + var httpRequest = new HTTPRequest(); + httpRequest.follow_redirects = follow_redirects || 0; + doc = httpRequest.Get(url); + if (typeof doc == "undefined" || doc == "") { + throw new Error('Empty response from server.'); + } + httpRequest = undefined; } - var feed = new XML(response.replace(/^<\?xml.*\?>/g, "")); - httpRequest = undefined; - response = undefined; + var feed = new XML(doc.replace(/^<\?xml.*\?>/g, "")); + doc = undefined; switch (feed.localName()) { case "rss": var channels = feed.channel.length();