Przeglądaj źródła

Handle more values from Python's JobOffer class

jherve 1 rok temu
rodzic
commit
a59cc99c84
1 zmienionych plików z 32 dodań i 2 usunięć
  1. 32 2
      src/NativeMessage.purs

+ 32 - 2
src/NativeMessage.purs

@@ -7,9 +7,10 @@ import Browser.WebExt.Message (Message, mkMessage, unwrapMessage)
 import Browser.WebExt.Port (Port, onDisconnectAddListener, onMessageAddListener)
 import Browser.WebExt.Port (Port, onDisconnectAddListener, onMessageAddListener)
 import Browser.WebExt.Port as Port
 import Browser.WebExt.Port as Port
 import Browser.WebExt.Runtime (Application, connectNative)
 import Browser.WebExt.Runtime (Application, connectNative)
-import Data.Argonaut.Decode (class DecodeJson, printJsonDecodeError)
+import Data.Argonaut.Decode (class DecodeJson, JsonDecodeError(..), printJsonDecodeError)
+import Data.Argonaut.Decode.Decoders (decodeString)
 import Data.Argonaut.Decode.Generic (genericDecodeJson)
 import Data.Argonaut.Decode.Generic (genericDecodeJson)
-import Data.Argonaut.Encode (class EncodeJson)
+import Data.Argonaut.Encode (class EncodeJson, encodeJson)
 import Data.Argonaut.Encode.Generic (genericEncodeJson)
 import Data.Argonaut.Encode.Generic (genericEncodeJson)
 import Data.Either (Either(..))
 import Data.Either (Either(..))
 import Data.Generic.Rep (class Generic)
 import Data.Generic.Rep (class Generic)
@@ -38,10 +39,39 @@ data NativeMessage =
   | NativeMessageJobAdded {job :: NativePythonJobOffer}
   | NativeMessageJobAdded {job :: NativePythonJobOffer}
   | NativeMessageJobOfferList (Array NativePythonJobOffer)
   | NativeMessageJobOfferList (Array NativePythonJobOffer)
 
 
+data ApplicationProcess
+  = ApplicationProcessLinkedInSimplified
+  | ApplicationProcessRegular
+  | ApplicationProcessCareerSite
+  | ApplicationProcessSpurious
+
+derive instance Generic ApplicationProcess _
+instance Show ApplicationProcess where show = genericShow
+instance EncodeJson ApplicationProcess where
+  encodeJson = case _ of
+    ApplicationProcessLinkedInSimplified -> encodeJson "linked_in_simplified"
+    ApplicationProcessRegular -> encodeJson "regular"
+    ApplicationProcessCareerSite -> encodeJson "career_site"
+    ApplicationProcessSpurious -> encodeJson "spurious"
+
+instance DecodeJson ApplicationProcess where
+  decodeJson json = case decodeString json of
+    Right "linked_in_simplified" -> Right ApplicationProcessLinkedInSimplified
+    Right "regular" -> Right ApplicationProcessRegular
+    Right "career_site" -> Right ApplicationProcessCareerSite
+    Right "spurious" -> Right ApplicationProcessSpurious
+    _ -> Left $ UnexpectedValue json
+
 type NativePythonJobOffer = {
 type NativePythonJobOffer = {
   id :: String,
   id :: String,
   title :: String,
   title :: String,
   url :: String,
   url :: String,
+  company :: String,
+  location :: Maybe String,
+  company_domain :: Maybe String,
+  company_url :: Maybe String,
+  flexibility :: Maybe JobFlexibility,
+  application_process :: Maybe ApplicationProcess,
   application_date :: Maybe String,
   application_date :: Maybe String,
   application_rejection_date :: Maybe String
   application_rejection_date :: Maybe String
 }
 }