covert_sdk/
lease.rs

1use std::{sync::Arc, time::Duration};
2
3use covert_types::methods::system::RenewLeaseParams;
4pub use covert_types::methods::system::{
5    ListLeasesResponse, LookupLeaseResponse, RenewLeaseResponse, RevokedLeaseResponse,
6    RevokedLeasesResponse,
7};
8
9use crate::base::BaseClient;
10
11pub struct Client {
12    client: Arc<BaseClient>,
13}
14
15impl Client {
16    pub(crate) fn new(client: Arc<BaseClient>) -> Self {
17        Self { client }
18    }
19
20    pub async fn renew(
21        &self,
22        lease_id: &str,
23        ttl: Option<Duration>,
24    ) -> Result<RenewLeaseResponse, String> {
25        self.client
26            .put(
27                format!("/sys/leases/renew/{lease_id}"),
28                &RenewLeaseParams { ttl },
29            )
30            .await
31    }
32
33    pub async fn revoke(&self, lease_id: &str) -> Result<RevokedLeaseResponse, String> {
34        self.client
35            .put(format!("/sys/leases/revoke/{lease_id}"), &())
36            .await
37    }
38
39    pub async fn lookup(&self, lease_id: &str) -> Result<LookupLeaseResponse, String> {
40        self.client
41            .get(format!("/sys/leases/lookup/{lease_id}"))
42            .await
43    }
44
45    pub async fn revoke_by_mount(&self, prefix: &str) -> Result<RevokedLeasesResponse, String> {
46        self.client
47            .put(format!("/sys/leases/revoke-mount/{prefix}"), &())
48            .await
49    }
50
51    pub async fn list_by_mount(&self, prefix: &str) -> Result<ListLeasesResponse, String> {
52        self.client
53            .get(format!("/sys/leases/lookup-mount/{prefix}"))
54            .await
55    }
56}