imm-0.2.0.0: Imm/Types.hs
{-# 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