Files
feed_reader/test/support/external_format_handler.ex
T
2026-05-18 21:29:10 +00:00

25 lines
712 B
Elixir

defmodule FeedReader.TestSupport.ExternalFormatHandler do
@moduledoc false
@behaviour Saxy.Handler
alias FeedReader.Feed
@impl true
def handle_event(:start_document, _data, %{opts: opts} = state) do
if Keyword.get(opts, :emit_event), do: emit_event(state)
Enum.each(Keyword.get(opts, :collector_events, []), fn event -> state.event_sink.(event) end)
{:ok, state}
end
def handle_event(:end_document, _data, %{opts: opts} = state) do
if Keyword.get(opts, :emit_event), do: emit_event(state)
{:ok, state}
end
def handle_event(_event_type, _data, state), do: {:ok, state}
defp emit_event(state), do: state.event_sink.({:feed, %Feed{title: "External", type: :rss}})
end