2 Module : Gargantext.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
12 {-# LANGUAGE NoImplicitPrelude #-}
13 {-# LANGUAGE OverloadedStrings #-}
15 module Gargantext.Text.Corpus.API.Hal
19 import Data.Text (Text, pack, intercalate)
21 import Gargantext.Core (Lang(..))
22 import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument(..))
23 import Gargantext.Prelude
24 import qualified Gargantext.Text.Corpus.Parsers.Date as Date
25 import qualified HAL as HAL
26 import qualified HAL.Client as HAL
27 import qualified HAL.Doc.Corpus as HAL
29 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
31 docs <- HAL.getMetadataWith q (fromIntegral <$> ml)
32 either (panic . pack . show) (\d -> mapM (toDoc' la) $ HAL._docs d) docs
34 toDoc' :: Lang -> HAL.Corpus -> IO HyperdataDocument
35 toDoc' la (HAL.Corpus i t ab d s aus affs) = do
36 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") Just d)
37 pure $ HyperdataDocument (Just "Hal")
38 (Just $ pack $ show i)
43 (Just $ intercalate " " t)
44 (Just $ foldl (\x y -> x <> ", " <> y) "" aus)
45 (Just $ foldl (\x y -> x <> ", " <> y) "" affs)
46 (Just $ maybe "Nothing" identity s)
47 (Just $ intercalate " " ab)
48 (fmap (pack . show) utctime)
55 (Just $ (pack . show) la)