Commit ed4debe3 authored by Alexandre Delanoë's avatar Alexandre Delanoë

[FEAT] External APIs HAL AND IsTex.

parent 6cbc1f5e
......@@ -27,7 +27,6 @@ import Test.QuickCheck.Arbitrary
import Test.QuickCheck (elements)
import Data.Swagger
import qualified Gargantext.Text.Corpus.API.Pubmed as PUBMED
import qualified Gargantext.Text.Corpus.API.Isidore as ISIDORE
import qualified Gargantext.Text.Corpus.API.Hal as HAL
......@@ -37,8 +36,8 @@ import qualified Gargantext.Text.Corpus.API.Istex as ISTEX
data ExternalAPIs = All
| PubMed
| Hal_EN
| Hal_FR
| HAL_EN
| HAL_FR
| IsTex_EN
| IsTex_FR
......@@ -55,8 +54,8 @@ get All _ _ = undefined
get PubMed q l = PUBMED.get q l
get Hal_EN q l = HAL.get EN q l
get Hal_FR q l = HAL.get FR q l
get HAL_EN q l = HAL.get EN q l
get HAL_FR q l = HAL.get FR q l
get IsTex_EN q l = ISTEX.get EN q l
get IsTex_FR q l = ISTEX.get FR q l
......
......@@ -16,15 +16,41 @@ module Gargantext.Text.Corpus.API.Hal
where
import Data.Maybe
import Data.Text (Text)
import Data.Text (Text, pack, intercalate)
import Gargantext.Prelude
import Gargantext.Core (Lang(..))
import qualified Gargantext.Text.Corpus.Parsers.Date as Date
import Gargantext.Database.Types.Node (HyperdataDocument(..))
import qualified Data.Text as Text
import qualified HAL as HAL
import qualified HAL as HAL
import qualified HAL.Doc.Corpus as HAL
import qualified HAL.Client as HAL
get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
get la q li = undefined
get la q ml = do
docs <- HAL.getMetadataWith q (fromIntegral <$> ml)
either (panic . pack . show) (\d -> mapM (toDoc' la) $ HAL._docs d) docs
toDoc' :: Lang -> HAL.Corpus -> IO HyperdataDocument
toDoc' la (HAL.Corpus i t ab d s aus affs) = do
(utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") Just d)
pure $ HyperdataDocument (Just "Hal")
(Just $ pack $ show i)
Nothing
Nothing
Nothing
Nothing
(Just $ intercalate " " t)
(Just $ foldl (\x y -> x <> ", " <> y) "" aus)
(Just $ foldl (\x y -> x <> ", " <> y) "" affs)
s
(Just $ intercalate " " ab)
(fmap (pack . show) utctime)
pub_year
pub_month
pub_day
Nothing
Nothing
Nothing
(Just $ (pack . show) la)
......@@ -71,7 +71,7 @@ isidoreToDoc l (IsidoreDoc t a d u s as) = do
(utcTime, (pub_year, pub_month, pub_day)) <- Date.dateSplit l (maybe (Just "2019") (Just) d)
pure $ HyperdataDocument (Just "IsidoreApi")
pure $ HyperdataDocument (Just "Isidore")
Nothing
u
Nothing
......@@ -92,11 +92,3 @@ isidoreToDoc l (IsidoreDoc t a d u s as) = do
(Just $ (Text.pack . show) l)
......@@ -15,17 +15,50 @@ Portability : POSIX
module Gargantext.Text.Corpus.API.Istex
where
import Data.Either (either)
import Data.Maybe
import Data.Text (Text)
import Data.List (concat)
import Data.Maybe (catMaybes)
import Data.Text (Text, pack)
import Gargantext.Prelude
import Gargantext.Core (Lang(..))
import qualified Gargantext.Text.Corpus.Parsers.Date as Date
import Gargantext.Database.Types.Node (HyperdataDocument(..))
import qualified Data.Text as Text
import qualified ISTEX as ISTEX
import qualified ISTEX.Client as ISTEX
get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
get la q ml = undefined
get la q ml = do
docs <- ISTEX.getMetadataWith q (fromIntegral <$> ml)
either (panic . pack . show) (toDoc' la) docs
toDoc' :: Lang -> ISTEX.Documents -> IO [HyperdataDocument]
toDoc' la docs' = do
--printDebug "ISTEX" (ISTEX._documents_total docs')
mapM (toDoc la) (ISTEX._documents_hits docs')
-- | TODO remove dateSplit here
-- TODO current year as default
toDoc :: Lang -> ISTEX.Document -> IO HyperdataDocument
toDoc la (ISTEX.Document i t a ab d s) = do
(utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") (Just . pack . show) d)
pure $ HyperdataDocument (Just "Istex")
(Just i)
Nothing
Nothing
Nothing
Nothing
t
(Just $ foldl (\x y -> x <> ", " <> y) "" (map ISTEX._author_name a))
(Just $ foldl (\x y -> x <> ", " <> y) "" (concat $ (map ISTEX._author_affiliations) a))
(Just $ foldl (\x y -> x <> ", " <> y) "" (catMaybes $ map ISTEX._source_title s))
ab
(fmap (pack . show) utctime)
pub_year
pub_month
pub_day
Nothing
Nothing
Nothing
(Just $ (pack . show) la)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment