module Snap.App.RSS where
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time
import Snap.App
import Snap.App.XML
import System.Locale
import Text.Feed.Export
import Text.Feed.Types
import Text.RSS.Syntax
import Text.XML.Light
import Text.XML.Light
outputRSS :: String -> String -> [(UTCTime,Text,Text,Text)] -> Controller c s ()
outputRSS title link = outputXML . makeFeed title link
makeFeed :: String -> String -> [(UTCTime,Text,Text,Text)] -> Element
makeFeed title link = xmlFeed . RSSFeed . makeRSS where
makeRSS qs = (nullRSS title link)
{ rssChannel = makeChannel qs }
makeChannel qs = (nullChannel title link)
{ rssItems = map makeItem qs }
makeItem (time,title,desc,link) =
(nullItem (T.unpack title))
{ rssItemPubDate = return (toPubDate time)
, rssItemDescription = return (T.unpack desc)
, rssItemLink = return (T.unpack link)
}
toPubDate = formatTime defaultTimeLocale "%a, %d %b %Y %H:%M:%S UT"