From 8fc5b6769ae6407b1a09627f19ed0f4c968bfd48 Mon Sep 17 00:00:00 2001 From: Ryan Tharp Date: Tue, 28 Jan 2020 17:55:42 -0800 Subject: [PATCH] pull RSS through file proxy --- js/modules/loki_rss_api.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/js/modules/loki_rss_api.js b/js/modules/loki_rss_api.js index dacf1f33f..1dcc9bdd5 100644 --- a/js/modules/loki_rss_api.js +++ b/js/modules/loki_rss_api.js @@ -3,7 +3,6 @@ /* global log, window, textsecure */ const EventEmitter = require('events'); -const nodeFetch = require('node-fetch'); const PER_MIN = 60 * 1000; const PER_HR = 60 * PER_MIN; @@ -54,17 +53,24 @@ class LokiRssAPI extends EventEmitter { } async getFeed() { - let response; - try { - response = await nodeFetch(this.feedUrl); - } catch (e) { - log.error('fetcherror', e); + // deal with file server proxy hardcoding + const map = { + 'https://loki.network/category/messenger-updates/feed/': + 'loki/v1/rss/messenger', + 'https://loki.network/feed/': 'loki/v1/rss/loki', + }; + if (map[this.feedUrl] === undefined) { + log.warn('LokiRssAPI unsupported rss feed', this.feedUrl); return; } + const response = await window.lokiFileServerAPI._server.serverRequest( + map[this.feedUrl] + ); if (!response) { + log.error('LokiRssAPI empty rss proxy response'); return; } - const responseXML = await response.text(); + const responseXML = response.response.data; let feedDOM = {}; try { feedDOM = await new window.DOMParser().parseFromString( @@ -72,18 +78,23 @@ class LokiRssAPI extends EventEmitter { 'text/xml' ); } catch (e) { - log.error('xmlerror', e); + log.error('LokiRssAPI xml parsing error', e, responseXML); return; } const feedObj = xml2json(feedDOM); let receivedAt = new Date().getTime(); if (!feedObj || !feedObj.rss || !feedObj.rss.channel) { - log.error('rsserror', feedObj, feedDOM, responseXML); + log.error( + 'LokiRssAPI rss structure error', + feedObj, + feedDOM, + responseXML + ); return; } if (!feedObj.rss.channel.item) { - // no records + // no records, not an error return; } if (feedObj.rss.channel.item.constructor !== Array) {