module Imm.Maildir where
import Imm.Mail()
import Imm.Types
import Data.Time.Clock.POSIX
import Network.BSD
import System.Directory
import System.FilePath
import System.IO.Error
import System.Random
init :: FilePath -> IO Bool
init directory = do
root <- try $ createDirectoryIfMissing True directory
cur <- try . createDirectoryIfMissing True . (directory </>) $ "cur"
new <- try . createDirectoryIfMissing True . (directory </>) $ "new"
tmp <- try . createDirectoryIfMissing True . (directory </>) $ "tmp"
case (root, cur, new, tmp) of
(Right _, Right _, Right _, Right _) -> return True
_ -> return False
add :: FilePath -> Mail -> IO ()
add directory mail = do
fileName <- getUniqueName
writeFile (directory </> "new" </> fileName) (show mail)
getUniqueName :: IO String
getUniqueName = do
time <- getPOSIXTime >>= (return . show)
hostname <- getHostName
rand <- (getStdRandom $ randomR (1,100000) :: IO Int) >>= (return . show)
return $ time ++ "." ++ rand ++ "." ++ hostname