diff --git a/yesod-newsfeed/Yesod/AtomFeed.hs b/yesod-newsfeed/Yesod/AtomFeed.hs index af6a9ae7..49fa2879 100644 --- a/yesod-newsfeed/Yesod/AtomFeed.hs +++ b/yesod-newsfeed/Yesod/AtomFeed.hs @@ -28,7 +28,6 @@ module Yesod.AtomFeed import Yesod.Core import Yesod.FeedTypes -import Text.Hamlet (hamlet) import qualified Data.ByteString.Char8 as S8 import Data.Text (Text) import Data.Text.Lazy (toStrict) @@ -86,7 +85,9 @@ entryTemplate FeedEntry {..} render = Element "entry" Map.empty $ map NodeElemen ++ case feedEntryEnclosure of Nothing -> [] - Just (route, _, _) -> [Element "link" (Map.fromList [("rel", "enclosure"), ("href", render route)]) []] + Just (EntryEnclosure{..}) -> + [Element "link" (Map.fromList [("rel", "enclosure") + ,("href", render enclosedUrl)]) []] -- | Generates a link tag in the head of a widget. atomLink :: MonadWidget m diff --git a/yesod-newsfeed/Yesod/FeedTypes.hs b/yesod-newsfeed/Yesod/FeedTypes.hs index fdc5d84b..c9b1fd1d 100644 --- a/yesod-newsfeed/Yesod/FeedTypes.hs +++ b/yesod-newsfeed/Yesod/FeedTypes.hs @@ -1,6 +1,7 @@ module Yesod.FeedTypes ( Feed (..) , FeedEntry (..) + , EntryEnclosure (..) ) where import Text.Hamlet (Html) @@ -27,11 +28,19 @@ data Feed url = Feed , feedEntries :: [FeedEntry url] } +data EntryEnclosure url = EntryEnclosure + { enclosedUrl :: url + , enclosedSize :: Int -- ^ Specified in bytes + , enclosedMimeType :: Text + } + -- | Each feed entry data FeedEntry url = FeedEntry { feedEntryLink :: url , feedEntryUpdated :: UTCTime , feedEntryTitle :: Text , feedEntryContent :: Html - , feedEntryEnclosure :: Maybe (url, Int, Text) + , feedEntryEnclosure :: Maybe (EntryEnclosure url) + -- ^ Allows enclosed data: RSS \ or Atom \ } diff --git a/yesod-newsfeed/Yesod/RssFeed.hs b/yesod-newsfeed/Yesod/RssFeed.hs index 7963276b..6ad098f1 100644 --- a/yesod-newsfeed/Yesod/RssFeed.hs +++ b/yesod-newsfeed/Yesod/RssFeed.hs @@ -24,7 +24,6 @@ module Yesod.RssFeed import Yesod.Core import Yesod.FeedTypes -import Text.Hamlet (hamlet) import qualified Data.ByteString.Char8 as S8 import Data.Text (Text, pack) import Data.Text.Lazy (toStrict) @@ -87,7 +86,11 @@ entryTemplate FeedEntry {..} render = Element "item" Map.empty $ map NodeElement ++ case feedEntryEnclosure of Nothing -> [] - Just (route, length, mime) -> [Element "enclosure" (Map.fromList [("type", mime), ("length", pack $ show length), ("url", render route)]) []] + Just (EntryEnclosure{..}) -> [ + Element "enclosure" + (Map.fromList [("type", enclosedMimeType) + ,("length", pack $ show enclosedSize) + ,("url", render enclosedUrl)]) []] -- | Generates a link tag in the head of a widget. rssLink :: MonadWidget m