From 07548290fe568723e8cb610ffc6869f2299de6ca Mon Sep 17 00:00:00 2001 From: Ben Guthro Date: Thu, 10 Aug 2023 08:56:29 -0400 Subject: [PATCH] Provide an alternate bindFlow signature, that accepts a Flow In an older version (prior to 1.6, I believe) - a version of bindFlow was provided, that allowed for definition of our own Flow. This adds this functionality back, as an alternate signature --- .../core/scaladsl/HttpMetricsServerBuilder.scala | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/fr/davit/akka/http/metrics/core/scaladsl/HttpMetricsServerBuilder.scala b/core/src/main/scala/fr/davit/akka/http/metrics/core/scaladsl/HttpMetricsServerBuilder.scala index e976a7d8..a56df365 100644 --- a/core/src/main/scala/fr/davit/akka/http/metrics/core/scaladsl/HttpMetricsServerBuilder.scala +++ b/core/src/main/scala/fr/davit/akka/http/metrics/core/scaladsl/HttpMetricsServerBuilder.scala @@ -23,7 +23,7 @@ import akka.http.scaladsl._ import akka.http.scaladsl.model.{HttpRequest, HttpResponse} import akka.http.scaladsl.server.Route import akka.http.scaladsl.settings.ServerSettings -import akka.stream.scaladsl.Source +import akka.stream.scaladsl.{Source, Flow} import akka.stream.{Materializer, SystemMaterializer} import fr.davit.akka.http.metrics.core.{HttpMetrics, HttpMetricsHandler} @@ -80,6 +80,19 @@ final case class HttpMetricsServerBuilder( )(materializer) } + @nowarn("msg=deprecated") + def bindFlow(flow: Flow[HttpRequest, HttpResponse, _]): Future[ServerBinding] = { + val meteredFlow = HttpMetrics.meterFlow(metricsHandler).join(flow) + http.bindAndHandle( + meteredFlow, + interface, + port, + context, + settings, + log + )(materializer) + } + @nowarn("msg=deprecated") def bind(route: Route): Future[ServerBinding] = { val handler = HttpMetrics.metricsRouteToFunction(route)(system)