yam-0.7: src/Yam/Server.hs
module Yam.Server(
actuatorEndpoint
, ActuatorEndpoint
, ActuatorConfig(..)
) where
import Salak
import Servant
import Yam.App
import Yam.Logger
import Yam.Server.Health
import Yam.Server.Refresh
import Yam.Swagger
data ActuatorConfig = ActuatorConfig
{ enabled :: Bool
, refresh :: Bool
, health :: Bool
}
instance MonadCatch m => FromProp m ActuatorConfig where
fromProp = ActuatorConfig
<$> "enabled" .?= False
<*> "refresh.enabled" .?= True
<*> "health.enabled" .?= True
type ActuatorEndpoint = SwaggerTag "actuator" "Actuator API" :> "actuator" :>
( RefreshEndpoint
:<|> HealthEndpoint
)
actuatorEndpoint :: (HasSalaks cxt, HasLogger cxt) => IO HealthResult -> ActuatorConfig -> ServerT ActuatorEndpoint (AppV cxt IO)
actuatorEndpoint rr ActuatorConfig{..} = refreshEndpoint refresh :<|> healthEndpoint rr health