]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Text/Corpus/API/Hal.hs
[API|Query] WIP need to fit query with frontend
[gargantext.git] / src / Gargantext / Text / Corpus / API / Hal.hs
1 {-|
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
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE NoImplicitPrelude #-}
13 {-# LANGUAGE OverloadedStrings #-}
14
15 module Gargantext.Text.Corpus.API.Hal
16 where
17
18 import Data.Maybe
19 import Data.Text (Text, pack, intercalate)
20 import Gargantext.Core (Lang(..))
21 import Gargantext.Database.Admin.Types.Node (HyperdataDocument(..))
22 import Gargantext.Prelude
23 import qualified Gargantext.Text.Corpus.Parsers.Date as Date
24 import qualified HAL as HAL
25 import qualified HAL.Client as HAL
26 import qualified HAL.Doc.Corpus as HAL
27
28 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
29 get la q ml = do
30 docs <- HAL.getMetadataWith q (fromIntegral <$> ml)
31 either (panic . pack . show) (\d -> mapM (toDoc' la) $ HAL._docs d) docs
32
33 toDoc' :: Lang -> HAL.Corpus -> IO HyperdataDocument
34 toDoc' la (HAL.Corpus i t ab d s aus affs) = do
35 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") Just d)
36 pure $ HyperdataDocument (Just "Hal")
37 (Just $ pack $ show i)
38 Nothing
39 Nothing
40 Nothing
41 Nothing
42 (Just $ intercalate " " t)
43 (Just $ foldl (\x y -> x <> ", " <> y) "" aus)
44 (Just $ foldl (\x y -> x <> ", " <> y) "" affs)
45 (Just $ maybe "Nothing" identity s)
46 (Just $ intercalate " " ab)
47 (fmap (pack . show) utctime)
48 pub_year
49 pub_month
50 pub_day
51 Nothing
52 Nothing
53 Nothing
54 (Just $ (pack . show) la)
55