module Ad ( getAds , getResumes ) where import Page (getPage) import Model.Ad import Model.Resume import Model.Detail import Model.URL import Parser.Resume import Parser.Detail getResumes :: URL -> IO (Either String [Resume]) getResumes url = fmap parseResumes <$> getPage url getAds :: URL -> IO (Either String [Ad]) getAds url = do eitherPage <- getPage url case eitherPage of Left error -> return (Left error) Right page -> getAdsFromPage page getAdsFromPage :: String -> IO (Either String [Ad]) getAdsFromPage page = do xs <- sequence $ map getAd (parseResumes page) return $ sequence xs getAd :: Resume -> IO (Either String Ad) getAd resume = do page <- getPage (url resume) fmap (\page -> Ad { resume = resume, detail = parseDetail page}) <$> getPage (url resume)