{"adoption": {"forks": 48, "observed_at": "2026-08-28T04:03:49.994494+00:00", "stars": 1165}, "canonical_url": "https://ross.abutalabs.com/products/httpsnoop", "card": {"archived": false, "artifact_type": "library", "description": "Package httpsnoop provides an easy way to capture http related metrics (i.e. response time, bytes written, and http status code) from your application's http.Handlers.", "domain": ["web-development", "backend", "developer-tools", "monitoring"], "enriched": true, "function": ["monitoring", "middleware", "http-server"], "health_score": 91, "homepage": "https://godoc.org/github.com/felixge/httpsnoop", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["felixge/httpsnoop"], "name": "felixge/httpsnoop", "platform": ["go", "windows", "cross-platform"], "pushed_at": "2026-06-11T18:43:45+00:00", "repo": "felixge/httpsnoop", "stars": 1165, "tags": ["http-metrics", "responsewriter-wrapper", "request-logging", "instrumentation", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["capture http status code from a handler in go", "log response time and bytes written per request", "instrument go http handlers with metrics middleware", "wrap http.ResponseWriter without breaking Flusher or Hijacker", "add request logging middleware to a go web server"], "what_it_is": "A small Go library that captures HTTP metrics (response time, bytes written, status code) from http.Handlers by safely wrapping http.ResponseWriter. It preserves optional interfaces like Flusher, Hijacker, and Pusher to avoid subtle bugs.", "when_to_avoid": ["you use a web framework that already provides built-in metrics middleware", "you need full APM/tracing rather than simple request metrics", "your handlers add custom interfaces to ResponseWriter that httpsnoop cannot detect"], "when_to_choose": ["you need per-request metrics in a Go net/http app with minimal dependencies", "naive ResponseWriter wrapping is breaking interfaces like http.Flusher or http.Hijacker", "you want a tiny, stable, widely-used library (700+ importers)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/httpsnoop", "repo": "felixge/httpsnoop", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.994494+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:29:21.433484+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d17362d80df83ba3f10e820d6256fc177005bdc150e197816645e5dd5834c6e3", "fetched_at": "2026-08-28T04:03:49.994494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/felixge/httpsnoop"}, {"content_hash": "409e5c27a896dfeb07fb36eefe363875576cce9a4ee9b0d66387e8443386691d", "fetched_at": "2026-08-29T12:35:19.786579+00:00", "kind": "homepage", "missing": false, "url": "https://godoc.org/github.com/felixge/httpsnoop"}, {"content_hash": "75785202787982b0473b4d3670a3a27d75ac579d845d284ac1c5eb57ab52ce15", "fetched_at": "2026-08-29T12:35:19.791745+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/about"}, {"content_hash": "896e6922874105b89012a3e5084affb7899ac70ac0372372f967a5d909d41c50", "fetched_at": "2026-08-29T12:35:19.789635+00:00", "kind": "site_page", "missing": false, "url": "https://pkg.go.dev/github.com/felixge/httpsnoop"}, {"content_hash": "d5ca00bb378b3176005edcb1536e3eac5a43d18a9370fe9acade241faac7a003", "fetched_at": "2026-08-29T12:35:19.793597+00:00", "kind": "site_page", "missing": false, "url": "https://go.dev/project"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 87, "longevity": 100, "rhythm": 56}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3584, "days_push": 83, "days_rel": 83, "gap_med": null, "n_releases_24m": 1}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}