-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Streaming parser/renderer for the RSS standard.
--   
--   Cf README file.
@package rss-conduit
@version 0.3.1.1


-- | RSS is an XML dialect for Web content syndication.
--   
--   Example:
--   
--   <pre>
--   &lt;?xml version="1.0"?&gt;
--   &lt;rss version="2.0"&gt;
--      &lt;channel&gt;
--         &lt;title&gt;Liftoff News&lt;/title&gt;
--         &lt;link&gt;http://liftoff.msfc.nasa.gov/&lt;/link&gt;
--         &lt;description&gt;Liftoff to Space Exploration.&lt;/description&gt;
--         &lt;language&gt;en-us&lt;/language&gt;
--         &lt;pubDate&gt;Tue, 10 Jun 2003 04:00:00 GMT&lt;/pubDate&gt;
--         &lt;lastBuildDate&gt;Tue, 10 Jun 2003 09:41:01 GMT&lt;/lastBuildDate&gt;
--         &lt;docs&gt;http://blogs.law.harvard.edu/tech/rss&lt;/docs&gt;
--         &lt;generator&gt;Weblog Editor 2.0&lt;/generator&gt;
--         &lt;managingEditor&gt;editor@example.com&lt;/managingEditor&gt;
--         &lt;webMaster&gt;webmaster@example.com&lt;/webMaster&gt;
--         &lt;item&gt;
--            &lt;title&gt;Star City&lt;/title&gt;
--            &lt;link&gt;http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp&lt;/link&gt;
--            &lt;description&gt;How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &amp;lt;a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm"&amp;gt;Star City&amp;lt;/a&amp;gt;.&lt;/description&gt;
--            &lt;pubDate&gt;Tue, 03 Jun 2003 09:39:21 GMT&lt;/pubDate&gt;
--            &lt;guid&gt;http://liftoff.msfc.nasa.gov/2003/06/03.html#item573&lt;/guid&gt;
--         &lt;/item&gt;
--      &lt;/channel&gt;
--   &lt;/rss&gt;
--   </pre>
module Text.RSS.Types
data RssException
InvalidBool :: Text -> RssException
InvalidDay :: Text -> RssException
InvalidHour :: Int -> RssException
InvalidInt :: Text -> RssException
InvalidURI :: URIParseError -> RssException
InvalidVersion :: Text -> RssException
InvalidProtocol :: Text -> RssException
InvalidTime :: Text -> RssException
MissingElement :: Text -> RssException
data RssURI
RssURI :: (URIRef a) -> RssURI
withRssURI :: (forall a. URIRef a -> b) -> RssURI -> b

-- | The <tt>&lt;category&gt;</tt> element.
data RssCategory
RssCategory :: Text -> Text -> RssCategory
[categoryDomain] :: RssCategory -> Text
[categoryName] :: RssCategory -> Text

-- | The <tt>&lt;enclosure&gt;</tt> element.
data RssEnclosure
RssEnclosure :: RssURI -> Int -> Text -> RssEnclosure
[enclosureUrl] :: RssEnclosure -> RssURI
[enclosureLength] :: RssEnclosure -> Int
[enclosureType] :: RssEnclosure -> Text

-- | The <tt>&lt;source&gt;</tt> element.
data RssSource
RssSource :: RssURI -> Text -> RssSource
[sourceUrl] :: RssSource -> RssURI
[sourceName] :: RssSource -> Text

-- | The <tt>&lt;guid&gt;</tt> element.
data RssGuid
GuidText :: Text -> RssGuid
GuidUri :: RssURI -> RssGuid

-- | The <tt>&lt;item&gt;</tt> element.
data RssItem
RssItem :: Text -> Maybe RssURI -> Text -> Text -> [RssCategory] -> Maybe RssURI -> [RssEnclosure] -> Maybe RssGuid -> Maybe UTCTime -> Maybe RssSource -> RssItem
[itemTitle] :: RssItem -> Text
[itemLink] :: RssItem -> Maybe RssURI
[itemDescription] :: RssItem -> Text
[itemAuthor] :: RssItem -> Text
[itemCategories] :: RssItem -> [RssCategory]
[itemComments] :: RssItem -> Maybe RssURI
[itemEnclosure] :: RssItem -> [RssEnclosure]
[itemGuid] :: RssItem -> Maybe RssGuid
[itemPubDate] :: RssItem -> Maybe UTCTime
[itemSource] :: RssItem -> Maybe RssSource

-- | The <tt>&lt;textInput&gt;</tt> element.
data RssTextInput
RssTextInput :: Text -> Text -> Text -> RssURI -> RssTextInput
[textInputTitle] :: RssTextInput -> Text
[textInputDescription] :: RssTextInput -> Text
[textInputName] :: RssTextInput -> Text
[textInputLink] :: RssTextInput -> RssURI
data CloudProtocol
ProtocolXmlRpc :: CloudProtocol
ProtocolSoap :: CloudProtocol
ProtocolHttpPost :: CloudProtocol

-- | The <tt>&lt;cloud&gt;</tt> element.
data RssCloud
RssCloud :: RssURI -> Text -> CloudProtocol -> RssCloud
[cloudUri] :: RssCloud -> RssURI
[cloudRegisterProcedure] :: RssCloud -> Text
[cloudProtocol] :: RssCloud -> CloudProtocol

-- | The <tt>&lt;image&gt;</tt> element.
data RssImage
RssImage :: RssURI -> Text -> RssURI -> Maybe Int -> Maybe Int -> Text -> RssImage
[imageUri] :: RssImage -> RssURI
[imageTitle] :: RssImage -> Text
[imageLink] :: RssImage -> RssURI
[imageWidth] :: RssImage -> Maybe Int
[imageHeight] :: RssImage -> Maybe Int
[imageDescription] :: RssImage -> Text
newtype Hour
Hour :: Int -> Hour

-- | Smart constructor for <a>Hour</a>
asHour :: MonadThrow m => Int -> m Hour
data Day
Monday :: Day
Tuesday :: Day
Wednesday :: Day
Thursday :: Day
Friday :: Day
Saturday :: Day
Sunday :: Day

-- | Basic parser for <a>Day</a>.
asDay :: MonadThrow m => Text -> m Day

-- | The <tt>&lt;rss&gt;</tt> element.
data RssDocument
RssDocument :: Version -> Text -> RssURI -> Text -> [RssItem] -> Text -> Text -> Text -> Text -> Maybe UTCTime -> Maybe UTCTime -> [RssCategory] -> Text -> Maybe RssURI -> Maybe RssCloud -> Maybe Int -> Maybe RssImage -> Text -> Maybe RssTextInput -> Set Hour -> Set Day -> RssDocument
[documentVersion] :: RssDocument -> Version
[channelTitle] :: RssDocument -> Text
[channelLink] :: RssDocument -> RssURI
[channelDescription] :: RssDocument -> Text
[channelItems] :: RssDocument -> [RssItem]
[channelLanguage] :: RssDocument -> Text
[channelCopyright] :: RssDocument -> Text
[channelManagingEditor] :: RssDocument -> Text
[channelWebmaster] :: RssDocument -> Text
[channelPubDate] :: RssDocument -> Maybe UTCTime
[channelLastBuildDate] :: RssDocument -> Maybe UTCTime
[channelCategories] :: RssDocument -> [RssCategory]
[channelGenerator] :: RssDocument -> Text
[channelDocs] :: RssDocument -> Maybe RssURI
[channelCloud] :: RssDocument -> Maybe RssCloud
[channelTtl] :: RssDocument -> Maybe Int
[channelImage] :: RssDocument -> Maybe RssImage
[channelRating] :: RssDocument -> Text
[channelTextInput] :: RssDocument -> Maybe RssTextInput
[channelSkipHours] :: RssDocument -> Set Hour
[channelSkipDays] :: RssDocument -> Set Day
instance GHC.Show.Show Text.RSS.Types.Day
instance GHC.Read.Read Text.RSS.Types.Day
instance GHC.Classes.Ord Text.RSS.Types.Day
instance GHC.Generics.Generic Text.RSS.Types.Day
instance GHC.Classes.Eq Text.RSS.Types.Day
instance GHC.Enum.Enum Text.RSS.Types.Day
instance GHC.Show.Show Text.RSS.Types.Hour
instance GHC.Classes.Ord Text.RSS.Types.Hour
instance GHC.Generics.Generic Text.RSS.Types.Hour
instance GHC.Classes.Eq Text.RSS.Types.Hour
instance GHC.Show.Show Text.RSS.Types.CloudProtocol
instance GHC.Classes.Ord Text.RSS.Types.CloudProtocol
instance GHC.Generics.Generic Text.RSS.Types.CloudProtocol
instance GHC.Classes.Eq Text.RSS.Types.CloudProtocol
instance GHC.Show.Show Text.RSS.Types.RssGuid
instance GHC.Classes.Ord Text.RSS.Types.RssGuid
instance GHC.Generics.Generic Text.RSS.Types.RssGuid
instance GHC.Classes.Eq Text.RSS.Types.RssGuid
instance GHC.Classes.Eq Text.RSS.Types.RssException
instance GHC.Show.Show Text.RSS.Types.RssException
instance GHC.Classes.Eq Text.RSS.Types.RssCategory
instance GHC.Generics.Generic Text.RSS.Types.RssCategory
instance GHC.Classes.Ord Text.RSS.Types.RssCategory
instance GHC.Show.Show Text.RSS.Types.RssCategory
instance GHC.Classes.Eq Text.RSS.Types.RssEnclosure
instance GHC.Generics.Generic Text.RSS.Types.RssEnclosure
instance GHC.Classes.Ord Text.RSS.Types.RssEnclosure
instance GHC.Show.Show Text.RSS.Types.RssEnclosure
instance GHC.Classes.Eq Text.RSS.Types.RssSource
instance GHC.Generics.Generic Text.RSS.Types.RssSource
instance GHC.Classes.Ord Text.RSS.Types.RssSource
instance GHC.Show.Show Text.RSS.Types.RssSource
instance GHC.Classes.Eq Text.RSS.Types.RssItem
instance GHC.Generics.Generic Text.RSS.Types.RssItem
instance GHC.Classes.Ord Text.RSS.Types.RssItem
instance GHC.Show.Show Text.RSS.Types.RssItem
instance GHC.Classes.Eq Text.RSS.Types.RssTextInput
instance GHC.Generics.Generic Text.RSS.Types.RssTextInput
instance GHC.Classes.Ord Text.RSS.Types.RssTextInput
instance GHC.Show.Show Text.RSS.Types.RssTextInput
instance GHC.Classes.Eq Text.RSS.Types.RssCloud
instance GHC.Generics.Generic Text.RSS.Types.RssCloud
instance GHC.Classes.Ord Text.RSS.Types.RssCloud
instance GHC.Show.Show Text.RSS.Types.RssCloud
instance GHC.Classes.Eq Text.RSS.Types.RssImage
instance GHC.Generics.Generic Text.RSS.Types.RssImage
instance GHC.Classes.Ord Text.RSS.Types.RssImage
instance GHC.Show.Show Text.RSS.Types.RssImage
instance GHC.Classes.Eq Text.RSS.Types.RssDocument
instance GHC.Generics.Generic Text.RSS.Types.RssDocument
instance GHC.Classes.Ord Text.RSS.Types.RssDocument
instance GHC.Show.Show Text.RSS.Types.RssDocument
instance GHC.Exception.Exception Text.RSS.Types.RssException
instance GHC.Classes.Eq Text.RSS.Types.RssURI
instance GHC.Classes.Ord Text.RSS.Types.RssURI
instance GHC.Show.Show Text.RSS.Types.RssURI


-- | Streaming parsers for the RSS 1.0 standard.
module Text.RSS1.Conduit.Parse

-- | Parse an <tt>&lt;RDF&gt;</tt> element.
rss1Document :: MonadThrow m => ConduitM Event o m (Maybe RssDocument)

-- | Parse an <tt>&lt;items&gt;</tt> element.
rss1ChannelItems :: MonadThrow m => ConduitM Event o m (Maybe [Text])

-- | Parse an <tt>&lt;image&gt;</tt> element.
rss1Image :: (MonadThrow m) => ConduitM Event o m (Maybe RssImage)

-- | Parse an <tt>&lt;item&gt;</tt> element.
rss1Item :: MonadThrow m => ConduitM Event o m (Maybe RssItem)

-- | Parse a <tt>&lt;textinput&gt;</tt> element.
rss1TextInput :: (MonadThrow m) => ConduitM Event o m (Maybe RssTextInput)

module Text.RSS.Lens
categoryNameL :: Functor f => (Text -> f Text) -> RssCategory -> f RssCategory
categoryDomainL :: Functor f => (Text -> f Text) -> RssCategory -> f RssCategory
enclosureTypeL :: Functor f => (Text -> f Text) -> RssEnclosure -> f RssEnclosure
enclosureLengthL :: Functor f => (Int -> f Int) -> RssEnclosure -> f RssEnclosure
enclosureUrlL :: Functor f => (RssURI -> f RssURI) -> RssEnclosure -> f RssEnclosure
sourceNameL :: Functor f => (Text -> f Text) -> RssSource -> f RssSource
sourceUrlL :: Functor f => (RssURI -> f RssURI) -> RssSource -> f RssSource
itemSourceL :: Functor f => (Maybe RssSource -> f (Maybe RssSource)) -> RssItem -> f RssItem
itemPubDateL :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> RssItem -> f RssItem
itemGuidL :: Functor f => (Maybe RssGuid -> f (Maybe RssGuid)) -> RssItem -> f RssItem
itemCommentsL :: Functor f => (Maybe RssURI -> f (Maybe RssURI)) -> RssItem -> f RssItem
itemAuthorL :: Functor f => (Text -> f Text) -> RssItem -> f RssItem
itemDescriptionL :: Functor f => (Text -> f Text) -> RssItem -> f RssItem
itemLinkL :: Functor f => (Maybe RssURI -> f (Maybe RssURI)) -> RssItem -> f RssItem
itemTitleL :: Functor f => (Text -> f Text) -> RssItem -> f RssItem
itemCategoriesL :: Traversal' RssItem RssCategory
itemEnclosureL :: Traversal' RssItem RssEnclosure
textInputLinkL :: Functor f => (RssURI -> f RssURI) -> RssTextInput -> f RssTextInput
textInputNameL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
textInputDescriptionL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
textInputTitleL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
cloudProtocolL :: Functor f => (CloudProtocol -> f CloudProtocol) -> RssCloud -> f RssCloud
cloudRegisterProcedureL :: Functor f => (Text -> f Text) -> RssCloud -> f RssCloud
cloudUriL :: Functor f => (RssURI -> f RssURI) -> RssCloud -> f RssCloud
imageDescriptionL :: Functor f => (Text -> f Text) -> RssImage -> f RssImage
imageHeightL :: Functor f => (Maybe Int -> f (Maybe Int)) -> RssImage -> f RssImage
imageWidthL :: Functor f => (Maybe Int -> f (Maybe Int)) -> RssImage -> f RssImage
imageLinkL :: Functor f => (RssURI -> f RssURI) -> RssImage -> f RssImage
imageTitleL :: Functor f => (Text -> f Text) -> RssImage -> f RssImage
imageUriL :: Functor f => (RssURI -> f RssURI) -> RssImage -> f RssImage
channelSkipDaysL :: Functor f => (Set Day -> f (Set Day)) -> RssDocument -> f RssDocument
channelSkipHoursL :: Functor f => (Set Hour -> f (Set Hour)) -> RssDocument -> f RssDocument
channelTextInputL :: Functor f => (Maybe RssTextInput -> f (Maybe RssTextInput)) -> RssDocument -> f RssDocument
channelRatingL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelImageL :: Functor f => (Maybe RssImage -> f (Maybe RssImage)) -> RssDocument -> f RssDocument
channelTtlL :: Functor f => (Maybe Int -> f (Maybe Int)) -> RssDocument -> f RssDocument
channelCloudL :: Functor f => (Maybe RssCloud -> f (Maybe RssCloud)) -> RssDocument -> f RssDocument
channelDocsL :: Functor f => (Maybe RssURI -> f (Maybe RssURI)) -> RssDocument -> f RssDocument
channelGeneratorL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelLastBuildDateL :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> RssDocument -> f RssDocument
channelPubDateL :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> RssDocument -> f RssDocument
channelWebmasterL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelManagingEditorL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelCopyrightL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelLanguageL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelDescriptionL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
channelLinkL :: Functor f => (RssURI -> f RssURI) -> RssDocument -> f RssDocument
channelTitleL :: Functor f => (Text -> f Text) -> RssDocument -> f RssDocument
documentVersionL :: Functor f => (Version -> f Version) -> RssDocument -> f RssDocument
channelItemsL :: Traversal' RssDocument RssItem
channelCategoriesL :: Traversal' RssDocument RssCategory


-- | Streaming renderers for the RSS 2.0 standard.
module Text.RSS.Conduit.Render

-- | Render the top-level <tt>&lt;rss&gt;</tt> element.
renderRssDocument :: (Monad m) => RssDocument -> Source m Event

-- | Render an <tt>&lt;item&gt;</tt> element.
renderRssItem :: (Monad m) => RssItem -> Source m Event

-- | Render a <tt>&lt;source&gt;</tt> element.
renderRssSource :: (Monad m) => RssSource -> Source m Event

-- | Render an <tt>&lt;enclosure&gt;</tt> element.
renderRssEnclosure :: (Monad m) => RssEnclosure -> Source m Event

-- | Render a <tt>&lt;guid&gt;</tt> element.
renderRssGuid :: (Monad m) => RssGuid -> Source m Event

-- | Render a <tt>&lt;cloud&gt;</tt> element.
renderRssCloud :: (Monad m) => RssCloud -> Source m Event

-- | Render a <tt>&lt;category&gt;</tt> element.
renderRssCategory :: (Monad m) => RssCategory -> Source m Event

-- | Render an <tt>&lt;image&gt;</tt> element.
renderRssImage :: (Monad m) => RssImage -> Source m Event

-- | Render a <tt>&lt;textInput&gt;</tt> element.
renderRssTextInput :: (Monad m) => RssTextInput -> Source m Event

-- | Render a <tt>&lt;skipDays&gt;</tt> element.
renderRssSkipDays :: (Monad m) => Set Day -> Source m Event

-- | Render a <tt>&lt;skipHours&gt;</tt> element.
renderRssSkipHours :: (Monad m) => Set Hour -> Source m Event


-- | Streaming parsers for the RSS 2.0 standard.
module Text.RSS.Conduit.Parse

-- | Parse an <tt>&lt;rss&gt;</tt> element.
rssDocument :: MonadThrow m => ConduitM Event o m (Maybe RssDocument)

-- | Parse a <tt>&lt;category&gt;</tt> element.
rssCategory :: MonadThrow m => ConduitM Event o m (Maybe RssCategory)

-- | Parse a <tt>&lt;cloud&gt;</tt> element.
rssCloud :: (MonadThrow m) => ConduitM Event o m (Maybe RssCloud)

-- | Parse an <tt>&lt;enclosure&gt;</tt> element.
rssEnclosure :: MonadThrow m => ConduitM Event o m (Maybe RssEnclosure)

-- | Parse a <tt>&lt;guid&gt;</tt> element.
rssGuid :: MonadThrow m => ConduitM Event o m (Maybe RssGuid)

-- | Parse an <tt>&lt;image&gt;</tt> element.
rssImage :: (MonadThrow m) => ConduitM Event o m (Maybe RssImage)

-- | Parse an <tt>&lt;item&gt;</tt> element.
rssItem :: MonadThrow m => ConduitM Event o m (Maybe RssItem)

-- | Parse a <tt>&lt;skipDays&gt;</tt> element.
rssSkipDays :: MonadThrow m => ConduitM Event o m (Maybe (Set Day))

-- | Parse a <tt>&lt;skipHours&gt;</tt> element.
rssSkipHours :: MonadThrow m => ConduitM Event o m (Maybe (Set Hour))

-- | Parse a <tt>&lt;source&gt;</tt> element.
rssSource :: MonadThrow m => ConduitM Event o m (Maybe RssSource)

-- | Parse a <tt>&lt;textInput&gt;</tt> element.
rssTextInput :: (MonadThrow m) => ConduitM Event o m (Maybe RssTextInput)
