]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Core/Text/Corpus/API/Hal.hs
[FIX] merge + option for easy compilation of Gargantext.Client
[gargantext.git] / src / Gargantext / Core / Text / Corpus / API / Hal.hs
1 {-|
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
8 Portability : POSIX
9
10 -}
11
12 module Gargantext.Core.Text.Corpus.API.Hal
13 where
14
15 import Data.Maybe
16 import Data.Text (Text, pack, intercalate)
17
18 import Gargantext.Core (Lang(..))
19 import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument(..))
20 import Gargantext.Prelude
21 import qualified Gargantext.Core.Text.Corpus.Parsers.Date as Date
22 import qualified HAL as HAL
23 import qualified HAL.Client as HAL
24 import qualified HAL.Doc.Corpus as HAL
25
26 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
27 get la q ml = do
28 docs <- HAL.getMetadataWith q (Just 0) (fromIntegral <$> ml)
29 either (panic . pack . show) (\d -> mapM (toDoc' la) $ HAL._docs d) docs
30
31 toDoc' :: Lang -> HAL.Corpus -> IO HyperdataDocument
32 toDoc' la (HAL.Corpus i t ab d s aus affs struct_id) = do
33 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") Just d)
34 pure $ HyperdataDocument { _hd_bdd = Just "Hal"
35 , _hd_doi = Just $ pack $ show i
36 , _hd_url = Nothing
37 , _hd_uniqId = Nothing
38 , _hd_uniqIdBdd = Nothing
39 , _hd_page = Nothing
40 , _hd_title = Just $ intercalate " " t
41 , _hd_authors = Just $ foldl (\x y -> x <> ", " <> y) "" aus
42 , _hd_institutes = Just $ foldl (\x y -> x <> ", " <> y) "" $ affs <> map (cs . show) struct_id
43 , _hd_source = Just $ maybe "Nothing" identity s
44 , _hd_abstract = Just $ intercalate " " ab
45 , _hd_publication_date = fmap (pack . show) utctime
46 , _hd_publication_year = pub_year
47 , _hd_publication_month = pub_month
48 , _hd_publication_day = pub_day
49 , _hd_publication_hour = Nothing
50 , _hd_publication_minute = Nothing
51 , _hd_publication_second = Nothing
52 , _hd_language_iso2 = Just $ (pack . show) la }
53