{-# LANGUAGE DeriveDataTypeable #-} module Imm.Types where -- {{{ Imports import qualified Data.Text.Lazy as T import Data.Time import Network.URI import Network.Stream import System.Console.CmdArgs import Text.Feed.Types -- }}} -- {{{ Error handling data ImmError = OtherError String | ParseUriError String | ParseTimeError String | ParseItemDateError Item | ParseFeedError String | CE ConnError instance Show ImmError where show (OtherError e) = show e show (ParseUriError raw) = "Cannot parse URI: " ++ raw show (ParseItemDateError item) = "Cannot parse date from item: " ++ show item show (ParseTimeError raw) = "Cannot parse time: " ++ raw show (ParseFeedError raw) = "Cannot parse feed: " ++ raw show (CE e) = show e -- }}} data CliOptions = CliOptions { mParameter :: Maybe String, mMasterBinary :: Maybe String} deriving (Data, Typeable, Show, Eq) -- | data Settings = Settings { mStateDirectory :: PortableFilePath, mError :: Maybe String} type FeedGroup = (FeedSettings, [String]) data FeedSettings = FeedSettings { mMailDirectory :: PortableFilePath} type ImmFeed = (URI, Feed) data Mail = Mail { mReturnPath :: String, mDate :: Maybe ZonedTime, mFrom :: String, mSubject :: T.Text, mMIME :: String, mCharset :: String, mContentDisposition :: String, mContent :: T.Text} -- | Set of reference directories, typically used to build FilePath-s data RefDirs = RefDirs { mHome :: FilePath, -- ^ Home directory mTemporary :: FilePath, -- ^ Temporary files directory mConfiguration :: FilePath, -- ^ Configuration directory mData :: FilePath} -- ^ Data directory type PortableFilePath = RefDirs -> FilePath