packages feed

prodapi-proxy-0.1.0.0: src/Prod/Proxy/Compat.hs

module Prod.Proxy.Compat where

import qualified Data.Text.Encoding as Text

import qualified Prod.Healthcheck as Healthcheck
import Prod.Proxy.Base
import Prod.Proxy.Lookups
import qualified Prometheus as Prometheus

-- | Generate a list of healthy backends from an health-checked result.
pickHealthy :: Healthcheck.SummaryMap -> [(Host, Port)]
pickHealthy =
    fmap adapt . Healthcheck.healthyKeys
  where
    adapt (hcHost, port) = (Text.encodeUtf8 hcHost, port)

-- | Count successful lookups.
countWith :: Prometheus.Counter -> LookupHostPort -> LookupHostPort
countWith cnt l1 = decorateSuccessWith (const $ Prometheus.incCounter cnt) l1