frenzy/lib/frenzy/opml/exporter.ex

33 lines
780 B
Elixir

defmodule Frenzy.OPML.Exporter do
import XmlBuilder
@spec export([Frenzy.Group.t()]) :: String.t()
def export(groups) do
element(:opml, %{version: "1.0"}, [
element(:head, %{}, [
element(:title, "Frenzy export")
]),
element(
:body,
%{},
Enum.map(groups, fn group ->
element(
:outline,
%{text: group.title, title: group.title},
Enum.map(group.feeds, fn feed ->
element(:outline, %{
type: "rss",
text: feed.title,
title: feed.title,
xmlUrl: feed.feed_url,
htmlUrl: feed.site_url
})
end)
)
end)
)
])
|> generate()
end
end