{"adoption": {"forks": 90, "observed_at": "2026-08-28T04:05:57.815914+00:00", "stars": 1946}, "canonical_url": "https://ross.abutalabs.com/products/responsedetective", "card": {"archived": false, "artifact_type": "library", "description": "Sherlock Holmes of the networking layer. :male_detective:", "domain": ["developer-tools", "web-development", "mobile-development"], "enriched": true, "function": ["http-client", "logging", "developer-tools", "middleware"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["netguru/ResponseDetective"], "name": "netguru/ResponseDetective", "platform": [], "pushed_at": "2023-10-24T16:37:13+00:00", "repo": "netguru/ResponseDetective", "stars": 1946, "tags": ["network-debugging", "urlprotocol", "request-interception", "http-traffic", "swift-framework", "debugging", "ios", "macos", "swift", "tvos"], "topics": ["swift", "ios", "tvos", "macos", "debugging"], "urls": [], "use_cases": ["debug http requests and responses in an ios app", "log network traffic from urlsession", "inspect request and response bodies during development", "intercept alamofire or afnetworking traffic", "troubleshoot api communication on ios"], "what_it_is": "ResponseDetective is a Swift framework that intercepts outgoing HTTP requests and incoming responses between an iOS, macOS, or tvOS app and its server for debugging purposes. It works non-intrusively by registering a custom URLProtocol in URLSessionConfiguration, logging headers and bodies to the console.", "when_to_avoid": ["you need a full network proxy or traffic inspector with a GUI like Charles or Proxyman", "your project targets platforms outside Apple's ecosystem", "you need actively developed tooling with frequent updates"], "when_to_choose": ["you develop iOS, macOS, or tvOS apps and need to see raw HTTP traffic", "you want a non-intrusive, code-light debugging layer for URLSession or Alamofire", "you prefer console-based request/response logging without a proxy"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/responsedetective", "repo": "netguru/ResponseDetective", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "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:05:57.815914+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.815914+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:07:21.100930+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6f1f3d90c6c532cc73f8bc7d24fb52cf8f5808f6e48781684b7b7efbcb562d2", "fetched_at": "2026-08-28T04:05:57.815914+00:00", "kind": "readme", "missing": false, "url": "https://github.com/netguru/ResponseDetective"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4110, "days_push": 1044, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}