25 lines
712 B
Elixir
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
|