Document feed entry enclosures

This commit is contained in:
Bryan Richter 2016-02-01 20:18:58 -08:00
parent 7ea1e004c9
commit 4d48ba71be
No known key found for this signature in database
GPG Key ID: B202264020068BFB
3 changed files with 18 additions and 5 deletions

View File

@ -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

View File

@ -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 \<enclosure> or Atom \<link
-- rel=enclosure>
}

View File

@ -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