1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use std::time::Duration;
use crate::util::Seconds;
/// `Access-Control-Max-Age` header, as defined on
/// [mdn](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Access-Control-Max-Age).
///
/// The `Access-Control-Max-Age` header indicates how long the results of a
/// preflight request can be cached in a preflight result cache.
///
/// # ABNF
///
/// ```text
/// Access-Control-Max-Age = \"Access-Control-Max-Age\" \":\" delta-seconds
/// ```
///
/// # Example values
///
/// * `531`
///
/// # Examples
///
/// ```
/// use rama_http_headers::AccessControlMaxAge;
///
/// let max_age = AccessControlMaxAge::from_seconds(531);
/// ```
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct AccessControlMaxAge(Seconds);
derive_header! {
AccessControlMaxAge(_),
name: ACCESS_CONTROL_MAX_AGE
}
impl AccessControlMaxAge {
#[must_use]
#[inline(always)]
pub fn from_seconds(secs: u64) -> Self {
Self(Seconds::new(secs))
}
#[must_use]
#[inline(always)]
pub fn try_from_duration(dur: Duration) -> Option<Self> {
Seconds::try_from_duration(dur).map(Self)
}
#[must_use]
#[inline(always)]
pub fn from_duration_rounded(dur: Duration) -> Self {
Self(Seconds::from_duration_rounded(dur))
}
#[must_use]
pub fn as_secs(self) -> u64 {
self.0.into()
}
}
impl From<Seconds> for AccessControlMaxAge {
fn from(value: Seconds) -> Self {
Self(value)
}
}
impl From<AccessControlMaxAge> for Duration {
fn from(acma: AccessControlMaxAge) -> Self {
acma.0.into()
}
}