packages feed

nri-kafka-0.1.0.0: src/Kafka/Settings/Internal.hs

module Kafka.Settings.Internal
  ( Kafka.Types.KafkaLogLevel (..),
    decoderBrokerAddresses,
    decoderKafkaLogLevel,
  )
where

import qualified Environment
import qualified Kafka.Types

decoderBrokerAddresses :: Environment.Decoder [Kafka.Types.BrokerAddress]
decoderBrokerAddresses =
  Environment.variable
    Environment.Variable
      { Environment.name = "KAFKA_BROKER_ADDRESSES",
        Environment.description = "A comma-separated list of broker addresses",
        Environment.defaultValue = "localhost:9092"
      }
    (map (List.map Kafka.Types.BrokerAddress << Text.split ",") Environment.text)

decoderKafkaLogLevel :: Environment.Decoder Kafka.Types.KafkaLogLevel
decoderKafkaLogLevel =
  Environment.variable
    Environment.Variable
      { Environment.name = "KAFKA_LOG_LEVEL",
        Environment.description = "Kafka log level",
        Environment.defaultValue = "Debug"
      }
    (map kafkaLogLevelFromText Environment.text)

kafkaLogLevelFromText :: Text -> Kafka.Types.KafkaLogLevel
kafkaLogLevelFromText text =
  case text of
    "Emerg" -> Kafka.Types.KafkaLogEmerg
    "Alert" -> Kafka.Types.KafkaLogAlert
    "Crit" -> Kafka.Types.KafkaLogCrit
    "Err" -> Kafka.Types.KafkaLogErr
    "Warning" -> Kafka.Types.KafkaLogWarning
    "Notice" -> Kafka.Types.KafkaLogNotice
    "Info" -> Kafka.Types.KafkaLogInfo
    "Debug" -> Kafka.Types.KafkaLogDebug
    _ -> Kafka.Types.KafkaLogDebug