azure_storage_mirror/queue/responses/
get_queue_acl_response.rs

1use crate::QueueStoredAccessPolicy;
2use azure_core::errors::AzureError;
3use azure_core::errors::PermissionError;
4use azure_core::headers::CommonStorageResponseHeaders;
5use azure_core::prelude::*;
6use bytes::Bytes;
7use http::response::Response;
8use std::convert::TryInto;
9
10#[derive(Debug, Clone)]
11pub struct GetQueueACLResponse {
12    pub common_storage_response_headers: CommonStorageResponseHeaders,
13    pub stored_access_policies: Vec<QueueStoredAccessPolicy>,
14}
15
16impl std::convert::TryFrom<&Response<Bytes>> for GetQueueACLResponse {
17    type Error = AzureError;
18
19    fn try_from(response: &Response<Bytes>) -> Result<Self, Self::Error> {
20        let headers = response.headers();
21        let body = response.body();
22
23        debug!("headers == {:?}", headers);
24
25        let a: Result<Vec<QueueStoredAccessPolicy>, PermissionError> =
26            StoredAccessPolicyList::from_xml(&std::str::from_utf8(body)?[3..])?
27                .stored_access
28                .into_iter()
29                .map(|sap| sap.try_into())
30                .collect();
31
32        Ok(GetQueueACLResponse {
33            common_storage_response_headers: headers.try_into()?,
34            stored_access_policies: a?,
35        })
36    }
37}