(WIP) ekump/APMSP-2516 implement http common component#1624
(WIP) ekump/APMSP-2516 implement http common component#1624
Conversation
Clippy Allow Annotation ReportComparing clippy allow annotations between branches:
Summary by Rule
Annotation Counts by File
Annotation Stats by Crate
About This ReportThis report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality. |
📚 Documentation Check Results📦
|
🔒 Cargo Deny Results✅ No issues found! 📦
|
919247e to
0c989d9
Compare
BenchmarksComparisonBenchmark execution time: 2026-02-25 13:01:23 Comparing candidate commit 0a1ac56 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 57 metrics, 2 unstable metrics. CandidateCandidate benchmark detailsGroup 1
Group 2
Group 3
Group 4
Group 5
Group 6
Group 7
Group 8
Group 9
Group 10
Group 11
Group 12
Group 13
Group 14
Group 15
Group 16
Group 17
Group 18
Group 19
BaselineOmitted due to size. |
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1624 +/- ##
==========================================
+ Coverage 71.19% 71.34% +0.14%
==========================================
Files 423 430 +7
Lines 62486 62863 +377
==========================================
+ Hits 44489 44848 +359
- Misses 17997 18015 +18
🚀 New features to boost your workflow:
|
85020c6 to
8420021
Compare
New HTTP client crate for use by external language clients via FFI. Defines HttpClient, HttpRequest, HttpResponse, HttpClientError, and a builder API with configurable timeout, transport, and retry.
ReqwestBackend sends requests via reqwest::Client with connection pooling, error mapping, and per-request timeout. Integration tests cover HTTP round-trips, timeout behavior, and connection pooling.
Builder API supports unix_socket() and windows_named_pipe() for platform-specific transports. FIPS TLS via rustls-no-provider with init_fips_crypto() helper for callers to install the crypto provider.
Opt-in retry via RetryConfig on the builder. Supports configurable max retries, initial delay, exponential backoff, and jitter. All errors except InvalidConfig are retried.
9093e6a to
5570b43
Compare
|
✨ Fix all issues with BitsAI or with Cursor
|
|
It might make sense to tie this into the ddcommon |
Add MultipartPart type and multipart_parts field on HttpRequest. When parts are present, the request is sent as multipart/form-data with reqwest handling Content-Type and boundary automatically. Setting both multipart parts and a body returns an error.
Add a hyper-backend feature as a lighter alternative to reqwest-backend for consumers where binary size matters. The hyper backend uses libdd-common's Connector and a new shared multipart encoder in libdd-common. CI runs tests against both backends.
5570b43 to
c1327a8
Compare
|
@danielsn @brettlangdon did mention that it would be nice if there was an "agent client". I think it makes sense. We can build that on top of this generic http client. I assume we'll be able to extract logic in Endpoint so it's shared (or just use it directly). |
When both reqwest-backend and hyper-backend are enabled (e.g. CI with --all-features), reqwest takes precedence. Hyper backend only activates when reqwest-backend is not enabled.
What does this PR do?
A generic HTTP client that can be used by other languages.
NOTE: This PR will be updated to work with the shared runtime component as soon as it lands before being ready for proper review because 🍴
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
How to test the change?
Describe here in detail how the change can be validated.