From aafc45eb5eed3839a5210a7d48928d975df6a296 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Sat, 11 Apr 2015 20:38:08 +0200 Subject: Handle a configuration file to save the url --- src/Main.hs | 80 ++++++++----------------------------------------------------- 1 file changed, 10 insertions(+), 70 deletions(-) (limited to 'src/Main.hs') diff --git a/src/Main.hs b/src/Main.hs index 6208953..ad70402 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -4,78 +4,18 @@ module Main ( main ) where -import Data.List (intersperse) -import qualified Data.Text as T import qualified Data.Text.IO as T -import Control.Concurrent (threadDelay) +import AdListener (listenToNewAds) -import Ad (getResumes, getAds) - -import Model.Ad -import Model.URL -import Model.Resume - -import View.Ad (renderAds) - -import Page -import Parser.Detail - -listenURL :: URL -listenURL = "http://www.leboncoin.fr/annonces/offres/corse/" +import Config (Config) +import qualified Config as C main :: IO () -main = listenToNewAds [] - -listenToNewAds :: [Ad] -> IO () -listenToNewAds viewedAds = do - eitherResumes <- getResumes listenURL - case eitherResumes of - Left error -> - listenError viewedAds error - Right resumes -> - listenToNewAdsWithResumes viewedAds resumes - -listenToNewAdsWithResumes :: [Ad] -> [Resume] -> IO () -listenToNewAdsWithResumes viewedAds resumes = - let viewedURLs = getURLs $ map resume viewedAds - newResumes = getNewResumes viewedURLs resumes - in do - eitherNewAds <- getAds newResumes - case eitherNewAds of - Left error -> - listenError viewedAds error - Right newAds -> - do - if not (null newAds) - then - T.putStrLn (newAdsMessage newAds) - else - return () - waitOneMinute - listenToNewAds (viewedAds ++ newAds) - -newAdsMessage :: [Ad] -> T.Text -newAdsMessage newAds = - let newAdsMessage = - T.concat - [ "Got " - , T.pack . show . length $ newAds - , " new ads." - ] - line = T.map (\_ -> '-') newAdsMessage - in T.intercalate - "\n" - [ newAdsMessage - , T.concat [line, "\n"] - , renderAds newAds - ] - -listenError :: [Ad] -> T.Text -> IO () -listenError viewedAds error = do - T.putStrLn error - waitOneMinute - listenToNewAds viewedAds - -waitOneMinute :: IO () -waitOneMinute = threadDelay (1000 * 1000 * 60) +main = do + maybeConfig <- C.getConfig + case maybeConfig of + Just config -> + listenToNewAds config [] + Nothing -> + T.putStrLn C.configUsage -- cgit v1.2.3