packages feed

legion-discovery-0.3.0.2: src/Network/Legion/Discovery/Config.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{- |
  This module contains the configuration data structures.
-}
module Network.Legion.Discovery.Config (
  Config(..),
) where

import Canteven.Log.MonadLog (LoggingConfig)
import Data.Aeson (FromJSON, Value(Object), (.:), parseJSON)
import GHC.Generics (Generic)
import Network.Wai.Handler.Warp (Port)


data Config = Config {
    servicePort :: Port,
        ekgPort :: Port,
        logging :: LoggingConfig
  } deriving (Generic)

instance FromJSON Config where
  parseJSON v@(Object config) = Config
    <$> config .: "servicePort"
    <*> config .: "ekgPort"
    <*> parseJSON v
  parseJSON value =
    fail $ "Couldn't parse config from " ++ show value