azure_security_keyvault/certificates/operations/
update_properties.rs

1use 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 = ();