Skip to content

Commit ce3a3ed

Browse files
authored
Remove CertificateClientExt and impl directly on CertificateClient (#2846)
Turns out we don't need extension traits within the same crate. Better discoverability and usage.
1 parent 497d613 commit ce3a3ed

File tree

7 files changed

+74
-92
lines changed

7 files changed

+74
-92
lines changed

sdk/core/azure_core/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ The `Poller<T>` implements `futures::Stream` so you can asynchronously iterate o
254254
```rust no_run
255255
use azure_identity::DefaultAzureCredential;
256256
use azure_security_keyvault_certificates::{
257-
CertificateClient, CertificateClientExt,
257+
CertificateClient,
258258
models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
259259
};
260260
use futures::stream::TryStreamExt as _;
@@ -310,7 +310,7 @@ If you just want to wait until the `Poller<T>` is complete and get the last stat
310310
```rust no_run
311311
use azure_identity::DefaultAzureCredential;
312312
use azure_security_keyvault_certificates::{
313-
CertificateClient, CertificateClientExt,
313+
CertificateClient,
314314
models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
315315
};
316316

sdk/keyvault/azure_security_keyvault_certificates/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
### Breaking Changes
88

9+
- Removed the `CertificateClientExt` trait for `CertificateClient`. The `begin_create_certificate` and `resume_certificate_operation` methods are implemented for `CertificateClient` with the same method signatures.
10+
911
### Bugs Fixed
1012

1113
### Other Changes

sdk/keyvault/azure_security_keyvault_certificates/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ Before we can create a new certificate, though, we need to define a certificate
8383
```rust no_run
8484
use azure_identity::DefaultAzureCredential;
8585
use azure_security_keyvault_certificates::{
86-
CertificateClient, CertificateClientExt,
86+
CertificateClient,
8787
models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
8888
};
8989
use futures::stream::TryStreamExt as _;
@@ -139,7 +139,7 @@ If you just want to wait until the `Poller<CertificateOperation>` is complete an
139139
```rust no_run
140140
use azure_identity::DefaultAzureCredential;
141141
use azure_security_keyvault_certificates::{
142-
CertificateClient, CertificateClientExt,
142+
CertificateClient,
143143
models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
144144
};
145145

@@ -333,7 +333,7 @@ use azure_security_keyvault_certificates::{
333333
CertificatePolicy, CreateCertificateParameters, CurveName, IssuerParameters, KeyProperties,
334334
KeyType, KeyUsageType, X509CertificateProperties,
335335
},
336-
CertificateClient, CertificateClientExt, ResourceExt, ResourceId,
336+
CertificateClient, ResourceExt, ResourceId,
337337
};
338338
use azure_security_keyvault_keys::{
339339
models::{SignParameters, SignatureAlgorithm},

sdk/keyvault/azure_security_keyvault_certificates/src/clients.rs

Lines changed: 63 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use azure_core::{
1515
json, Result,
1616
};
1717

18-
pub trait CertificateClientExt: private::Sealed {
18+
impl CertificateClient {
1919
/// Creates a new certificate and returns a [`Poller<CertificateOperation>`] to monitor the status.
2020
///
2121
/// If this is the first version, the certificate resource is created. This operation requires the certificates/create permission.
@@ -32,7 +32,7 @@ pub trait CertificateClientExt: private::Sealed {
3232
/// ```no_run
3333
/// use azure_identity::DefaultAzureCredential;
3434
/// use azure_security_keyvault_certificates::{
35-
/// CertificateClient, CertificateClientExt,
35+
/// CertificateClient,
3636
/// models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
3737
/// };
3838
///
@@ -77,86 +77,7 @@ pub trait CertificateClientExt: private::Sealed {
7777
///
7878
/// # Ok(()) }
7979
/// ```
80-
fn begin_create_certificate(
81-
&self,
82-
certificate_name: &str,
83-
parameters: RequestContent<CreateCertificateParameters>,
84-
options: Option<CertificateClientBeginCreateCertificateOptions<'_>>,
85-
) -> Result<Poller<CertificateOperation>>;
86-
87-
/// Resumes the [`CertificateClientExt::begin_create_certificate`] operation by returning a [`Poller<CertificateOperation>`] already in progress or completed.
88-
///
89-
/// Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission.
90-
///
91-
/// # Arguments
92-
///
93-
/// * `certificate_name` - The name of the certificate.
94-
/// * `options` - Optional parameters for the request.
95-
///
96-
/// # Examples
97-
///
98-
/// ```no_run
99-
/// use azure_identity::DefaultAzureCredential;
100-
/// use azure_security_keyvault_certificates::{
101-
/// CertificateClient, CertificateClientExt,
102-
/// models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
103-
/// };
104-
///
105-
/// # #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> {
106-
/// let credential = DefaultAzureCredential::new()?;
107-
/// let client = CertificateClient::new(
108-
/// "https://your-key-vault-name.vault.azure.net/",
109-
/// credential.clone(),
110-
/// None,
111-
/// )?;
112-
///
113-
/// // Create a self-signed certificate.
114-
/// let policy = CertificatePolicy {
115-
/// x509_certificate_properties: Some(X509CertificateProperties {
116-
/// subject: Some("CN=DefaultPolicy".into()),
117-
/// ..Default::default()
118-
/// }),
119-
/// issuer_parameters: Some(IssuerParameters {
120-
/// name: Some("Self".into()),
121-
/// ..Default::default()
122-
/// }),
123-
/// ..Default::default()
124-
/// };
125-
/// let body = CreateCertificateParameters {
126-
/// certificate_policy: Some(policy),
127-
/// ..Default::default()
128-
/// };
129-
///
130-
/// // Wait for the certificate operation to complete and get the last status monitor.
131-
/// let operation = client
132-
/// .resume_certificate_operation("certificate-name", None)?
133-
/// .wait()
134-
/// .await?
135-
/// // Deserialize the CertificateOperation:
136-
/// .into_body()
137-
/// .await?;
138-
///
139-
/// if matches!(operation.status, Some(status) if status == "completed") {
140-
/// let target = operation.target.ok_or("expected target")?;
141-
/// println!("Created certificate {}", target);
142-
/// }
143-
///
144-
/// # Ok(()) }
145-
/// ```
146-
fn resume_certificate_operation(
147-
&self,
148-
certificate_name: &str,
149-
options: Option<CertificateClientResumeCertificateOperationOptions<'_>>,
150-
) -> Result<Poller<CertificateOperation>>;
151-
}
152-
153-
mod private {
154-
pub trait Sealed {}
155-
impl Sealed for super::CertificateClient {}
156-
}
157-
158-
impl CertificateClientExt for CertificateClient {
159-
fn begin_create_certificate(
80+
pub fn begin_create_certificate(
16081
&self,
16182
certificate_name: &str,
16283
parameters: RequestContent<CreateCertificateParameters>,
@@ -235,7 +156,66 @@ impl CertificateClientExt for CertificateClient {
235156
))
236157
}
237158

238-
fn resume_certificate_operation(
159+
/// Resumes the [`CertificateClient::begin_create_certificate`] operation by returning a [`Poller<CertificateOperation>`] already in progress or completed.
160+
///
161+
/// Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission.
162+
///
163+
/// # Arguments
164+
///
165+
/// * `certificate_name` - The name of the certificate.
166+
/// * `options` - Optional parameters for the request.
167+
///
168+
/// # Examples
169+
///
170+
/// ```no_run
171+
/// use azure_identity::DefaultAzureCredential;
172+
/// use azure_security_keyvault_certificates::{
173+
/// CertificateClient,
174+
/// models::{CreateCertificateParameters, CertificatePolicy, X509CertificateProperties, IssuerParameters},
175+
/// };
176+
///
177+
/// # #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> {
178+
/// let credential = DefaultAzureCredential::new()?;
179+
/// let client = CertificateClient::new(
180+
/// "https://your-key-vault-name.vault.azure.net/",
181+
/// credential.clone(),
182+
/// None,
183+
/// )?;
184+
///
185+
/// // Create a self-signed certificate.
186+
/// let policy = CertificatePolicy {
187+
/// x509_certificate_properties: Some(X509CertificateProperties {
188+
/// subject: Some("CN=DefaultPolicy".into()),
189+
/// ..Default::default()
190+
/// }),
191+
/// issuer_parameters: Some(IssuerParameters {
192+
/// name: Some("Self".into()),
193+
/// ..Default::default()
194+
/// }),
195+
/// ..Default::default()
196+
/// };
197+
/// let body = CreateCertificateParameters {
198+
/// certificate_policy: Some(policy),
199+
/// ..Default::default()
200+
/// };
201+
///
202+
/// // Wait for the certificate operation to complete and get the last status monitor.
203+
/// let operation = client
204+
/// .resume_certificate_operation("certificate-name", None)?
205+
/// .wait()
206+
/// .await?
207+
/// // Deserialize the CertificateOperation:
208+
/// .into_body()
209+
/// .await?;
210+
///
211+
/// if matches!(operation.status, Some(status) if status == "completed") {
212+
/// let target = operation.target.ok_or("expected target")?;
213+
/// println!("Created certificate {}", target);
214+
/// }
215+
///
216+
/// # Ok(()) }
217+
/// ```
218+
pub fn resume_certificate_operation(
239219
&self,
240220
certificate_name: &str,
241221
options: Option<CertificateClientResumeCertificateOperationOptions<'_>>,

sdk/keyvault/azure_security_keyvault_certificates/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ mod generated;
99
pub mod models;
1010
mod resource;
1111

12-
pub use clients::{CertificateClient, CertificateClientExt, CertificateClientOptions};
12+
pub use clients::{CertificateClient, CertificateClientOptions};
1313
pub use resource::*;

sdk/keyvault/azure_security_keyvault_certificates/src/models.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ impl StatusMonitor for CertificateOperation {
1919
}
2020
}
2121

22-
/// Options to be passed to [`CertificateClientExt::begin_create_certificate()`](crate::clients::CertificateClientExt::begin_create_certificate())
22+
/// Options to be passed to [`CertificateClient::begin_create_certificate()`](crate::clients::CertificateClient::begin_create_certificate())
2323
#[derive(Clone, Default, SafeDebug)]
2424
pub struct CertificateClientBeginCreateCertificateOptions<'a> {
2525
/// Allows customization of the method call.
@@ -40,7 +40,7 @@ impl CertificateClientBeginCreateCertificateOptions<'_> {
4040
}
4141
}
4242

43-
/// Options to be passed to [`CertificateClientExt::resume_certificate_operation()`](crate::clients::CertificateClientExt::resume_certificate_operation())
43+
/// Options to be passed to [`CertificateClient::resume_certificate_operation()`](crate::clients::CertificateClient::resume_certificate_operation())
4444
#[derive(Clone, Default, SafeDebug)]
4545
pub struct CertificateClientResumeCertificateOperationOptions<'a> {
4646
/// Allows customization of the method call.

sdk/keyvault/azure_security_keyvault_certificates/tests/certificate_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use azure_security_keyvault_certificates::{
1010
CertificatePolicy, CreateCertificateParameters, CurveName, IssuerParameters, KeyProperties,
1111
KeyType, UpdateCertificatePropertiesParameters, X509CertificateProperties,
1212
},
13-
CertificateClient, CertificateClientExt as _, CertificateClientOptions, ResourceExt as _,
13+
CertificateClient, CertificateClientOptions, ResourceExt as _,
1414
};
1515
use azure_security_keyvault_keys::{
1616
models::{SignParameters, SignatureAlgorithm},

0 commit comments

Comments
 (0)