use crate::validation::{self, FieldDef};
use alloc::vec;
use alloc::vec::Vec;
use core::fmt;
use core::str::FromStr;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Operation {
#[doc(alias = "Kinesis_20131202.AddTagsToStream")]
AddTagsToStream,
#[doc(alias = "Kinesis_20131202.CreateStream")]
CreateStream,
#[doc(alias = "Kinesis_20131202.DecreaseStreamRetentionPeriod")]
DecreaseStreamRetentionPeriod,
#[doc(alias = "Kinesis_20131202.DeleteResourcePolicy")]
DeleteResourcePolicy,
#[doc(alias = "Kinesis_20131202.DeleteStream")]
DeleteStream,
#[doc(alias = "Kinesis_20131202.DeregisterStreamConsumer")]
DeregisterStreamConsumer,
#[doc(alias = "Kinesis_20131202.DescribeAccountSettings")]
DescribeAccountSettings,
#[doc(alias = "Kinesis_20131202.DescribeLimits")]
DescribeLimits,
#[doc(alias = "Kinesis_20131202.DescribeStream")]
DescribeStream,
#[doc(alias = "Kinesis_20131202.DescribeStreamConsumer")]
DescribeStreamConsumer,
#[doc(alias = "Kinesis_20131202.DescribeStreamSummary")]
DescribeStreamSummary,
#[doc(alias = "Kinesis_20131202.DisableEnhancedMonitoring")]
DisableEnhancedMonitoring,
#[doc(alias = "Kinesis_20131202.EnableEnhancedMonitoring")]
EnableEnhancedMonitoring,
#[doc(alias = "Kinesis_20131202.GetRecords")]
GetRecords,
#[doc(alias = "Kinesis_20131202.GetResourcePolicy")]
GetResourcePolicy,
#[doc(alias = "Kinesis_20131202.GetShardIterator")]
GetShardIterator,
#[doc(alias = "Kinesis_20131202.IncreaseStreamRetentionPeriod")]
IncreaseStreamRetentionPeriod,
#[doc(alias = "Kinesis_20131202.ListShards")]
ListShards,
#[doc(alias = "Kinesis_20131202.ListStreamConsumers")]
ListStreamConsumers,
#[doc(alias = "Kinesis_20131202.ListStreams")]
ListStreams,
#[doc(alias = "Kinesis_20131202.ListTagsForResource")]
ListTagsForResource,
#[doc(alias = "Kinesis_20131202.ListTagsForStream")]
ListTagsForStream,
#[doc(alias = "Kinesis_20131202.MergeShards")]
MergeShards,
#[doc(alias = "Kinesis_20131202.PutRecord")]
PutRecord,
#[doc(alias = "Kinesis_20131202.PutRecords")]
PutRecords,
#[doc(alias = "Kinesis_20131202.PutResourcePolicy")]
PutResourcePolicy,
#[doc(alias = "Kinesis_20131202.RegisterStreamConsumer")]
RegisterStreamConsumer,
#[doc(alias = "Kinesis_20131202.RemoveTagsFromStream")]
RemoveTagsFromStream,
#[doc(alias = "Kinesis_20131202.SplitShard")]
SplitShard,
#[doc(alias = "Kinesis_20131202.StartStreamEncryption")]
StartStreamEncryption,
#[doc(alias = "Kinesis_20131202.StopStreamEncryption")]
StopStreamEncryption,
#[doc(alias = "Kinesis_20131202.SubscribeToShard")]
SubscribeToShard,
#[doc(alias = "Kinesis_20131202.TagResource")]
TagResource,
#[doc(alias = "Kinesis_20131202.UntagResource")]
UntagResource,
#[doc(alias = "Kinesis_20131202.UpdateAccountSettings")]
UpdateAccountSettings,
#[doc(alias = "Kinesis_20131202.UpdateMaxRecordSize")]
UpdateMaxRecordSize,
#[doc(alias = "Kinesis_20131202.UpdateShardCount")]
UpdateShardCount,
#[doc(alias = "Kinesis_20131202.UpdateStreamMode")]
UpdateStreamMode,
#[doc(alias = "Kinesis_20131202.UpdateStreamWarmThroughput")]
UpdateStreamWarmThroughput,
}
impl fmt::Display for Operation {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{self:?}")
}
}
impl FromStr for Operation {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"AddTagsToStream" => Ok(Self::AddTagsToStream),
"CreateStream" => Ok(Self::CreateStream),
"DecreaseStreamRetentionPeriod" => Ok(Self::DecreaseStreamRetentionPeriod),
"DeleteResourcePolicy" => Ok(Self::DeleteResourcePolicy),
"DeleteStream" => Ok(Self::DeleteStream),
"DeregisterStreamConsumer" => Ok(Self::DeregisterStreamConsumer),
"DescribeAccountSettings" => Ok(Self::DescribeAccountSettings),
"DescribeLimits" => Ok(Self::DescribeLimits),
"DescribeStream" => Ok(Self::DescribeStream),
"DescribeStreamConsumer" => Ok(Self::DescribeStreamConsumer),
"DescribeStreamSummary" => Ok(Self::DescribeStreamSummary),
"DisableEnhancedMonitoring" => Ok(Self::DisableEnhancedMonitoring),
"EnableEnhancedMonitoring" => Ok(Self::EnableEnhancedMonitoring),
"GetRecords" => Ok(Self::GetRecords),
"GetResourcePolicy" => Ok(Self::GetResourcePolicy),
"GetShardIterator" => Ok(Self::GetShardIterator),
"IncreaseStreamRetentionPeriod" => Ok(Self::IncreaseStreamRetentionPeriod),
"ListShards" => Ok(Self::ListShards),
"ListStreamConsumers" => Ok(Self::ListStreamConsumers),
"ListStreams" => Ok(Self::ListStreams),
"ListTagsForResource" => Ok(Self::ListTagsForResource),
"ListTagsForStream" => Ok(Self::ListTagsForStream),
"MergeShards" => Ok(Self::MergeShards),
"PutRecord" => Ok(Self::PutRecord),
"PutRecords" => Ok(Self::PutRecords),
"PutResourcePolicy" => Ok(Self::PutResourcePolicy),
"RegisterStreamConsumer" => Ok(Self::RegisterStreamConsumer),
"RemoveTagsFromStream" => Ok(Self::RemoveTagsFromStream),
"SplitShard" => Ok(Self::SplitShard),
"StartStreamEncryption" => Ok(Self::StartStreamEncryption),
"StopStreamEncryption" => Ok(Self::StopStreamEncryption),
"SubscribeToShard" => Ok(Self::SubscribeToShard),
"TagResource" => Ok(Self::TagResource),
"UntagResource" => Ok(Self::UntagResource),
"UpdateAccountSettings" => Ok(Self::UpdateAccountSettings),
"UpdateMaxRecordSize" => Ok(Self::UpdateMaxRecordSize),
"UpdateShardCount" => Ok(Self::UpdateShardCount),
"UpdateStreamMode" => Ok(Self::UpdateStreamMode),
"UpdateStreamWarmThroughput" => Ok(Self::UpdateStreamWarmThroughput),
_ => Err(()),
}
}
}
impl Operation {
pub const fn as_str(self) -> &'static str {
match self {
Operation::AddTagsToStream => "AddTagsToStream",
Operation::CreateStream => "CreateStream",
Operation::DecreaseStreamRetentionPeriod => "DecreaseStreamRetentionPeriod",
Operation::DeleteResourcePolicy => "DeleteResourcePolicy",
Operation::DeleteStream => "DeleteStream",
Operation::DeregisterStreamConsumer => "DeregisterStreamConsumer",
Operation::DescribeAccountSettings => "DescribeAccountSettings",
Operation::DescribeLimits => "DescribeLimits",
Operation::DescribeStream => "DescribeStream",
Operation::DescribeStreamConsumer => "DescribeStreamConsumer",
Operation::DescribeStreamSummary => "DescribeStreamSummary",
Operation::DisableEnhancedMonitoring => "DisableEnhancedMonitoring",
Operation::EnableEnhancedMonitoring => "EnableEnhancedMonitoring",
Operation::GetRecords => "GetRecords",
Operation::GetResourcePolicy => "GetResourcePolicy",
Operation::GetShardIterator => "GetShardIterator",
Operation::IncreaseStreamRetentionPeriod => "IncreaseStreamRetentionPeriod",
Operation::ListShards => "ListShards",
Operation::ListStreamConsumers => "ListStreamConsumers",
Operation::ListStreams => "ListStreams",
Operation::ListTagsForResource => "ListTagsForResource",
Operation::ListTagsForStream => "ListTagsForStream",
Operation::MergeShards => "MergeShards",
Operation::PutRecord => "PutRecord",
Operation::PutRecords => "PutRecords",
Operation::PutResourcePolicy => "PutResourcePolicy",
Operation::RegisterStreamConsumer => "RegisterStreamConsumer",
Operation::RemoveTagsFromStream => "RemoveTagsFromStream",
Operation::SplitShard => "SplitShard",
Operation::StartStreamEncryption => "StartStreamEncryption",
Operation::StopStreamEncryption => "StopStreamEncryption",
Operation::SubscribeToShard => "SubscribeToShard",
Operation::TagResource => "TagResource",
Operation::UntagResource => "UntagResource",
Operation::UpdateAccountSettings => "UpdateAccountSettings",
Operation::UpdateMaxRecordSize => "UpdateMaxRecordSize",
Operation::UpdateShardCount => "UpdateShardCount",
Operation::UpdateStreamMode => "UpdateStreamMode",
Operation::UpdateStreamWarmThroughput => "UpdateStreamWarmThroughput",
}
}
pub fn validation_rules(&self) -> Vec<(&'static str, FieldDef)> {
use validation::rules;
match self {
Operation::AddTagsToStream => rules::add_tags_to_stream(),
Operation::CreateStream => rules::create_stream(),
Operation::DecreaseStreamRetentionPeriod => rules::decrease_stream_retention_period(),
Operation::DeleteResourcePolicy => rules::delete_resource_policy(),
Operation::DeleteStream => rules::delete_stream(),
Operation::DeregisterStreamConsumer => rules::deregister_stream_consumer(),
Operation::DescribeAccountSettings => vec![],
Operation::DescribeLimits => vec![],
Operation::DescribeStream => rules::describe_stream(),
Operation::DescribeStreamConsumer => rules::describe_stream_consumer(),
Operation::DescribeStreamSummary => rules::describe_stream_summary(),
Operation::DisableEnhancedMonitoring => rules::disable_enhanced_monitoring(),
Operation::EnableEnhancedMonitoring => rules::enable_enhanced_monitoring(),
Operation::GetRecords => rules::get_records(),
Operation::GetResourcePolicy => rules::get_resource_policy(),
Operation::GetShardIterator => rules::get_shard_iterator(),
Operation::IncreaseStreamRetentionPeriod => rules::increase_stream_retention_period(),
Operation::ListShards => rules::list_shards(),
Operation::ListStreamConsumers => rules::list_stream_consumers(),
Operation::ListStreams => rules::list_streams(),
Operation::ListTagsForResource => rules::list_tags_for_resource(),
Operation::ListTagsForStream => rules::list_tags_for_stream(),
Operation::MergeShards => rules::merge_shards(),
Operation::PutRecord => rules::put_record(),
Operation::PutRecords => rules::put_records(),
Operation::PutResourcePolicy => rules::put_resource_policy(),
Operation::RegisterStreamConsumer => rules::register_stream_consumer(),
Operation::RemoveTagsFromStream => rules::remove_tags_from_stream(),
Operation::SplitShard => rules::split_shard(),
Operation::StartStreamEncryption => rules::start_stream_encryption(),
Operation::StopStreamEncryption => rules::stop_stream_encryption(),
Operation::SubscribeToShard => rules::subscribe_to_shard(),
Operation::TagResource => rules::tag_resource(),
Operation::UntagResource => rules::untag_resource(),
Operation::UpdateAccountSettings => rules::update_account_settings(),
Operation::UpdateMaxRecordSize => rules::update_max_record_size(),
Operation::UpdateShardCount => rules::update_shard_count(),
Operation::UpdateStreamMode => rules::update_stream_mode(),
Operation::UpdateStreamWarmThroughput => rules::update_stream_warm_throughput(),
}
}
}