X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhalcyon.git;a=blobdiff_plain;f=src%2FMain.hs;h=5cd957bed71c80953d5df44c1af8cb05824d7633;hp=3ae09ebe9c9b484653bbf5ec85e71780a903de6c;hb=230072d26d55aed92737308aa04ce8a0daa0b71a;hpb=ef7a19a9d1a51bb31e98321fed395c8f41c16c28 diff --git a/src/Main.hs b/src/Main.hs index 3ae09eb..5cd957b 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -23,15 +23,20 @@ thread_sleep seconds = do threadDelay microseconds --- |Given a 'Message', 'Status', and date, update that message's body --- and subject with the information contained in the status. Adds a --- /Date: / header, and returns the updated message. +-- |Given a 'Message', 'Status', and default date, update that +-- message's body and subject with the information contained in the +-- status. Adds a /Date: / header, and returns the updated message. message_from_status :: Message -> String -> Status -> Message -message_from_status message date status = - message { subject = "Twat: " ++ (screen_name (user status)), - body = (pretty_print status), - headers = ((headers message) ++ ["Date: " ++ date])} - +message_from_status message default_date status = + message { subject = "Twat: " ++ (screen_name (user status)), + body = (pretty_print status), + headers = ((headers message) ++ ["Date: " ++ date])} + where + -- Use the Status' created_at date if it can be coerced into + -- RFC822 format. + date = case (created_at_to_rfc822 $ created_at status) of + Nothing -> default_date + Just c -> c -- |This is the main recursive loop. It takes a length of time to -- delay (in seconds), a username, a latest_status_id, and optionally @@ -63,8 +68,8 @@ recurse delay username latest_status_id maybe_message = do recurse delay username new_latest_status_id maybe_message return () Just message -> do - date_header <- construct_date_header - let messages = map (message_from_status message (date_header)) new_statuses + default_date <- rfc822_now + let messages = map (message_from_status message (default_date)) new_statuses sendmail_results <- mapM sendmail messages _ <- mapM print_sendmail_result sendmail_results recurse delay username new_latest_status_id maybe_message @@ -181,8 +186,8 @@ twat_single_status the_status_id maybe_message = do putStrLn "No message object given." return () Just message -> do - date_header <- construct_date_header - let messages = map (message_from_status message (date_header)) statuses + default_date <- rfc822_now + let messages = map (message_from_status message (default_date)) statuses sendmail_results <- mapM sendmail messages _ <- mapM print_sendmail_result sendmail_results return ()