diff --git a/lib/feeds.js b/lib/feeds.js index ba28d08..e541931 100644 --- a/lib/feeds.js +++ b/lib/feeds.js @@ -128,12 +128,13 @@ async function parseXmlFeed(parser, feed) { const response = await fetch(feed.url, { headers, signal: controller.signal }); if (response.status === 304) return []; - if (response.status === 402 || response.status === 429) { - const err = new Error(`Feed ${feed.url} returned HTTP ${response.status}`); + if (response.status === 402) { + const err = new Error(`Feed ${feed.url} returned HTTP 402`); err.feedGone = true; - err.status = response.status; + err.status = 402; throw err; } + if (response.status === 429) return []; if (!response.ok) throw new Error(`HTTP Error ${response.status}: ${response.statusText}`); const text = await response.text(); @@ -183,12 +184,13 @@ async function parseJsonFeed(feed) { const response = await fetch(feed.url, { headers, signal: controller.signal }); if (response.status === 304) return []; - if (response.status === 402 || response.status === 429) { - const err = new Error(`Feed ${feed.url} returned HTTP ${response.status}`); + if (response.status === 402) { + const err = new Error(`Feed ${feed.url} returned HTTP 402`); err.feedGone = true; - err.status = response.status; + err.status = 402; throw err; } + if (response.status === 429) return []; if (!response.ok) throw new Error(`HTTP Error ${response.status}`); const feedData = await response.json(); @@ -270,7 +272,7 @@ async function _processFeedItems(ctx, feed, shouldPost) { } async function _removeFeedAndNotify(ctx, feed, status) { - const reason = status === 402 ? "now requires payment" : "is rate-limited"; + const reason = "now requires payment"; console.log(`Feed ${feed.url} ${reason} — removing`); await ctx.db.execute("DELETE FROM feeds WHERE url = ? AND channel_id = ?", [feed.url, feed.channel_id]);