use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
pub enum ServerSideEncryption {
#[default]
#[serde(rename = "AES256")]
Aes256,
#[serde(rename = "KMS")]
Kms,
#[serde(rename = "SM4")]
Sm4,
}
impl ServerSideEncryption {
pub fn as_str(&self) -> &'static str {
match self {
ServerSideEncryption::Aes256 => "AES256",
ServerSideEncryption::Kms => "KMS",
ServerSideEncryption::Sm4 => "SM4",
}
}
}
impl AsRef<str> for ServerSideEncryption {
fn as_ref(&self) -> &str {
self.as_str()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn server_side_encryption_wire_names() {
assert_eq!(serde_json::to_string(&ServerSideEncryption::Aes256).unwrap(), "\"AES256\"");
assert_eq!(serde_json::to_string(&ServerSideEncryption::Kms).unwrap(), "\"KMS\"");
assert_eq!(serde_json::to_string(&ServerSideEncryption::Sm4).unwrap(), "\"SM4\"");
}
#[test]
fn server_side_encryption_round_trip() {
for sse in [
ServerSideEncryption::Aes256,
ServerSideEncryption::Kms,
ServerSideEncryption::Sm4,
] {
let json = serde_json::to_string(&sse).unwrap();
let back: ServerSideEncryption = serde_json::from_str(&json).unwrap();
assert_eq!(sse, back);
}
}
}