(serviceName string, excludedRoutes map[string]interface{})
| 445 | }) |
| 446 | return rrw |
| 447 | } |
| 448 | |
| 449 | func putRRW(rrw *recordingResponseWriter) { |
| 450 | rrw.writer = nil |
| 451 | rrwPool.Put(rrw) |
| 452 | } |
| 453 | |
| 454 | func telemetryMiddleware(serviceName string, excludedRoutes map[string]interface{}) mux.MiddlewareFunc { |
| 455 | otelMW := otelmux.Middleware(serviceName) |
| 456 | return func(next http.Handler) http.Handler { |
| 457 | return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { |
| 458 | route := mux.CurrentRoute(r) |
| 459 | var spanName string |
| 460 | if route != nil { |
| 461 | var err error |
| 462 | spanName, err = route.GetPathTemplate() |
| 463 | if err != nil { |
| 464 | spanName, err = route.GetPathRegexp() |
| 465 | if err != nil { |
| 466 | spanName = "" |
| 467 | } |
| 468 | } |
| 469 | } |
| 470 | |
| 471 | // Check if the route is excluded if so skip the otel middleware |
| 472 | if _, ok := excludedRoutes[spanName]; ok { |
| 473 | next.ServeHTTP(rw, r) |
| 474 | } else { |
| 475 | // route is not excluded call the httpmiddleware |
| 476 | otelMW(next).ServeHTTP(rw, r) |
no test coverage detected