| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- module LinkedIn.Page.JobOffer where
- import Prelude
- import Data.Either (Either)
- import Data.Foldable (class Foldable, foldMap, foldlDefault, foldrDefault)
- import Data.Generic.Rep (class Generic)
- import Data.Show.Generic (genericShow)
- import Data.Traversable (class Traversable, sequence, traverseDefault)
- import LinkedIn.Jobs.JobOffer (JobOffer)
- import LinkedIn.Jobs.JobOffer as JJO
- import LinkedIn.UI.Components.JobsUnifiedTopCard (JobsUnifiedTopCardElement, queryJobsUnifiedTopCardElement)
- import LinkedIn.QueryRunner (QueryRunner', subQueryOne)
- import LinkedIn.UI.Elements.Types (UIElement)
- import Web.DOM (Document, Node)
- data JobOfferPage a = JobOfferPage (JobsUnifiedTopCardElement a)
- derive instance Generic (JobOfferPage a) _
- derive instance Eq a => Eq (JobOfferPage a)
- instance Show a => Show (JobOfferPage a) where
- show = genericShow
- derive instance Functor JobOfferPage
- instance Foldable JobOfferPage where
- foldMap f (JobOfferPage topCard) = foldMap f topCard
- foldl = \x -> foldlDefault x
- foldr = \x -> foldrDefault x
- instance Traversable JobOfferPage where
- sequence (JobOfferPage topCard) = ado
- tc <- sequence topCard
- in JobOfferPage tc
- traverse = \x -> traverseDefault x
- query :: QueryRunner' Document (JobOfferPage Node)
- query n = do
- card <- subQueryOne queryJobsUnifiedTopCardElement "div.jobs-unified-top-card" n
- pure $ JobOfferPage card
- extract ∷ JobOfferPage UIElement → Either String JobOffer
- extract (JobOfferPage tabs) = JJO.fromUI tabs
|