Commit 1aa5379
feat(rust): Add RequestExecutor trait for CLI execution-sharing (#16282)
* feat(rust): Add RequestExecutor trait for CLI execution-sharing
Add RequestExecutor trait and HttpClient::with_executor() constructor
to enable CLI execution-sharing. When an external executor is injected,
the SDK delegates HTTP execution entirely — auth, headers, and retries
are handled by the caller's transport stack.
Also adds cliEmbedded config flag that skips model generation when the
SDK is embedded in a CLI binary.
* fix(rust): Update http_client snapshot for RequestExecutor changes
* fix(rust): Address review findings - restore Clone, fix base64 executor, fix cliEmbedded types
- Restore #[derive(Clone)] on HttpClient (needed for pagination code gen)
- Update BASE64_METHOD template to use send_request() instead of direct
apply_auth_headers/execute_with_retries (bypassed injected executor)
- Check cliEmbedded flag in generateApiModFile and generateLibFile to
avoid declaring mod types when type generation is skipped
* fix(rust): Preserve SSE header precedence over custom headers
Move SSE-specific headers (Accept: text/event-stream, Cache-Control: no-store)
after apply_custom_headers in the default path so they always take precedence,
matching the original ordering. In the executor path, SSE headers are applied
before delegation.
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>1 parent f23645b commit 1aa5379
411 files changed
Lines changed: 10429 additions & 5461 deletions
File tree
- generators/rust
- base/src
- asIs
- project
- sdk
- changes/unreleased
- src
- __test__/snapshots
- seed/rust-sdk
- accept-header
- .fern
- src/core
- alias-extends
- .fern
- src/core
- alias
- .fern
- src/core
- allof-inline
- .fern
- src/core
- allof
- .fern
- src/core
- any-auth
- .fern
- src/core
- api-wide-base-path-with-default
- .fern
- src/core
- api-wide-base-path
- .fern
- src/core
- audiences
- .fern
- src/core
- basic-auth-environment-variables
- .fern
- src/core
- basic-auth-pw-omitted
- .fern
- src/core
- basic-auth
- .fern
- src/core
- bearer-token-environment-variable
- .fern
- src/core
- bytes-download
- .fern
- src/core
- bytes-upload
- .fern
- src/core
- circular-references-advanced
- .fern
- src/core
- circular-references-extends
- .fern
- src/core
- circular-references
- .fern
- src/core
- cli-multi-spec-namespaced
- .fern
- src/core
- cli-multi-spec
- .fern
- src/core
- client-side-params
- .fern
- src/core
- content-type
- .fern
- src/core
- cross-package-type-names
- .fern
- src/core
- dollar-string-examples
- .fern
- src/core
- empty-clients
- .fern
- src/core
- endpoint-security-auth
- .fern
- src/core
- enum
- .fern
- src/core
- error-property
- .fern
- src/core
- errors
- .fern
- src/core
- examples
- no-custom-config
- .fern
- src/core
- readme-config
- .fern
- src/core
- exhaustive
- .fern
- src/core
- extends
- .fern
- src/core
- extra-properties
- .fern
- src/core
- file-download
- .fern
- src/core
- file-upload-openapi
- .fern
- src/core
- file-upload
- .fern
- src/core
- folders
- .fern
- src/core
- header-auth-environment-variable
- .fern
- src/core
- header-auth
- .fern
- src/core
- http-head
- .fern
- src/core
- idempotency-headers
- .fern
- src/core
- imdb
- imdb-custom-config
- .fern
- src/core
- imdb-custom-features
- .fern
- src/core
- imdb
- .fern
- src/core
- inferred-auth-explicit
- .fern
- src/core
- inferred-auth-implicit-api-key
- .fern
- src/core
- inferred-auth-implicit-no-expiry
- .fern
- src/core
- inferred-auth-implicit-reference
- .fern
- src/core
- inferred-auth-implicit
- .fern
- src/core
- license
- basic
- .fern
- src/core
- both-license-options
- .fern
- src/core
- custom-license-file
- .fern
- src/core
- empty-license-file
- .fern
- src/core
- literal-user-agent
- .fern
- src/core
- literals-unions
- .fern
- src/core
- literal
- .fern
- src/core
- mixed-case
- .fern
- src/core
- mixed-file-directory
- .fern
- src/core
- multi-line-docs
- .fern
- src/core
- multi-url-environment-no-default
- .fern
- src/core
- multi-url-environment-reference
- .fern
- src/core
- multi-url-environment
- .fern
- src/core
- multiple-request-bodies
- .fern
- src/core
- no-content-response
- .fern
- src/core
- no-environment
- .fern
- src/core
- no-retries
- .fern
- src/core
- null-type
- .fern
- src/core
- nullable-allof-extends
- .fern
- src/core
- nullable-optional
- .fern
- src/core
- nullable-request-body
- .fern
- src/core
- nullable
- .fern
- src/core
- oauth-client-credentials-custom
- .fern
- src/core
- oauth-client-credentials-default
- .fern
- src/core
- oauth-client-credentials-environment-variables
- .fern
- src/core
- oauth-client-credentials-mandatory-auth
- .fern
- src/core
- oauth-client-credentials-nested-root
- .fern
- src/core
- oauth-client-credentials-openapi
- .fern
- src/core
- oauth-client-credentials-reference
- .fern
- src/core
- oauth-client-credentials-with-variables
- .fern
- src/core
- oauth-client-credentials
- .fern
- src/core
- objects-with-imports
- .fern
- src/core
- object
- .fern
- src/core
- openapi-request-body-ref
- .fern
- src/core
- optional
- .fern
- src/core
- package-yml
- .fern
- src/core
- pagination-custom
- .fern
- src/core
- pagination-uri-path
- .fern
- src/core
- pagination
- .fern
- src/core
- path-parameters
- .fern
- src/core
- plain-text
- .fern
- src/core
- property-access
- .fern
- src/core
- public-object
- .fern
- src/core
- query-param-name-conflict
- .fern
- src/core
- query-parameters-openapi-as-objects
- .fern
- src/core
- query-parameters-openapi
- .fern
- src/core
- query-parameters
- .fern
- src/core
- request-parameters
- .fern
- src/core
- required-nullable
- .fern
- src/core
- reserved-keywords
- .fern
- src/core
- response-property
- .fern
- src/core
- schemaless-request-body-examples
- .fern
- src/core
- server-sent-event-examples/with-wire-tests
- .fern
- src/core
- server-sent-events-openapi
- .fern
- src/core
- server-sent-events-resumable
- .fern
- src/core
- server-sent-events/with-wire-tests
- .fern
- src/core
- server-url-templating
- .fern
- src/core
- simple-api
- basic-custom-config
- .fern
- src/core
- basic
- .fern
- src/core
- simple-fhir
- .fern
- src/core
- single-url-environment-default
- basic
- .fern
- src/core
- custom-environment
- .fern
- src/core
- full-custom
- .fern
- src/core
- single-url-environment-no-default
- .fern
- src/core
- streaming-parameter
- .fern
- src/core
- streaming
- .fern
- src/core
- trace
- .fern
- src/core
- undiscriminated-union-with-response-property
- .fern
- src/core
- undiscriminated-unions
- .fern
- src/core
- union-query-parameters
- .fern
- src/core
- unions-with-local-date
- .fern
- src/core
- unions
- .fern
- src/core
- unknown
- .fern
- src/core
- url-form-encoded
- .fern
- src/core
- validation
- .fern
- src/core
- variables
- .fern
- src/core
- version-no-default
- .fern
- src/core
- version
- .fern
- src/core
- webhook-audience
- .fern
- src/core
- webhooks
- .fern
- src/core
- websocket-bearer-auth
- .fern
- src/core
- websocket-inferred-auth
- .fern
- src/core
- websocket-multi-url
- .fern
- src/core
- websocket
- .fern
- src/core
- x-fern-default
- .fern
- src/core
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
103 | 131 | | |
104 | 132 | | |
105 | 133 | | |
| |||
124 | 152 | | |
125 | 153 | | |
126 | 154 | | |
| 155 | + | |
127 | 156 | | |
128 | 157 | | |
129 | 158 | | |
| |||
151 | 180 | | |
152 | 181 | | |
153 | 182 | | |
| 183 | + | |
154 | 184 | | |
155 | 185 | | |
156 | 186 | | |
157 | 187 | | |
158 | 188 | | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
159 | 210 | | |
160 | 211 | | |
161 | 212 | | |
| |||
199 | 250 | | |
200 | 251 | | |
201 | 252 | | |
202 | | - | |
203 | | - | |
204 | | - | |
205 | | - | |
| 253 | + | |
206 | 254 | | |
207 | | - | |
| 255 | + | |
208 | 256 | | |
209 | 257 | | |
210 | 258 | | |
| |||
218 | 266 | | |
219 | 267 | | |
220 | 268 | | |
221 | | - | |
| 269 | + | |
222 | 270 | | |
223 | 271 | | |
224 | 272 | | |
225 | 273 | | |
226 | | - | |
227 | 274 | | |
228 | 275 | | |
229 | 276 | | |
230 | 277 | | |
231 | | - | |
232 | 278 | | |
233 | 279 | | |
234 | 280 | | |
235 | 281 | | |
236 | 282 | | |
237 | 283 | | |
238 | | - | |
239 | 284 | | |
240 | 285 | | |
241 | 286 | | |
242 | 287 | | |
243 | | - | |
244 | | - | |
| 288 | + | |
245 | 289 | | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
| 290 | + | |
252 | 291 | | |
253 | 292 | | |
254 | 293 | | |
| |||
285 | 324 | | |
286 | 325 | | |
287 | 326 | | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
| 327 | + | |
292 | 328 | | |
293 | | - | |
| 329 | + | |
294 | 330 | | |
295 | 331 | | |
296 | 332 | | |
297 | | - | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
298 | 352 | | |
299 | 353 | | |
300 | 354 | | |
| |||
603 | 657 | | |
604 | 658 | | |
605 | 659 | | |
606 | | - | |
| 660 | + | |
607 | 661 | | |
608 | | - | |
609 | | - | |
610 | | - | |
611 | | - | |
612 | | - | |
613 | | - | |
| 662 | + | |
614 | 663 | | |
615 | 664 | | |
616 | 665 | | |
| |||
643 | 692 | | |
644 | 693 | | |
645 | 694 | | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
| 695 | + | |
650 | 696 | | |
651 | | - | |
| 697 | + | |
652 | 698 | | |
653 | 699 | | |
654 | 700 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
213 | | - | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
220 | | - | |
| 213 | + | |
221 | 214 | | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
228 | 232 | | |
229 | 233 | | |
230 | 234 | | |
| |||
270 | 274 | | |
271 | 275 | | |
272 | 276 | | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
| 277 | + | |
277 | 278 | | |
278 | | - | |
| 279 | + | |
279 | 280 | | |
280 | 281 | | |
281 | 282 | | |
| |||
296 | 297 | | |
297 | 298 | | |
298 | 299 | | |
299 | | - | |
300 | | - | |
| 300 | + | |
| 301 | + | |
301 | 302 | | |
302 | 303 | | |
303 | 304 | | |
| |||
358 | 359 | | |
359 | 360 | | |
360 | 361 | | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | 362 | | |
380 | 363 | | |
381 | 364 | | |
382 | 365 | | |
383 | 366 | | |
384 | 367 | | |
385 | 368 | | |
386 | | - | |
387 | | - | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
388 | 403 | | |
389 | 404 | | |
390 | 405 | | |
| |||
434 | 449 | | |
435 | 450 | | |
436 | 451 | | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
| 452 | + | |
442 | 453 | | |
443 | | - | |
444 | | - | |
| 454 | + | |
445 | 455 | | |
446 | 456 | | |
447 | 457 | | |
| |||
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
7 | 13 | | |
8 | 14 | | |
9 | 15 | | |
0 commit comments