azure_security_keyvault/certificates/operations/
update_properties.rs1use crate::prelude::*;
2use azure_core::{headers::Headers, to_json, Method};
3use serde::Serialize;
4use time::OffsetDateTime;
5
6operation! {
7 UpdateCertificateProperties,
8 client: CertificateClient,
9 name: String,
10 ?version: String,
11 ?enabled: bool,
12 ?not_before: OffsetDateTime,
13 ?expiration: OffsetDateTime
14}
15
16#[derive(Serialize, Debug)]
17#[serde(rename_all = "camelCase")]
18struct Attributes {
19 enabled: Option<bool>,
20 #[serde(default, with = "azure_core::date::timestamp::option", rename = "exp")]
21 expiration: Option<OffsetDateTime>,
22 #[serde(default, with = "azure_core::date::timestamp::option", rename = "nbf")]
23 not_before: Option<OffsetDateTime>,
24}
25
26#[derive(Serialize, Debug)]
27#[serde(rename_all = "camelCase")]
28struct UpdateRequest {
29 attributes: Attributes,
30}
31
32impl UpdateCertificatePropertiesBuilder {
33 pub fn into_future(self) -> UpdateCertificateProperties {
34 Box::pin(async move {
35 let mut uri = self.client.keyvault_client.vault_url.clone();
36 let version = self.version.unwrap_or_default();
37 uri.set_path(&format!("certificates/{}/{}", self.name, version));
38
39 let request = UpdateRequest {
40 attributes: Attributes {
41 enabled: self.enabled,
42 expiration: self.expiration,
43 not_before: self.not_before,
44 },
45 };
46
47 let body = to_json(&request)?;
48
49 let headers = Headers::new();
50 let mut request =
51 KeyvaultClient::finalize_request(uri, Method::Patch, headers, Some(body.into()));
52
53 self.client
54 .keyvault_client
55 .send(&self.context, &mut request)
56 .await?;
57
58 Ok(())
59 })
60 }
61}
62
63type UpdateCertificatePropertiesResponse = ();