]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Text/Corpus/API/Istex.hs
[DB/Errors] DoesNotExist Node error (todo remove useless errors type).
[gargantext.git] / src / Gargantext / Text / Corpus / API / Istex.hs
1 {-|
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
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE NoImplicitPrelude #-}
13 {-# LANGUAGE OverloadedStrings #-}
14
15 module Gargantext.Text.Corpus.API.Istex
16 where
17
18 import Data.Either (either)
19 import Data.List (concat)
20 import Data.Maybe
21 import Data.Maybe (catMaybes)
22 import Data.Text (Text, pack)
23 import Gargantext.Core (Lang(..))
24 import Gargantext.Database.Admin.Types.Node (HyperdataDocument(..))
25 import Gargantext.Prelude
26 import qualified Gargantext.Text.Corpus.Parsers.Date as Date
27 import qualified ISTEX as ISTEX
28 import qualified ISTEX.Client as ISTEX
29
30 get :: Lang -> Text -> Maybe Integer -> IO [HyperdataDocument]
31 get la q ml = do
32 docs <- ISTEX.getMetadataWith q (fromIntegral <$> ml)
33 either (panic . pack . show) (toDoc' la) docs
34
35 toDoc' :: Lang -> ISTEX.Documents -> IO [HyperdataDocument]
36 toDoc' la docs' = do
37 --printDebug "ISTEX" (ISTEX._documents_total docs')
38 mapM (toDoc la) (ISTEX._documents_hits docs')
39
40 -- | TODO remove dateSplit here
41 -- TODO current year as default
42 toDoc :: Lang -> ISTEX.Document -> IO HyperdataDocument
43 toDoc la (ISTEX.Document i t a ab d s) = do
44 (utctime, (pub_year, pub_month, pub_day)) <- Date.dateSplit la (maybe (Just "2019") (Just . pack . show) d)
45 pure $ HyperdataDocument (Just "Istex")
46 (Just i)
47 Nothing
48 Nothing
49 Nothing
50 Nothing
51 t
52 (Just $ foldl (\x y -> x <> ", " <> y) "" (map ISTEX._author_name a))
53 (Just $ foldl (\x y -> x <> ", " <> y) "" (concat $ (map ISTEX._author_affiliations) a))
54 (Just $ foldl (\x y -> x <> ", " <> y) "" (catMaybes $ map ISTEX._source_title s))
55 ab
56 (fmap (pack . show) utctime)
57 pub_year
58 pub_month
59 pub_day
60 Nothing
61 Nothing
62 Nothing
63 (Just $ (pack . show) la)