
trace4cats.dynamic.http4s.SamplerHttpRoutes.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trace4cats-dynamic-sampling-http4s_3 Show documentation
Show all versions of trace4cats-dynamic-sampling-http4s_3 Show documentation
trace4cats-dynamic-sampling-http4s
package trace4cats.dynamic.http4s
import cats.effect.kernel.{Resource, Temporal}
import cats.syntax.flatMap._
import org.http4s.HttpRoutes
import org.http4s.circe.CirceEntityCodec._
import org.http4s.dsl.Http4sDsl
import trace4cats.dynamic.config.{ConfiguredHotSwapSpanSampler, SamplerConfig}
import trace4cats.dynamic.http4s.SamplerConfigCodec._
import trace4cats.kernel.SpanSampler
object SamplerHttpRoutes {
def create[F[_]: Temporal](
initialConfig: SamplerConfig = SamplerConfig.Never
): Resource[F, (SpanSampler[F], HttpRoutes[F])] =
ConfiguredHotSwapSpanSampler[F](initialConfig).map { sampler =>
object dsl extends Http4sDsl[F]
import dsl._
(
sampler,
HttpRoutes.of[F] {
case GET -> Root / "config" => Ok(sampler.getConfig)
case req @ POST -> Root / "config" => Accepted(req.as[SamplerConfig].flatMap(sampler.updateConfig))
case POST -> Root / "killswitch" => Ok(sampler.updateConfig(SamplerConfig.Never))
}
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy