-------------------------------------------------------------------- -- | -- Module : Text.Feed.Types -- Copyright : (c) Galois, Inc. 2008, -- (c) Sigbjorn Finne 2009- -- License : BSD3 -- -- Maintainer: Sigbjorn Finne <sof@forkIO.com> -- Stability : provisional -- Portability: portable -- -------------------------------------------------------------------- module Text.Feed.Types ( Feed(..) , Item(..) , FeedKind(..) ) where import Prelude.Compat import Data.Text import qualified Data.XML.Types as XML import qualified Text.Atom.Feed as Atom import qualified Text.RSS.Syntax as RSS import qualified Text.RSS1.Syntax as RSS1 -- | The abstract type of feed documents. The internal representation -- is as whatever feed variant type the document was either imported or -- has now been translated to. data Feed = AtomFeed Atom.Feed | RSSFeed RSS.RSS | RSS1Feed RSS1.Feed -- if we're unable to correctly the well-formed XML as a feed, -- keep it as an untyped document. | XMLFeed XML.Element deriving (Show) -- | The abstract type of feed items. Like the 'Text.Feed.Types.Feed' type, the -- representation of a value is as one of the different RSS item\/entry -- variants. data Item = AtomItem Atom.Entry | RSSItem RSS.RSSItem | RSS1Item RSS1.Item | XMLItem XML.Element deriving (Show) -- | The kinds of feed documents supported. data FeedKind = AtomKind | RSSKind (Maybe Text) -- Nothing => default version (2.0) | RDFKind (Maybe Text) -- Nothing => default version (1.0) deriving (Eq, Show)