use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum SsmOperation {
PutParameter,
GetParameter,
GetParameters,
GetParametersByPath,
DeleteParameter,
DeleteParameters,
DescribeParameters,
GetParameterHistory,
AddTagsToResource,
RemoveTagsFromResource,
ListTagsForResource,
LabelParameterVersion,
UnlabelParameterVersion,
}
impl SsmOperation {
#[must_use]
pub fn as_str(&self) -> &'static str {
match self {
Self::PutParameter => "PutParameter",
Self::GetParameter => "GetParameter",
Self::GetParameters => "GetParameters",
Self::GetParametersByPath => "GetParametersByPath",
Self::DeleteParameter => "DeleteParameter",
Self::DeleteParameters => "DeleteParameters",
Self::DescribeParameters => "DescribeParameters",
Self::GetParameterHistory => "GetParameterHistory",
Self::AddTagsToResource => "AddTagsToResource",
Self::RemoveTagsFromResource => "RemoveTagsFromResource",
Self::ListTagsForResource => "ListTagsForResource",
Self::LabelParameterVersion => "LabelParameterVersion",
Self::UnlabelParameterVersion => "UnlabelParameterVersion",
}
}
#[must_use]
pub fn from_name(name: &str) -> Option<Self> {
match name {
"PutParameter" => Some(Self::PutParameter),
"GetParameter" => Some(Self::GetParameter),
"GetParameters" => Some(Self::GetParameters),
"GetParametersByPath" => Some(Self::GetParametersByPath),
"DeleteParameter" => Some(Self::DeleteParameter),
"DeleteParameters" => Some(Self::DeleteParameters),
"DescribeParameters" => Some(Self::DescribeParameters),
"GetParameterHistory" => Some(Self::GetParameterHistory),
"AddTagsToResource" => Some(Self::AddTagsToResource),
"RemoveTagsFromResource" => Some(Self::RemoveTagsFromResource),
"ListTagsForResource" => Some(Self::ListTagsForResource),
"LabelParameterVersion" => Some(Self::LabelParameterVersion),
"UnlabelParameterVersion" => Some(Self::UnlabelParameterVersion),
_ => None,
}
}
#[must_use]
pub fn is_phase0(&self) -> bool {
matches!(
self,
Self::PutParameter
| Self::GetParameter
| Self::GetParameters
| Self::GetParametersByPath
| Self::DeleteParameter
| Self::DeleteParameters
)
}
#[must_use]
pub fn is_phase1(&self) -> bool {
matches!(
self,
Self::DescribeParameters
| Self::GetParameterHistory
| Self::AddTagsToResource
| Self::RemoveTagsFromResource
| Self::ListTagsForResource
)
}
#[must_use]
pub fn is_phase2(&self) -> bool {
matches!(
self,
Self::LabelParameterVersion | Self::UnlabelParameterVersion
)
}
#[must_use]
pub fn is_implemented(&self) -> bool {
self.is_phase0() || self.is_phase1() || self.is_phase2()
}
}
impl fmt::Display for SsmOperation {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}