packages feed

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

module Kafka.Settings.Internal
  ( Kafka.Types.KafkaLogLevel (..),
    Kafka.Types.KafkaCompressionCodec (..),
    decoderBrokerAddresses,
    decoderKafkaLogLevel,
    decoderCompressionCodec,
  )
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"
      }
    ( Environment.enum
        [ ("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)
        ]
    )

decoderCompressionCodec :: Environment.Decoder Kafka.Types.KafkaCompressionCodec
decoderCompressionCodec =
  Environment.variable
    Environment.Variable
      { Environment.name = "KAFKA_COMPRESSION_CODEC",
        Environment.description = "Compression codec used for topics. Supported values are: NoCopmression, Gzip, Snappy and Lz4",
        Environment.defaultValue = "Snappy"
      }
    ( Environment.enum
        [ ("NoCompression", Kafka.Types.NoCompression),
          ("Gzip", Kafka.Types.Gzip),
          ("Snappy", Kafka.Types.Snappy),
          ("Lz4", Kafka.Types.Lz4)
        ]
    )