Capabilities: implement HTTP client, rate limiting, and downloads #54
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objective
Implement HttpCapsClient, caps categories/rate limiter, download deduplication/progress/cancellation, and bounded HTTP behavior.
Deliverables
Validation
Prerequisite
Wire codegen and the foundational implementation milestones are complete; the fixed API/test gates remain authoritative.
Project constraints
Implemented in commit
3032b16. Added native Rust HttpCapsClient with injected reqwest/fake-handler backends, rustls transport, bounded redirects/concurrency/request/response/decompression, streaming upload/download progress, LLSD content types, gzip/deflate, cancellation, non-HTTP rejection, and redacted diagnostics. Added deterministic per-category FIFO token buckets with the reference defaults and cap-name mappings. Added the bounded DownloadManager with canonical-URI deduplication, shared cancellation/progress, external completion sources, retries/backoff, permanent-status handling, and deterministic shutdown. Integrated both services into GridClient and regenerated API shims/coverage; documented policy and injection seams. Verification: cargo test -p libremetaverse --test caps_http (11 passed); translated queue_download tests (3 passed); translated non-HTTP Location test (1 passed); libremetaverse-types (48 passed); GridClient core tests (3 passed); cargo clippy -p libremetaverse --all-targets --locked --offline -- -D warnings; cargo check --workspace --all-targets --locked --offline -j 1; mapping/shim/coverage checks; locked API consumer check; rustdoc with warnings denied. The unrelated pre-created live/future-milestone tests still fail only at their explicitly unimplemented manager APIs and were not changed under this issue.