Files
httpx/CLAUDE.md
Aleksey Shakhmatov 6b901c931e
All checks were successful
CI / test (push) Successful in 1m7s
Add CLAUDE.md and Gitea CI workflow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:06:30 +03:00

1.3 KiB

CLAUDE.md — httpx

Commands

go build ./...                          # compile
go test ./...                           # all tests
go test -race ./...                     # tests with race detector
go test -v -run TestName ./package/     # single test
go vet ./...                            # static analysis

Architecture

  • Module: git.codelab.vc/pkg/httpx, Go 1.24, zero external dependencies
  • Core pattern: middleware is func(http.RoundTripper) http.RoundTripper
  • Chain assembly order (client.go): Logging → User MW → Retry → CB → Balancer → Transport
    • Retry wraps CB+Balancer so each attempt can hit a different endpoint
  • Circuit breaker is per-host (sync.Map of host → Breaker)
  • Sentinel errors: canonical values live in sub-packages, root package re-exports as aliases
  • balancer.Transport returns (Middleware, *Closer) — Closer must be tracked for health checker shutdown
  • Client.Close() stops the health checker goroutine

Conventions

  • Functional options for all configuration
  • Test helpers: mockTransport(fn) wrapping middleware.RoundTripperFunc
  • No external test frameworks — stdlib only
  • Thread safety required (sync.Mutex/atomic)
  • internal/clock for deterministic time testing