Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
544806d
feat(fetch_azure): adapt fetch HttpClient to Azure's HttpClient
martintmk Jun 12, 2026
7ed5355
docs(fetch_azure): reword header doc comment to satisfy spellcheck
martintmk Jun 12, 2026
4c9ba17
refactor(fetch_azure): build then execute, add empty-body fast path
martintmk Jun 12, 2026
3cbd1f6
docs(fetch_azure): add azure_transport usage example
martintmk Jun 12, 2026
122c195
test(fetch_azure): cover request/response error and edge paths
martintmk Jun 12, 2026
2cbec10
feat(fetch_azure): add SpawnerRuntime and switch to azure_core
martintmk Jun 12, 2026
1d49289
refactor(fetch_azure): sleep on a tick::Clock
martintmk Jun 12, 2026
52da8d7
refactor(fetch_azure): rename FetchHttpClient to AzureHttpClient
martintmk Jun 12, 2026
18525b2
refactor(fetch_azure): replace new_http_client with From conversions
martintmk Jun 12, 2026
b46b402
refactor(fetch_azure): split modules and fix runtime cancellation
martintmk Jun 12, 2026
66a1072
refactor(fetch_azure): trim public API and split tests
martintmk Jun 12, 2026
f29f42f
feat(fetch_azure): implement azure_identity::Executor for Runtime
martintmk Jun 12, 2026
1796294
fix(fetch_azure): make blob_list example no-op without endpoint
martintmk Jun 12, 2026
cb9f804
test(fetch_azure): fix mutation-testing gaps
martintmk Jun 12, 2026
d1aaa8f
refactor(fetch_azure): move runtime and executor to anyspawn_azure crate
martintmk Jun 12, 2026
e20387b
fix(fetch_azure): drop broken intra-doc link to anyspawn
martintmk Jun 12, 2026
54223e0
refactor: depend on typespec_client_core directly instead of azure_core
martintmk Jun 12, 2026
d3ff6f6
refactor(fetch_azure): rename AzureHttpClient to HttpClient
martintmk Jun 12, 2026
4412e9e
feat(anyspawn_azure): add From<Runtime> for Arc<dyn Executor>
martintmk Jun 12, 2026
60af619
docs(fetch): enable doc_cfg feature on docs.rs builds
martintmk Jun 12, 2026
d65f613
test: exclude tokio-backed integration tests from Miri
martintmk Jun 12, 2026
3438550
test: allow missing_docs in Miri-gated test files
martintmk Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .spelling
Original file line number Diff line number Diff line change
Expand Up @@ -593,3 +593,10 @@ deterministically
dereferences
honour
MPSC
Azure
SDK
TypeSpec
typespec
Seekable
Spawner
awaitable
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Please see each crate's change log below:

- [`anyspawn`](./crates/anyspawn/CHANGELOG.md)
- [`anyspawn_azure`](./crates/anyspawn_azure/CHANGELOG.md)
- [`bytesbuf`](./crates/bytesbuf/CHANGELOG.md)
- [`bytesbuf_io`](./crates/bytesbuf_io/CHANGELOG.md)
- [`cachet`](./crates/cachet/CHANGELOG.md)
Expand All @@ -13,6 +14,7 @@ Please see each crate's change log below:
- [`data_privacy_macros`](./crates/data_privacy_macros/CHANGELOG.md)
- [`data_privacy_macros_impl`](./crates/data_privacy_macros_impl/CHANGELOG.md)
- [`fetch`](./crates/fetch/CHANGELOG.md)
- [`fetch_azure`](./crates/fetch_azure/CHANGELOG.md)
- [`fetch_hyper`](./crates/fetch_hyper/CHANGELOG.md)
- [`fetch_options`](./crates/fetch_options/CHANGELOG.md)
- [`fetch_tls`](./crates/fetch_tls/CHANGELOG.md)
Expand Down
214 changes: 214 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ homepage = "https://github.com/microsoft/oxidizer"

# local dependencies
anyspawn = { path = "crates/anyspawn", default-features = false, version = "0.5.3" }
anyspawn_azure = { path = "crates/anyspawn_azure", default-features = false, version = "0.1.0" }
bytesbuf = { path = "crates/bytesbuf", default-features = false, version = "0.5.3" }
bytesbuf_io = { path = "crates/bytesbuf_io", default-features = false, version = "0.5.4" }
cachet = { path = "crates/cachet", default-features = false, version = "0.6.6" }
Expand All @@ -35,6 +36,7 @@ data_privacy_core = { path = "crates/data_privacy_core", default-features = fals
data_privacy_macros = { path = "crates/data_privacy_macros", default-features = false, version = "0.10.1" }
data_privacy_macros_impl = { path = "crates/data_privacy_macros_impl", default-features = false, version = "0.10.1" }
fetch = { path = "crates/fetch", default-features = false, version = "0.11.0" }
fetch_azure = { path = "crates/fetch_azure", default-features = false, version = "0.1.0" }
fetch_hyper = { path = "crates/fetch_hyper", default-features = false, version = "0.4.0" }
fetch_options = { path = "crates/fetch_options", default-features = false, version = "0.2.1" }
fetch_tls = { path = "crates/fetch_tls", default-features = false, version = "0.2.2" }
Expand Down Expand Up @@ -66,6 +68,10 @@ allocator-api2 = { version = "0.4.0", default-features = false }
anyhow = { version = "1.0.100", default-features = false }
argh = { version = "0.1.13", default-features = false }
async-once-cell = { version = "0.5.0", default-features = false }
async-trait = { version = "0.1.89", default-features = false }
azure_core = { version = "1.0.0", default-features = false }
azure_identity = { version = "1.0.0", default-features = false }
azure_storage_blob = { version = "1.0.0", default-features = false }
base64 = { version = "0.22.0", default-features = false, features = ["alloc"] }
bolero = { version = "0.13.4", default-features = false }
bumpalo = { version = "3.20.2", default-features = false }
Expand Down Expand Up @@ -151,6 +157,7 @@ tracing-test = { version = "0.2.6", default-features = false }
trait-variant = { version = "0.1.2", default-features = false }
trybuild = { version = "1.0.114", default-features = false }
typeid = { version = "1.0.3", default-features = false }
typespec_client_core = { version = "1.0.0", default-features = false }
uuid = { version = "1.21.0", default-features = false }
widestring = { version = "1.2.1", default-features = false }
windows-sys = { version = "0.61.2", default-features = false }
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ This repository contains a set of crates that help you build robust highly scala
These are the primary crates built out of this repo:

- [`anyspawn`](./crates/anyspawn/README.md) - A generic task spawner compatible with any async runtime.
- [`anyspawn_azure`](./crates/anyspawn_azure/README.md) - Azure SDK async runtime and process executor backed by an anyspawn spawner and a tick clock.
- [`bytesbuf`](./crates/bytesbuf/README.md) - Types for creating and manipulating byte sequences.
- [`bytesbuf_io`](./crates/bytesbuf_io/README.md) - Asynchronous I/O abstractions expressed via `bytesbuf` types.
- [`cachet`](./crates/cachet/README.md) - A composable, customizable multi-tier caching library with rich feature support.
Expand All @@ -35,6 +36,7 @@ These are the primary crates built out of this repo:
- [`cachet_tier`](./crates/cachet_tier/README.md) - Core cache tier trait and abstractions for building cache backends.
- [`data_privacy`](./crates/data_privacy/README.md) - Mechanisms to classify, manipulate, and redact sensitive data.
- [`fetch`](./crates/fetch/README.md) - "Universal, composable and resilient HTTP client."
- [`fetch_azure`](./crates/fetch_azure/README.md) - Azure SDK HTTP transport backed by the fetch HTTP client.
- [`fetch_hyper`](./crates/fetch_hyper/README.md) - Hyper-based HTTP transport utilities for fetch.
- [`fetch_options`](./crates/fetch_options/README.md) - Options types for 'fetch' crate.
- [`fundle`](./crates/fundle/README.md) - Compile-time safe dependency injection for Rust.
Expand Down
13 changes: 13 additions & 0 deletions crates/anyspawn_azure/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Changelog

## [0.1.0]

- ✨ Features

- introduce `anyspawn_azure`, adapting Oxidizer primitives to Azure SDK
runtime abstractions:
- `Runtime` implements `azure_core::async_runtime::AsyncRuntime` on top
of an `anyspawn::Spawner` (spawning) and a `tick::Clock` (sleeping).
- with the optional `azure-identity` feature, `Runtime` also implements
`azure_identity::Executor`, running credential commands on the
`anyspawn::Spawner`.
Loading