Add feed functions to generate feeds with external links
Rather than requiring a Route, these functions can accept Text URLs and just use id to render them.
This commit is contained in:
parent
4c31714a25
commit
bc8d015110
@ -20,6 +20,7 @@
|
||||
-- | Generation of Atom newsfeeds.
|
||||
module Yesod.AtomFeed
|
||||
( atomFeed
|
||||
, atomFeedText
|
||||
, atomLink
|
||||
, RepAtom (..)
|
||||
, module Yesod.FeedTypes
|
||||
@ -47,6 +48,11 @@ atomFeed feed = do
|
||||
render <- getUrlRender
|
||||
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 {..} render =
|
||||
Document (Prologue [] Nothing []) (addNS root) []
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
-------------------------------------------------------------------------------
|
||||
module Yesod.Feed
|
||||
( newsFeed
|
||||
, newsFeedText
|
||||
, module Yesod.FeedTypes
|
||||
) where
|
||||
|
||||
@ -29,3 +30,10 @@ newsFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m TypedContent
|
||||
newsFeed f = selectRep $ do
|
||||
provideRep $ atomFeed 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
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
-------------------------------------------------------------------------------
|
||||
module Yesod.RssFeed
|
||||
( rssFeed
|
||||
, rssFeedText
|
||||
, rssLink
|
||||
, RepRss (..)
|
||||
, module Yesod.FeedTypes
|
||||
@ -44,6 +45,11 @@ rssFeed feed = do
|
||||
render <- getUrlRender
|
||||
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 {..} render =
|
||||
Document (Prologue [] Nothing []) root []
|
||||
|
||||
Loading…
Reference in New Issue
Block a user