From 7acd7a42f7663aa79d18e24bdb9fe19bf15f8fae Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 21 Nov 2015 19:02:49 +0100 Subject: Log details about sent mails in a file --- src/Logger.hs | 22 ++++++++++++++++++++++ src/Main.hs | 37 +++++++++++++++++++++++-------------- src/SendMail.hs | 13 +++++++++++++ 3 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 src/Logger.hs (limited to 'src') diff --git a/src/Logger.hs b/src/Logger.hs new file mode 100644 index 0000000..4be55be --- /dev/null +++ b/src/Logger.hs @@ -0,0 +1,22 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Logger + ( info + ) where + +import Data.Text (Text) +import qualified Data.Text as T +import qualified Data.Text.IO as T (appendFile) +import Data.Time.LocalTime (getZonedTime) +import Data.Time.Format (formatTime, defaultTimeLocale) + +info :: Text -> IO () +info message = do + time <- T.pack <$> formatTime defaultTimeLocale "[%d/%m/%Y, %H:%M]" <$> getZonedTime + T.appendFile "logs" $ + T.concat + [ time + , " - " + , message + , "\n" + ] diff --git a/src/Main.hs b/src/Main.hs index d72bd95..0aa2910 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -6,6 +6,7 @@ module Main import System.IO (stderr) +import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as T @@ -28,24 +29,32 @@ main = do eitherConfig <- getConfig configPath case (eitherBirthdates, eitherConfig) of (Left err, _) -> - T.hPutStr stderr $ - T.concat - [ "Error while parsing file " - , T.pack birthdatePath - , ":\n" - , err - ] + birthdateError err (_, Left err) -> - T.hPutStr stderr $ - T.concat - [ "Error while parsing config file " - , T.pack birthdatePath - , ":\n" - , err - ] + configError err (Right birthdates, Right config) -> sendNotificationForBirthdayToday birthdates config +birthdateError :: Text -> IO () +birthdateError err = + T.hPutStr stderr $ + T.concat + [ "Error while parsing file " + , T.pack birthdatePath + , ":\n" + , err + ] + +configError :: Text -> IO () +configError err = + T.hPutStr stderr $ + T.concat + [ "Error while parsing config file " + , T.pack configPath + , ":\n" + , err + ] + sendNotificationForBirthdayToday :: [Birthdate] -> Config -> IO () sendNotificationForBirthdayToday birthdates config = do currentDate <- getCurrentDate diff --git a/src/SendMail.hs b/src/SendMail.hs index 23b1b80..0e1f91d 100644 --- a/src/SendMail.hs +++ b/src/SendMail.hs @@ -5,12 +5,25 @@ module SendMail ) where import Data.Text (Text) +import qualified Data.Text as T import Data.Text.Lazy (fromStrict) import Network.Mail.Mime +import Logger + sendMail :: Text -> Text -> Text -> Text -> IO () sendMail to from subject body = do + Logger.info $ + T.concat + [ "Sending mail to " + , to + , " with subject “" + , subject + , "” and body “" + , body + , "”" + ] renderSendMail (simpleMail' (address to) (address from) subject (fromStrict body)) address :: Text -> Address -- cgit v1.2.3