packages feed

opentelemetry-wai 0.5.3 → 0.6.0

raw patch · 2 files changed

+19/−16 lines, 2 filesdep ~opentelemetry

Dependency ranges changed: opentelemetry

Files

opentelemetry-wai.cabal view
@@ -2,7 +2,7 @@ name:                opentelemetry-wai description:         OpenTelemetry middleware for wai category:            OpenTelemetry-version: 0.5.3+version: 0.6.0 license-file:        LICENSE license:             Apache-2.0 author:              Dmitry Ivanov@@ -50,7 +50,7 @@   build-depends:     base >= 4.12 && < 5,     bytestring,-    opentelemetry >= 0.5.3,+    opentelemetry >= 0.6.0,     http-types,     text,     wai
src/OpenTelemetry/Network/Wai/Middleware.hs view
@@ -11,17 +11,20 @@ -- Semantic conventions for HTTP spans: -- https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md -middleware :: Application -> Application-middleware app = \req sendResp -> do-  withSpan "WAI handler" $ \sp -> do-    case propagateFromHeaders w3cTraceContext (requestHeaders req) of-      Just ctx -> setParentSpanContext sp ctx-      _ -> pure ()-    setTag sp "span.kind" "server"-    setTag sp "component" "http"-    setTag sp "http.method" $ requestMethod req-    setTag sp "http.target" $ rawPathInfo req-    setTag sp "http.flavor" $ BS8.pack $ show (httpVersion req)-    app req $ \resp -> do-      setTag sp "http.status_code" (BS8.pack $ show $ statusCode $ responseStatus resp)-      sendResp resp+mkMiddleware :: IO (Application -> Application)+mkMiddleware = do+  requestCounter <- mkCounter "requests"+  return $ \app req sendResp -> do+    withSpan "WAI handler" $ \sp -> do+      add requestCounter 1+      case propagateFromHeaders w3cTraceContext (requestHeaders req) of+        Just ctx -> setParentSpanContext sp ctx+        _ -> pure ()+      setTag sp "span.kind" "server"+      setTag sp "component" "http"+      setTag sp "http.method" $ requestMethod req+      setTag sp "http.target" $ rawPathInfo req+      setTag sp "http.flavor" $ BS8.pack $ show (httpVersion req)+      app req $ \resp -> do+        setTag sp "http.status_code" (BS8.pack $ show $ statusCode $ responseStatus resp)+        sendResp resp