|
|
@@ -3,21 +3,14 @@ module ExampleWebExt.Content where
|
|
|
import Prelude
|
|
|
|
|
|
import Browser.DOM (getBrowserDom)
|
|
|
-import Data.Either (Either(..), hush)
|
|
|
-import Data.Maybe (Maybe(..))
|
|
|
-import Data.Traversable (class Traversable, traverse)
|
|
|
import Effect (Effect)
|
|
|
import Effect.Class.Console (logShow)
|
|
|
import Effect.Console (log)
|
|
|
-import LinkedIn.DetachedNode (DetachedNode, toDetached)
|
|
|
+import LinkedIn (run, runToDetached)
|
|
|
import LinkedIn.Page.JobOffer as PageJ
|
|
|
import LinkedIn.Page.Projects as PageP
|
|
|
import LinkedIn.Page.Skills as PageS
|
|
|
import LinkedIn.Page.WorkExperiences as PageWE
|
|
|
-import LinkedIn.QueryRunner (QueryRunner', runQuery)
|
|
|
-import LinkedIn.UI.Elements.Parser (fromDetachedToUI)
|
|
|
-import LinkedIn.UI.Elements.Types (UIElement)
|
|
|
-import Web.DOM (Document, Node)
|
|
|
|
|
|
main :: Effect Unit
|
|
|
main = do
|
|
|
@@ -25,46 +18,9 @@ main = do
|
|
|
|
|
|
dom <- getBrowserDom
|
|
|
|
|
|
- runQueryAndExtract PageWE.query PageWE.extract dom >>= logShow
|
|
|
- runQueryAndExtract PageP.query PageP.extract dom >>= logShow
|
|
|
- runQueryAndExtract PageS.query PageS.extract dom >>= logShow
|
|
|
- runQueryAndExtract PageJ.query PageJ.extract dom >>= logShow
|
|
|
+ run PageWE.query PageWE.extract dom >>= logShow
|
|
|
+ run PageP.query PageP.extract dom >>= logShow
|
|
|
+ run PageS.query PageS.extract dom >>= logShow
|
|
|
+ run PageJ.query PageJ.extract dom >>= logShow
|
|
|
|
|
|
- runQueryAndDetach PageJ.query dom >>= logShow
|
|
|
-
|
|
|
-extractData ∷ ∀ t a. Traversable t ⇒ (t UIElement → Either String a) → t Node → Effect (Either String a)
|
|
|
-extractData parsePageUI n = do
|
|
|
- d <- traverse toDetached n
|
|
|
- pure $ case fromDetachedToUI d of
|
|
|
- Left l -> Left l
|
|
|
- Right ui -> parsePageUI ui
|
|
|
-
|
|
|
-runQueryAndExtract ∷
|
|
|
- ∀ t a.
|
|
|
- Traversable t
|
|
|
- => Show a
|
|
|
- ⇒ QueryRunner' Document (t Node)
|
|
|
- → (t UIElement → Either String a)
|
|
|
- → Document
|
|
|
- → Effect (Maybe a)
|
|
|
-runQueryAndExtract query extract dom = do
|
|
|
- n <- runQuery $ query dom
|
|
|
- case n of
|
|
|
- Left _ -> pure Nothing
|
|
|
- Right q -> do
|
|
|
- extracted <- (extractData extract) q
|
|
|
- pure $ hush extracted
|
|
|
-
|
|
|
-runQueryAndDetach ∷
|
|
|
- ∀ f1.
|
|
|
- Traversable f1
|
|
|
- ⇒ QueryRunner' Document (f1 Node)
|
|
|
- → Document
|
|
|
- → Effect (Maybe (f1 DetachedNode))
|
|
|
-runQueryAndDetach query dom = do
|
|
|
- n <- runQuery $ query dom
|
|
|
- case n of
|
|
|
- Left _ -> pure Nothing
|
|
|
- Right q -> do
|
|
|
- d <- traverse toDetached q
|
|
|
- pure $ Just d
|
|
|
+ runToDetached PageJ.query dom >>= logShow
|