azure_storage_blobs/clients/
blob_lease_client.rs

1use crate::{blob::operations::*, prelude::*};
2use azure_core::{headers::Headers, prelude::*, Body, Method, Request, Response, Url};
3
4#[derive(Debug, Clone)]
5pub struct BlobLeaseClient {
6    blob_client: BlobClient,
7    lease_id: LeaseId,
8}
9
10impl BlobLeaseClient {
11    pub(crate) fn new(blob_client: BlobClient, lease_id: LeaseId) -> Self {
12        Self {
13            blob_client,
14            lease_id,
15        }
16    }
17
18    pub fn change(&self, proposed_lease_id: ProposedLeaseId) -> ChangeLeaseBuilder {
19        ChangeLeaseBuilder::new(self.clone(), proposed_lease_id)
20    }
21
22    pub fn release(&self) -> ReleaseLeaseBuilder {
23        ReleaseLeaseBuilder::new(self.clone())
24    }
25
26    pub fn renew(&self) -> RenewLeaseBuilder {
27        RenewLeaseBuilder::new(self.clone())
28    }
29
30    pub fn lease_id(&self) -> LeaseId {
31        self.lease_id
32    }
33
34    pub fn container_client(&self) -> &ContainerClient {
35        self.blob_client.container_client()
36    }
37
38    pub fn blob_client(&self) -> &BlobClient {
39        &self.blob_client
40    }
41
42    pub(crate) fn url(&self) -> azure_core::Result<Url> {
43        self.blob_client.url()
44    }
45
46    pub(crate) fn finalize_request(
47        url: Url,
48        method: Method,
49        headers: Headers,
50        request_body: Option<Body>,
51    ) -> azure_core::Result<Request> {
52        BlobClient::finalize_request(url, method, headers, request_body)
53    }
54
55    pub(crate) async fn send(
56        &self,
57        context: &mut Context,
58        request: &mut Request,
59    ) -> azure_core::Result<Response> {
60        self.blob_client.send(context, request).await
61    }
62}