From 01d6c689c9229053a3d88e5829588b23cdc28f41 Mon Sep 17 00:00:00 2001 From: Moises Macia Date: Fri, 17 Jul 2026 21:13:41 +0000 Subject: [PATCH] stop rss parsing at rss tag --- lib/feed_reader/formats/rss.ex | 1 + lib/feed_reader/formats/rss/handler.ex | 3 +++ 2 files changed, 4 insertions(+) diff --git a/lib/feed_reader/formats/rss.ex b/lib/feed_reader/formats/rss.ex index 71ff457..9c9a3bf 100644 --- a/lib/feed_reader/formats/rss.ex +++ b/lib/feed_reader/formats/rss.ex @@ -24,6 +24,7 @@ defmodule FeedReader.Formats.RSS do limits: XMLResourceLimits.new(opts), frames: [], channel: nil, + root_closed: false, error: nil } end diff --git a/lib/feed_reader/formats/rss/handler.ex b/lib/feed_reader/formats/rss/handler.ex index 2cbdfb7..7c8b4a9 100644 --- a/lib/feed_reader/formats/rss/handler.ex +++ b/lib/feed_reader/formats/rss/handler.ex @@ -94,6 +94,9 @@ defmodule FeedReader.Formats.RSS.Handler do defp close_element("channel", _channel, state), do: {:ok, state} + defp close_element("rss", _feed, %{frames: []} = state), + do: {:halt, %{state | root_closed: true}} + defp close_element(name, value, %{frames: [parent | rest]} = state) do children = Map.update(parent.children, name, value, &(List.wrap(&1) ++ [value])) {:ok, %{state | frames: [%{parent | children: children} | rest]}}