{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE NoImplicitPrelude #-} module Gargantext.Text.Parsers.Isidore where import Data.Text (Text) import Data.Either import Gargantext.Prelude import Data.Aeson import Data.Proxy import GHC.Generics import Network.HTTP.Client (newManager) import Network.HTTP.Client.TLS (tlsManagerSettings) import Servant.API import Servant.Client type IsidoreAPI = "sparql" :> Capture "query" Text :> Get '[JSON] [IsidoreDoc] data IsidoreDoc = IsidoreDoc {title :: Maybe Text} deriving (Show, Generic) instance FromJSON IsidoreDoc instance ToJSON IsidoreDoc isidoreDocsApi :: Proxy IsidoreAPI isidoreDocsApi = Proxy isidoreDocs :: ClientM [IsidoreDoc] isidoreDocs = client isidoreDocsApi getIsidoreDocs :: IO [IsidoreDoc] getIsidoreDocs = do manager' <- newManager tlsManagerSettings res <- runClientM isidoreDocs $ mkClientEnv manager' $ BaseUrl Https "https://www.rechercheisidore.fr" 8080 "" case res of Left _ -> panic "err" Right res' -> pure res'