-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Retrieve RSS/Atom feeds and write one mail per new item in a maildir. -- -- Retrieve RSS/Atom feeds and write one mail per new item in a maildir. @package imm @version 0.4.0.0 module Imm.OPML read :: String -> Maybe [(String, [String])] module Imm.Types -- | Errors that can be returned by an Imm process data ImmError OtherError :: String -> ImmError HTTPError :: HttpException -> ImmError TLSError :: HandshakeFailed -> ImmError UnicodeError :: UnicodeException -> ImmError ParseUriError :: String -> ImmError ParseTimeError :: String -> ImmError ParseItemDateError :: Item -> ImmError ParseFeedError :: String -> ImmError IOE :: IOError -> ImmError TimeOut :: ImmError data CliOptions CliOptions :: Maybe String -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Maybe String -> CliOptions mFeedURI :: CliOptions -> Maybe String mImportOPML :: CliOptions -> Bool mList :: CliOptions -> Bool mMarkAsRead :: CliOptions -> Bool mMarkAsUnread :: CliOptions -> Bool mUpdate :: CliOptions -> Bool -- | Do not recompile configuration even if it has changed mDenyReconf :: CliOptions -> Bool mMasterBinary :: CliOptions -> Maybe String -- | Set of settings for imm data Settings Settings :: PortableFilePath -> PortableFilePath -> ((Item, Feed) -> String) -> ((Item, Feed) -> Text) -> ((Item, Feed) -> Text) -> Settings mStateDirectory :: Settings -> PortableFilePath mMaildir :: Settings -> PortableFilePath mFromBuilder :: Settings -> (Item, Feed) -> String mSubjectBuilder :: Settings -> (Item, Feed) -> Text -- | sic! mBodyBuilder :: Settings -> (Item, Feed) -> Text type CustomSettings = Settings -> Settings type FeedList = [(CustomSettings, String)] type ImmFeed = (URI, Feed) data Mail Mail :: String -> Maybe ZonedTime -> String -> Text -> String -> String -> String -> Text -> Mail mReturnPath :: Mail -> String mDate :: Mail -> Maybe ZonedTime mFrom :: Mail -> String mSubject :: Mail -> Text mMIME :: Mail -> String mCharset :: Mail -> String mContentDisposition :: Mail -> String mBody :: Mail -> Text -- | Set of reference directories, typically used to build FilePath-s data RefDirs RefDirs :: FilePath -> FilePath -> FilePath -> FilePath -> RefDirs -- | Home directory mHome :: RefDirs -> FilePath -- | Temporary files directory mTemporary :: RefDirs -> FilePath -- | Configuration directory mConfiguration :: RefDirs -> FilePath -- | Data directory mData :: RefDirs -> FilePath type PortableFilePath = RefDirs -> FilePath instance Typeable CliOptions instance Data CliOptions instance Show CliOptions instance Eq CliOptions instance Error ImmError instance Show ImmError -- | Various utilities module Imm.Util -- | Shortcut to liftIO io :: MonadIO m => IO a -> m a -- | Monad-agnostic version of try try :: (MonadIO m, MonadError ImmError m) => IO a -> m a -- | Monad-agnostic version of timeout timeout :: (MonadIO m, MonadError ImmError m) => Int -> IO a -> m a -- | Print logs with arbitrary importance logError, logVerbose, logNormal :: MonadIO m => String -> m () -- | Evaluate given function while replacing directory variables -- appropriately for the current system resolve :: MonadIO m => (RefDirs -> a) -> m a -- | Monad-agnostic version of Data.Text.Encoding.decodeUtf8 decodeUtf8 :: MonadError ImmError m => ByteString -> m Text decode :: (MonadIO m, MonadError ImmError m) => ByteString -> m Text -- | Monad-agnostic version of Network.URI.parseURI parseURI :: MonadError ImmError m => String -> m URI -- | Monad-agnostic version of Data.Time.Format.parseTime parseTime :: MonadError ImmError m => String -> m UTCTime parseDate :: String -> Maybe UTCTime -- | HTTP client related functions module Imm.HTTP getRaw :: (MonadIO m, MonadError ImmError m) => URI -> m ByteString -- | Monad-agnostic version of 'withManager withManager' :: (MonadIO m, MonadError ImmError m) => (Manager -> ResourceT IO b) -> m b -- | Monad-agnostic version of parseUrl parseURL :: (MonadIO m, MonadError ImmError m) => String -> m (Request m') -- | Build an HTTP request for given URI. request :: (MonadError ImmError m, MonadIO m) => String -> m (Request a) -- | Utilities to manipulate mails. module Imm.Mail toText :: Mail -> Text build :: MonadReader Settings m => TimeZone -> (Item, Feed) -> m Mail buildFrom :: MonadReader Settings m => (Item, Feed) -> m String buildSubject :: MonadReader Settings m => (Item, Feed) -> m Text buildBody :: MonadReader Settings m => (Item, Feed) -> m Text instance Default Mail -- | Utilities to manipulate maildirs. module Imm.Maildir init :: (MonadIO m, MonadError ImmError m) => PortableFilePath -> m () add :: (MonadIO m, MonadError ImmError m) => PortableFilePath -> Mail -> m () getUniqueName :: MonadIO m => m String module Imm.Feed getStateFile :: URI -> FilePath toFileName :: Char -> String -- | Monad-agnostic version of parseFeedString parse :: MonadError ImmError m => String -> m Feed printStatus :: (MonadReader Settings m, MonadIO m) => String -> m () getLastCheck :: (MonadReader Settings m, MonadIO m) => URI -> m UTCTime storeLastCheck :: (MonadReader Settings m, MonadIO m, MonadError ImmError m) => URI -> UTCTime -> m () download :: (MonadIO m, MonadError ImmError m) => URI -> m ImmFeed -- | Create mails for each new item update :: (MonadReader Settings m, MonadIO m, MonadError ImmError m) => ImmFeed -> m () updateItem :: (MonadReader Settings m, MonadIO m, MonadError ImmError m) => (Item, Feed) -> m () markAsRead :: (MonadIO m, MonadError ImmError m, MonadReader Settings m) => URI -> m () markAsUnread :: (MonadIO m, MonadError ImmError m, MonadReader Settings m) => URI -> m () getItemLinkNM :: Item -> String getItemContent :: Item -> Text getDate :: MonadError ImmError m => Item -> m UTCTime extractHtml :: EntryContent -> String paragraphy :: String -> String -- | Default settings module Imm.Config addFeeds :: MonadIO m => [(String, [String])] -> m () instance Default Settings -- | Main high level process functions. module Imm.Main importOPML :: MonadIO m => m () list :: MonadIO m => FeedList -> m () markAsRead :: MonadIO m => FeedList -> m () markAsUnread :: MonadIO m => FeedList -> m () update :: MonadIO m => FeedList -> m () checkStateDirectory :: (MonadReader Settings m, MonadIO m, MonadError ImmError m) => m () -- | Low level functions used at start-up to parse commandline and handle -- dynamic reconfiguration. module Imm.Boot -- | Available commandline options. cliOptions :: Mode (CmdArgs CliOptions) -- | Print various paths used for dynamic reconfiguration. printDyrePaths :: IO () -- | Dynamic configuration settings. dyreParameters :: Params (Either String FeedList) showError :: Either String a -> String -> Either String a -- | Main function to call in your configuration file. imm :: FeedList -> IO () -- | Internal dispatcher, decides which function to execute depending on -- commandline options. realMain :: Either String FeedList -> IO ()