Feeds 2/5: fetch feed items in the API with cache and per-feed errors

Offen
#232 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
28/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
csharp
Bereich
api, backend

Rechercherichtung

This is part 2 of 5 and depends on part 1, so start with the data model that part 1 introduces and with the parent issue #230. The work is a fetch-and-cache service behind an API endpoint, with RSS and Atom parsing through System.ServiceModel.Syndication, a 10 s per-feed timeout, and per-feed error results. Done means the unit tests with fake feed XML pass: RSS, Atom, a failing feed, a timeout, and script-tag sanitizing, plus the 30-day, already-a-Post and Added/Skipped filters working.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement in-progress ready-for-agent

Sub-issue of #230, written with an AI assistant. Part 2 of 5, depends on part 1.

Goal

An API endpoint that returns the current feed items for all feeds, one group, or one feed.

Scope

  • Fetch RSS and Atom in parallel (System.ServiceModel.Syndication or equivalent), 10 s timeout per feed.
  • In-memory cache of about 15 minutes per feed; a refresh=true parameter bypasses it.
  • Per-feed result: feed id, items, and an error message when the fetch failed (other feeds still return).
  • Item: Url, Title, FeedId, FeedTitle, Published, one-line Excerpt, LeadImageUrl, sanitized HTML Body.
  • Filters: drop items older than 30 days, items whose URL already exists as a Post, items with an Added/Skipped state.
  • Pending counts per group and per feed (for the left pane).
  • Unit tests with fake feed XML (RSS and Atom, a failing feed, a timeout, sanitizing script tags).

Out of scope

UI, background polling.

Vorherrschende Sprache
C#
Sterne
13
Forks
3
Ø Merge
12 Std. 33 Min.
Gemergte PRs (30 T.)
13

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus fboucher/NoteBookmark

Alle Issues in fboucher/NoteBookmark

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.