]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Config.hs
[CLEAN] Metrics
[gargantext.git] / src / Gargantext / Config.hs
1 {-|
2 Module : Gargantext.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
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE TemplateHaskell #-}
13
14 module Gargantext.Config where
15
16 import System.IO (FilePath)
17 import Data.Ini (readIniFile, lookupValue)
18 import Data.Either.Extra (Either(Left, Right))
19 import Gargantext.Prelude
20 import Data.Text (Text, pack)
21 import GHC.Generics (Generic)
22 import Control.Lens (makeLenses)
23
24
25 data GargConfig = GargConfig { _gc_masteruser :: !Text
26 , _gc_secretkey :: !Text
27
28 , _gc_frame_write_url :: !Text
29 , _gc_frame_calc_url :: !Text
30
31 , _gc_frame_searx_url :: !Text
32 , _gc_frame_istex_url :: !Text
33 }
34 deriving (Generic)
35
36 makeLenses ''GargConfig
37
38
39 readConfig :: FilePath -> IO GargConfig
40 readConfig fp = do
41 ini <- readIniFile fp
42 let ini'' = case ini of
43 Left e -> panic (pack $ "No ini file error" <> show e)
44 Right ini' -> ini'
45
46 let val x = case (lookupValue (pack "gargantext") (pack x) ini'') of
47 Left _ -> panic (pack $ "no" <> x)
48 Right p' -> p'
49
50 pure $ GargConfig (val "MASTER_USER")
51 (val "SECRET_KEY")
52 (val "FRAME_WRITE_URL")
53 (val "FRAME_CALC_URL")
54 (val "FRAME_SEARX_URL")
55 (val "FRAME_ISTEX_URL")
56
57 defaultConfig :: GargConfig
58 defaultConfig = GargConfig "gargantua"
59 "secret"
60 "https://frame_write.url"
61 "https://frame_calc.url"
62 "https://frame_searx.url"
63 "https://frame_istex.url"