2 Module : Gargantext.Prelude.Config
3 Description : Textmining Collaborative Platform
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE TemplateHaskell #-}
14 module Gargantext.Prelude.Config where
17 import System.IO (FilePath)
18 import Data.Ini (readIniFile, lookupValue)
19 import Data.Either.Extra (Either(Left, Right))
20 import Gargantext.Prelude
21 import Data.Text (Text, pack)
22 import GHC.Generics (Generic)
23 import Control.Lens (makeLenses)
26 data GargConfig = GargConfig { _gc_url :: !Text
27 , _gc_url_backend_api :: !Text
29 , _gc_masteruser :: !Text
30 , _gc_secretkey :: !Text
32 , _gc_datafilepath :: !FilePath
33 , _gc_repofilepath :: !FilePath
35 , _gc_frame_write_url :: !Text
36 , _gc_frame_calc_url :: !Text
38 , _gc_frame_searx_url :: !Text
39 , _gc_frame_istex_url :: !Text
41 , _gc_max_docs_scrapers :: !Integer
43 deriving (Generic, Show)
45 makeLenses ''GargConfig
47 readConfig :: FilePath -> IO GargConfig
50 let ini'' = case ini of
51 Left e -> panic (pack $ "gargantext.ini not found" <> show e)
54 let val x = case (lookupValue (pack "gargantext") (pack x) ini'') of
55 Left _ -> panic (pack $ "ERROR: add " <> x <> " to your gargantext.ini")
58 pure $ GargConfig (val "URL")
59 (val "URL_BACKEND_API")
62 (cs $ val "DATA_FILEPATH")
63 (cs $ val "REPO_FILEPATH")
64 (val "FRAME_WRITE_URL")
65 (val "FRAME_CALC_URL")
66 (val "FRAME_SEARX_URL")
67 (val "FRAME_ISTEX_URL")
68 (read $ cs $ val "MAX_DOCS_SCRAPERS")
70 defaultConfig :: GargConfig
71 defaultConfig = GargConfig "https://localhost"
72 "https://localhost:8008/api/v1.0"
77 "https://frame_write.url"
78 "https://frame_calc.url"
79 "https://frame_searx.url"
80 "https://frame_istex.url"