From d8a552cf5a683fbb92610612a0c7e783d30cf525 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Fri, 19 Nov 2021 10:26:33 -0500 Subject: [PATCH] use rss-parser for /api/hits --- api/hits.js | 8 ++++---- package.json | 2 +- yarn.lock | 30 ++++++++++++++++++++++++++++-- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/api/hits.js b/api/hits.js index ed206f83..f861f1dd 100644 --- a/api/hits.js +++ b/api/hits.js @@ -1,6 +1,5 @@ import * as Sentry from "@sentry/node"; -import fetch from "node-fetch"; -import parser from "fast-xml-parser"; +import Parser from "rss-parser"; import { decode } from "html-entities"; import pRetry from "p-retry"; import faunadb from "faunadb"; @@ -91,8 +90,9 @@ const incrementPageHits = async (slug, client) => { const getSiteStats = async (client) => { // get database and RSS results asynchronously + const parser = new Parser(); const [feed, result] = await Promise.all([ - parser.parse(await (await fetch(BASE_URL + "feed.xml")).text()), // this is messy but it works :) + parser.parseURL(BASE_URL + "feed.xml"), client.query( q.Map( q.Paginate(q.Documents(q.Collection("hits")), { size: 99 }), @@ -109,7 +109,7 @@ const getSiteStats = async (client) => { pages.map((p) => { // match URLs from RSS feed with db to populate some metadata - const match = feed.rss.channel.item.find((x) => x.link === BASE_URL + p.slug + "/"); + const match = feed.items.find((x) => x.link === BASE_URL + p.slug + "/"); if (match) { p.title = decode(match.title); p.url = match.link; diff --git a/package.json b/package.json index 64479463..9192b903 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "cross-fetch": "^3.1.4", "dark-mode-switcheroo": "^0.10.0", "dayjs": "^1.10.7", - "fast-xml-parser": "^3.21.1", "faunadb": "^4.4.1", "get-canonical-url": "^1.1.0", "get-stream": "^6.0.1", @@ -46,6 +45,7 @@ "node-fetch": "^3.1.0", "p-retry": "^5.0.0", "query-string": "^7.0.1", + "rss-parser": "^3.12.0", "simple-anchor": "^1.0.3", "trim-newlines": "^4.0.2", "twemoji": "^13.1.0", diff --git a/yarn.lock b/yarn.lock index f5cc3446..e868682d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3416,7 +3416,7 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" -entities@^2.0.0: +entities@^2.0.0, entities@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== @@ -3984,7 +3984,7 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-xml-parser@^3.19.0, fast-xml-parser@^3.21.1: +fast-xml-parser@^3.19.0: version "3.21.1" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz#152a1d51d445380f7046b304672dd55d15c9e736" integrity sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg== @@ -8382,6 +8382,14 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rss-parser@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.12.0.tgz#b8888699ea46304a74363fbd8144671b2997984c" + integrity sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A== + dependencies: + entities "^2.0.3" + xml2js "^0.4.19" + run-con@~1.2.10: version "1.2.10" resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.10.tgz#90de9d43d20274d00478f4c000495bd72f417d22" @@ -8443,6 +8451,11 @@ sass@^1.43.4: dependencies: chokidar ">=3.0.0 <4.0.0" +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" @@ -10215,6 +10228,19 @@ ws@^8.1.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +xml2js@^0.4.19: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"