Merge pull request #764 from yesodweb/pb-external-link-feed
Add feed functions to generate feeds with external links
This commit is contained in:
commit
f18c13a06d
@ -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) []
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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 []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user