module Imm.Types where
import qualified Data.Text.Lazy as T
import Data.Time
import Network.URI
import Network.Stream
import System.Console.CmdArgs
import Text.Feed.Types
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}
data RefDirs = RefDirs {
mHome :: FilePath,
mTemporary :: FilePath,
mConfiguration :: FilePath,
mData :: FilePath}
type PortableFilePath = RefDirs -> FilePath