feed-0.3.12.0: tests/Example/CreateAtom.hs
module Example.CreateAtom (createAtom) where
import qualified Text.Atom.Feed as Atom
import qualified Text.Atom.Feed.Export as Export
import qualified Text.XML.Light.Output as XML
createAtom :: String
createAtom = feed examplePosts
examplePosts :: [(String, String, String)] -- Date, URL, Content
examplePosts =
[ ("2000-02-02T18:30:00Z", "http://example.com/2", "Bar.")
, ("2000-01-01T18:30:00Z", "http://example.com/1", "Foo.")
]
feed :: [(String, String, String)] -> String
feed posts =
XML.ppElement . Export.xmlFeed $ fd
{ Atom.feedEntries = fmap toEntry posts
, Atom.feedLinks = [Atom.nullLink "http://example.com/"]
}
where
fd :: Atom.Feed
fd = Atom.nullFeed
"http://example.com/atom.xml" -- ID
(Atom.TextString "Example Website") -- Title
(case posts of -- Updated
(latestPostDate,_,_):_ -> latestPostDate
_ -> "")
toEntry :: (String, String, String) -> Atom.Entry
toEntry (date, url, content) =
(Atom.nullEntry
url -- The ID field. Must be a link to validate.
(Atom.TextString (take 20 content)) -- Title
date)
{ Atom.entryAuthors = [Atom.nullPerson {Atom.personName = "J. Smith"}]
, Atom.entryLinks = [Atom.nullLink url]
, Atom.entryContent = Just (Atom.HTMLContent content)
}