aboutsummaryrefslogtreecommitdiff
path: root/src/Fetch.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fetch.hs')
-rw-r--r--src/Fetch.hs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Fetch.hs b/src/Fetch.hs
new file mode 100644
index 0000000..a4e8c94
--- /dev/null
+++ b/src/Fetch.hs
@@ -0,0 +1,30 @@
+module Fetch
+ ( fetchResumes
+ , fetchAds
+ ) where
+
+import Data.Text (Text)
+import qualified Data.Text as T
+
+import Page (getPage)
+
+import Model.Ad
+import Model.Resume
+import Model.Detail
+import Model.URL
+
+import Parser.Resume
+import Parser.Detail
+
+fetchResumes :: URL -> IO (Either Text [Resume])
+fetchResumes url = fmap parseResumes <$> getPage url
+
+fetchAds :: [Resume] -> IO (Either Text [Ad])
+fetchAds resumes = do
+ xs <- sequence $ map fetchAd resumes
+ return $ sequence xs
+
+fetchAd :: Resume -> IO (Either Text Ad)
+fetchAd resume = do
+ page <- getPage (url resume)
+ fmap (\page -> Ad { resume = resume, detail = parseDetail page}) <$> getPage (url resume)