yesod/yesod-newsfeed/Yesod/FeedTypes.hs
2016-02-02 08:59:01 -08:00

55 lines
1.4 KiB
Haskell

module Yesod.FeedTypes
( Feed (..)
, FeedEntry (..)
, EntryEnclosure (..)
) where
import Text.Hamlet (Html)
import Data.Time.Clock (UTCTime)
import Data.Text (Text)
-- | The overall feed
data Feed url = Feed
{ feedTitle :: Text
, feedLinkSelf :: url
, feedLinkHome :: url
, feedAuthor :: Text
-- | note: currently only used for Rss
, feedDescription :: Html
-- | note: currently only used for Rss, possible values:
-- <http://www.rssboard.org/rss-language-codes>
, feedLanguage :: Text
, feedUpdated :: UTCTime
, feedLogo :: Maybe (url, Text)
, feedEntries :: [FeedEntry url]
}
-- | RSS and Atom allow for linked content to be enclosed in a feed entry.
-- This represents the enclosed content.
--
-- Atom feeds ignore 'enclosedSize' and 'enclosedMimeType'.
--
-- @since 1.6
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 (EntryEnclosure url)
-- ^ Allows enclosed data: RSS \<enclosure> or Atom \<link
-- rel=enclosure>
--
-- @since 1.5
}