yam-0.6.1: src/Yam/Server.hs
module Yam.Server(
actuatorEndpoint
, ActuatorEndpoint
) where
import Salak
import Servant
import Yam.App
import Yam.Logger
import Yam.Prelude
import Yam.Server.Health
import Yam.Server.Refresh
import Yam.Swagger
data ActuatorConfig = ActuatorConfig
{ enabled :: Bool
, refresh :: Bool
, health :: Bool
}
instance FromProp ActuatorConfig where
fromProp = ActuatorConfig
<$> "enabled" .?= False
<*> "refresh.enabled" .?= True
<*> "health.enabled" .?= True
type ActuatorEndpoint = SwaggerTag "actuator" "Actuator API" :> "actuator" :>
( RefreshEndpoint
:<|> HealthEndpoint
)
endpoint :: HasLogger cxt => ActuatorConfig -> IO HealthResult -> IO ReloadResult -> ServerT ActuatorEndpoint (AppV cxt IO)
endpoint ActuatorConfig{..} hr rr = refreshEndpoint rr refresh :<|> healthEndpoint hr health
actuatorEndpoint :: HasLogger cxt => IO HealthResult -> RunSalak (Bool, ServerT ActuatorEndpoint (AppV cxt IO))
actuatorEndpoint hr = do
ac@ActuatorConfig{..} <- require "actuator"
(enabled,) <$> liftSalak (exec $ return . endpoint ac hr)