feat(http): implement shared HTTP client (ClientWithMiddleware + retry + Retry-After, OQ-40)
Adds SharedHttpClient wrapping ArcSwap<ClientWithMiddleware> with a RetryTransientMiddleware + inlined RetryAfterMiddleware stack. HttpClientConfig covers pool, timeout, retry policy, and optional CA bundle/client cert. reload() rebuilds and swaps via ArcSwap. No env-var reads; credential injection is per-request, not at construction.
This commit is contained in:
11
Cargo.lock
generated
11
Cargo.lock
generated
@@ -105,9 +105,12 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"alknet-call",
|
||||
"alknet-core",
|
||||
"arc-swap",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"futures",
|
||||
"http",
|
||||
"httpdate",
|
||||
"hyper",
|
||||
"openapiv3",
|
||||
"reqwest 0.13.4",
|
||||
@@ -119,6 +122,7 @@ dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"url",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
@@ -3244,6 +3248,7 @@ version = "0.11.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e"
|
||||
dependencies = [
|
||||
"aws-lc-rs",
|
||||
"bytes",
|
||||
"fastbloom",
|
||||
"getrandom 0.3.4",
|
||||
@@ -3538,15 +3543,21 @@ dependencies = [
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-rustls",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"quinn",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"rustls-platform-verifier",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower-http",
|
||||
|
||||
Reference in New Issue
Block a user