2 Module : Gargantext.Core.Text.Corpus.API.Hal
3 Description : Pubmed API connection
4 Copyright : (c) CNRS, 2017
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
13 module Gargantext.Core.Text.Corpus.API.Hal
17 import Data.Text (Text, pack, intercalate)
19 import Gargantext.Core (Lang(..))
20 import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument(..))
21 import Gargantext.Prelude
22 import qualified Gargantext.Core.Text.Corpus.Parsers.Date as Date
23 import qualified HAL as HAL
24 import qualified HAL.Client as HAL
25 import qualified HAL.Doc.Corpus as HAL
27 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
29 docs <- HAL.getMetadataWith q (fromIntegral <$> ml)
30 either (panic . pack . show) (\d -> mapM (toDoc' la) $ HAL._docs d) docs
32 toDoc' :: Lang -> HAL.Corpus -> IO HyperdataDocument
33 toDoc' la (HAL.Corpus i t ab d s aus affs) = do
34 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") Just d)
35 pure $ HyperdataDocument (Just "Hal")
36 (Just $ pack $ show i)
41 (Just $ intercalate " " t)
42 (Just $ foldl (\x y -> x <> ", " <> y) "" aus)
43 (Just $ foldl (\x y -> x <> ", " <> y) "" affs)
44 (Just $ maybe "Nothing" identity s)
45 (Just $ intercalate " " ab)
46 (fmap (pack . show) utctime)
53 (Just $ (pack . show) la)