2 Module : Gargantext.Text.Corpus.API.Istex
3 Description : Pubmed API connection
4 Copyright : (c) CNRS, 2017
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE NoImplicitPrelude #-}
13 {-# LANGUAGE OverloadedStrings #-}
15 module Gargantext.Text.Corpus.API.Istex
18 import Data.Either (either)
20 import Data.List (concat)
21 import Data.Maybe (catMaybes)
22 import Data.Text (Text, pack)
23 import Gargantext.Prelude
24 import Gargantext.Core (Lang(..))
25 import qualified Gargantext.Text.Corpus.Parsers.Date as Date
26 import Gargantext.Database.Types.Node (HyperdataDocument(..))
28 import qualified ISTEX as ISTEX
29 import qualified ISTEX.Client as ISTEX
31 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
33 docs <- ISTEX.getMetadataWith q (fromIntegral <$> ml)
34 either (panic . pack . show) (toDoc' la) docs
36 toDoc' :: Lang -> ISTEX.Documents -> IO [HyperdataDocument]
38 --printDebug "ISTEX" (ISTEX._documents_total docs')
39 mapM (toDoc la) (ISTEX._documents_hits docs')
41 -- | TODO remove dateSplit here
42 -- TODO current year as default
43 toDoc :: Lang -> ISTEX.Document -> IO HyperdataDocument
44 toDoc la (ISTEX.Document i t a ab d s) = do
45 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") (Just . pack . show) d)
46 pure $ HyperdataDocument (Just "Istex")
53 (Just $ foldl (\x y -> x <> ", " <> y) "" (map ISTEX._author_name a))
54 (Just $ foldl (\x y -> x <> ", " <> y) "" (concat $ (map ISTEX._author_affiliations) a))
55 (Just $ foldl (\x y -> x <> ", " <> y) "" (catMaybes $ map ISTEX._source_title s))
57 (fmap (pack . show) utctime)
64 (Just $ (pack . show) la)