azure_storage/headers/
mod.rs
1use crate::{ConsistencyCRC64, ConsistencyMD5};
2use azure_core::error::Error;
3use azure_core::headers::{
4 client_request_id_from_headers_optional, date_from_headers, request_id_from_headers,
5 server_from_headers, version_from_headers, HeaderName, Headers, CONTENT_MD5,
6};
7use azure_core::RequestId;
8use time::OffsetDateTime;
9
10#[derive(Debug, Clone)]
11pub struct CommonStorageResponseHeaders {
12 pub request_id: RequestId,
13 pub client_request_id: Option<String>,
14 pub version: String,
15 pub date: OffsetDateTime,
16 pub server: String,
17}
18
19impl TryFrom<&Headers> for CommonStorageResponseHeaders {
20 type Error = Error;
21
22 fn try_from(headers: &Headers) -> azure_core::Result<Self> {
23 Ok(Self {
24 request_id: request_id_from_headers(headers)?,
25 client_request_id: client_request_id_from_headers_optional(headers),
26 version: version_from_headers(headers)?,
27 date: date_from_headers(headers)?,
28 server: server_from_headers(headers)?,
29 })
30 }
31}
32
33pub const CONTENT_CRC64: HeaderName = HeaderName::from_static("x-ms-content-crc64");
34pub const COPY_ID: HeaderName = HeaderName::from_static("x-ms-copy-id");
35pub const RENAME_SOURCE: HeaderName = HeaderName::from_static("x-ms-rename-source");
36
37pub fn content_crc64_from_headers(headers: &Headers) -> azure_core::Result<ConsistencyCRC64> {
38 headers.get_as(&CONTENT_CRC64)
39}
40
41pub fn content_crc64_from_headers_optional(
42 headers: &Headers,
43) -> azure_core::Result<Option<ConsistencyCRC64>> {
44 headers.get_optional_as(&CONTENT_CRC64)
45}
46
47pub fn content_md5_from_headers(headers: &Headers) -> azure_core::Result<ConsistencyMD5> {
48 headers.get_as(&CONTENT_MD5)
49}
50
51pub fn content_md5_from_headers_optional(
52 headers: &Headers,
53) -> azure_core::Result<Option<ConsistencyMD5>> {
54 headers.get_optional_as(&CONTENT_MD5)
55}
56
57pub fn consistency_from_headers(
58 headers: &Headers,
59) -> azure_core::Result<(Option<ConsistencyMD5>, Option<ConsistencyCRC64>)> {
60 let content_crc64 = content_crc64_from_headers_optional(headers)?;
61 let content_md5 = content_md5_from_headers_optional(headers)?;
62 Ok((content_md5, content_crc64))
63}