armature_azure/
lib.rs

1//! # Armature Azure
2//!
3//! Microsoft Azure services integration with dynamic loading and dependency injection.
4//!
5//! ## Features
6//!
7//! Services are loaded dynamically based on feature flags and configuration.
8//! Only the services you enable are compiled and loaded.
9//!
10//! ## Quick Start
11//!
12//! ```rust,ignore
13//! use armature_azure::{AzureServices, AzureConfig};
14//!
15//! #[tokio::main]
16//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
17//!     // Configure which services to load
18//!     let config = AzureConfig::builder()
19//!         .storage_account("mystorageaccount")
20//!         .enable_blob()
21//!         .enable_cosmos()
22//!         .build();
23//!
24//!     // Load services
25//!     let services = AzureServices::new(config).await?;
26//!
27//!     // Use Blob Storage
28//!     let blob = services.blob_client()?;
29//!
30//!     Ok(())
31//! }
32//! ```
33//!
34//! ## With Dependency Injection
35//!
36//! ```rust,ignore
37//! use armature::prelude::*;
38//! use armature_azure::{AzureServices, AzureConfig};
39//!
40//! #[module]
41//! struct AzureModule;
42//!
43//! #[module_impl]
44//! impl AzureModule {
45//!     #[provider(singleton)]
46//!     async fn azure_services() -> AzureServices {
47//!         let config = AzureConfig::from_env()
48//!             .enable_blob()
49//!             .enable_servicebus()
50//!             .build();
51//!         AzureServices::new(config).await.unwrap()
52//!     }
53//! }
54//! ```
55
56mod config;
57mod error;
58mod services;
59
60pub use config::{AzureConfig, AzureConfigBuilder, CredentialsSource};
61pub use error::{AzureError, Result};
62pub use services::AzureServices;
63
64// Re-export Azure SDK types
65#[cfg(feature = "auth")]
66pub use azure_core;
67
68#[cfg(feature = "auth")]
69pub use azure_identity;
70
71#[cfg(feature = "blob")]
72pub use azure_storage_blobs;
73
74#[cfg(feature = "queue")]
75pub use azure_storage_queues;
76
77#[cfg(feature = "cosmos")]
78pub use azure_data_cosmos;
79
80#[cfg(feature = "servicebus")]
81pub use azure_messaging_servicebus;
82
83#[cfg(feature = "keyvault")]
84pub use azure_security_keyvault;