From 042fcb5c4eac16f18fc051f55a6c63ca9e97306b Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 14 Feb 2026 12:20:31 +0900 Subject: feat(feed): auto-discover feed URLs from HTML pages When an HTML page is provided instead of a direct feed URL, parse tags to find RSS/Atom feeds. Atom is preferred over RSS when both are present. Co-Authored-By: Claude Opus 4.6 --- backend/api/handler_feeds.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'backend/api') diff --git a/backend/api/handler_feeds.go b/backend/api/handler_feeds.go index f0a8785..4d16e4b 100644 --- a/backend/api/handler_feeds.go +++ b/backend/api/handler_feeds.go @@ -46,14 +46,14 @@ func (h *Handler) FeedsAddFeed(ctx context.Context, request FeedsAddFeedRequestO return nil, fmt.Errorf("authentication required") } - f, err := feed.Fetch(ctx, request.Body.Url) + result, err := feed.Fetch(ctx, request.Body.Url) if err != nil { return FeedsAddFeed400JSONResponse{Message: fmt.Sprintf("failed to parse feed: %v", err)}, nil } dbFeed, err := h.Queries.CreateFeed(ctx, db.CreateFeedParams{ - Url: request.Body.Url, - Title: f.Title, + Url: result.URL, + Title: result.Feed.Title, FetchedAt: time.Now().UTC().Format(time.RFC3339), UserID: userID, }) @@ -61,7 +61,7 @@ func (h *Handler) FeedsAddFeed(ctx context.Context, request FeedsAddFeedRequestO return FeedsAddFeed400JSONResponse{Message: fmt.Sprintf("failed to insert feed: %v", err)}, nil } - if err := feed.Sync(ctx, h.Queries, dbFeed.ID, f); err != nil { + if err := feed.Sync(ctx, h.Queries, dbFeed.ID, result.Feed); err != nil { return FeedsAddFeed400JSONResponse{Message: fmt.Sprintf("failed to sync articles: %v", err)}, nil } -- cgit v1.3-1-g0d28