#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum Acl {
#[default]
Private,
PublicRead,
}
impl Acl {
pub fn as_header_value(&self) -> &'static str {
match self {
Acl::Private => "private",
Acl::PublicRead => "public-read",
}
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Default)]
pub struct PutOptions {
pub content_disposition: Option<String>,
pub cache_control: Option<String>,
pub content_type: Option<String>,
pub acl: Option<Acl>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_all_none() {
let opts = PutOptions::default();
assert!(opts.content_disposition.is_none());
assert!(opts.cache_control.is_none());
assert!(opts.content_type.is_none());
}
#[test]
fn acl_default_is_private() {
assert_eq!(Acl::default(), Acl::Private);
}
#[test]
fn acl_private_header_value() {
assert_eq!(Acl::Private.as_header_value(), "private");
}
#[test]
fn acl_public_read_header_value() {
assert_eq!(Acl::PublicRead.as_header_value(), "public-read");
}
#[test]
fn default_options_acl_is_none() {
let opts = PutOptions::default();
assert!(opts.acl.is_none());
}
}