Packages

Feed parser built in pure Elixir, Supports RSS(Feedburner/Itunes) and Atom(Feedburner/Youtube/Google Docs)

Current section

Files

Jump to
feedraptor lib feedraptor.ex
Raw

lib/feedraptor.ex

defmodule Feedraptor do
@parsers [
Feedraptor.Parser.RSSFeedBurner,
Feedraptor.Parser.GoogleDocsAtom,
Feedraptor.Parser.AtomYoutube,
Feedraptor.Parser.AtomFeedBurner,
Feedraptor.Parser.Atom,
Feedraptor.Parser.ItunesRSS,
Feedraptor.Parser.RSS
]
@doc """
Parses an xml feed. If theres no parser available
for this feed it will raise an error
## Avalilable Parsers:
* RSS
* RSS Feedburner
* Atom
* Atom FeedBurner
* Atom Youtube
* Google Docs Atom
* Itunes RSS
"""
def parse(xml) do
parser = parser_for_xml(xml)
if is_nil(parser) do
raise "No valid parser for XML."
end
parser.parse(xml)
end
defp parser_for_xml(xml) do
sliced_xml = String.slice(xml, 0, 2000)
Enum.find @parsers, fn(possible_parser) ->
possible_parser.will_parse?(sliced_xml)
end
end
end