From 84375b7c3602a7ca1425e4c969b3ea44bcd73187 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 19 Jan 2024 16:25:05 +0800 Subject: [PATCH] Add validation before refreshing feed URLs --- packages/api/src/jobs/rss/refreshAllFeeds.ts | 9 ++++++++- packages/api/src/utils/helpers.ts | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/api/src/jobs/rss/refreshAllFeeds.ts b/packages/api/src/jobs/rss/refreshAllFeeds.ts index 057bfc183..f9eb6ca04 100644 --- a/packages/api/src/jobs/rss/refreshAllFeeds.ts +++ b/packages/api/src/jobs/rss/refreshAllFeeds.ts @@ -4,6 +4,7 @@ import { QUEUE_NAME } from '../../queue-processor' import { redisDataSource } from '../../redis_data_source' import { RssSubscriptionGroup } from '../../utils/createTask' import { stringToHash } from '../../utils/helpers' +import { validateUrl } from '../../services/create_page_save_request' export const refreshAllFeeds = async (db: DataSource): Promise => { const subscriptionGroups = (await db.createEntityManager().query( @@ -42,7 +43,7 @@ export const refreshAllFeeds = async (db: DataSource): Promise => { } const updateSubscriptionGroup = async (group: RssSubscriptionGroup) => { - const feedURL = group.url + var feedURL = group.url const userList = JSON.stringify(group.userIds.sort()) if (!feedURL) { console.error('no url for feed group', group) @@ -52,6 +53,12 @@ const updateSubscriptionGroup = async (group: RssSubscriptionGroup) => { console.error('no userlist for feed group', group) return } + + try { + feedURL = validateUrl(feedURL).toString() + } catch (err) { + console.log('not refreshing invalid feed url: ' { feedURL }) + } const jobid = `refresh-feed_${stringToHash(feedURL)}_${stringToHash( userList )}` diff --git a/packages/api/src/utils/helpers.ts b/packages/api/src/utils/helpers.ts index 0763f4a74..72388667c 100644 --- a/packages/api/src/utils/helpers.ts +++ b/packages/api/src/utils/helpers.ts @@ -26,7 +26,6 @@ import { SearchItem, } from '../generated/graphql' import { createPubSubClient } from '../pubsub' -import { redisDataSource } from '../redis_data_source' import { Claims, WithDataSourcesContext } from '../resolvers/types' import { validateUrl } from '../services/create_page_save_request' import { updateLibraryItem } from '../services/library_item'