Merge pull request #764 from yesodweb/pb-external-link-feed

Add feed functions to generate feeds with external links
This commit is contained in:
Michael Snoyman 2014-06-29 19:40:37 +03:00
commit f18c13a06d
3 changed files with 20 additions and 0 deletions

View File

@ -20,6 +20,7 @@
-- | Generation of Atom newsfeeds. -- | Generation of Atom newsfeeds.
module Yesod.AtomFeed module Yesod.AtomFeed
( atomFeed ( atomFeed
, atomFeedText
, atomLink , atomLink
, RepAtom (..) , RepAtom (..)
, module Yesod.FeedTypes , module Yesod.FeedTypes
@ -47,6 +48,11 @@ atomFeed feed = do
render <- getUrlRender render <- getUrlRender
return $ RepAtom $ toContent $ renderLBS def $ template feed render return $ RepAtom $ toContent $ renderLBS def $ template feed render
-- | Same as @'atomFeed'@ but for @'Feed Text'@. Useful for cases where you are
-- generating a feed of external links.
atomFeedText :: MonadHandler m => Feed Text -> m RepAtom
atomFeedText feed = return $ RepAtom $ toContent $ renderLBS def $ template feed id
template :: Feed url -> (url -> Text) -> Document template :: Feed url -> (url -> Text) -> Document
template Feed {..} render = template Feed {..} render =
Document (Prologue [] Nothing []) (addNS root) [] Document (Prologue [] Nothing []) (addNS root) []

View File

@ -17,6 +17,7 @@
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
module Yesod.Feed module Yesod.Feed
( newsFeed ( newsFeed
, newsFeedText
, module Yesod.FeedTypes , module Yesod.FeedTypes
) where ) where
@ -29,3 +30,10 @@ newsFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m TypedContent
newsFeed f = selectRep $ do newsFeed f = selectRep $ do
provideRep $ atomFeed f provideRep $ atomFeed f
provideRep $ rssFeed f provideRep $ rssFeed f
-- | Same as @'newsFeed'@ but for @'Feed Text'@. Useful for cases where you are
-- generating a feed of external links.
newsFeedText :: MonadHandler m => Feed Text -> m TypedContent
newsFeedText f = selectRep $ do
provideRep $ atomFeedText f
provideRep $ rssFeedText f

View File

@ -16,6 +16,7 @@
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
module Yesod.RssFeed module Yesod.RssFeed
( rssFeed ( rssFeed
, rssFeedText
, rssLink , rssLink
, RepRss (..) , RepRss (..)
, module Yesod.FeedTypes , module Yesod.FeedTypes
@ -44,6 +45,11 @@ rssFeed feed = do
render <- getUrlRender render <- getUrlRender
return $ RepRss $ toContent $ renderLBS def $ template feed render return $ RepRss $ toContent $ renderLBS def $ template feed render
-- | Same as @'rssFeed'@ but for @'Feed Text'@. Useful for cases where you are
-- generating a feed of external links.
rssFeedText :: MonadHandler m => Feed Text -> m RepRss
rssFeedText feed = return $ RepRss $ toContent $ renderLBS def $ template feed id
template :: Feed url -> (url -> Text) -> Document template :: Feed url -> (url -> Text) -> Document
template Feed {..} render = template Feed {..} render =
Document (Prologue [] Nothing []) root [] Document (Prologue [] Nothing []) root []