#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct RateLimiter {
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "uri_dictionary_name", skip_serializing_if = "Option::is_none")]
pub uri_dictionary_name: Option<String>,
#[serde(rename = "http_methods", skip_serializing_if = "Option::is_none")]
pub http_methods: Option<std::collections::HashSet<HttpMethods>>,
#[serde(rename = "rps_limit", skip_serializing_if = "Option::is_none")]
pub rps_limit: Option<i32>,
#[serde(rename = "window_size", skip_serializing_if = "Option::is_none")]
pub window_size: Option<WindowSize>,
#[serde(rename = "client_key", skip_serializing_if = "Option::is_none")]
pub client_key: Option<Vec<String>>,
#[serde(rename = "penalty_box_duration", skip_serializing_if = "Option::is_none")]
pub penalty_box_duration: Option<i32>,
#[serde(rename = "action", skip_serializing_if = "Option::is_none")]
pub action: Option<Action>,
#[serde(rename = "response", skip_serializing_if = "Option::is_none")]
pub response: Option<::std::collections::HashMap<String, String>>,
#[serde(rename = "response_object_name", skip_serializing_if = "Option::is_none")]
pub response_object_name: Option<String>,
#[serde(rename = "logger_type", skip_serializing_if = "Option::is_none")]
pub logger_type: Option<LoggerType>,
#[serde(rename = "feature_revision", skip_serializing_if = "Option::is_none")]
pub feature_revision: Option<i32>,
}
impl RateLimiter {
pub fn new() -> RateLimiter {
RateLimiter {
name: None,
uri_dictionary_name: None,
http_methods: None,
rps_limit: None,
window_size: None,
client_key: None,
penalty_box_duration: None,
action: None,
response: None,
response_object_name: None,
logger_type: None,
feature_revision: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum HttpMethods {
#[serde(rename = "HEAD")]
HEAD,
#[serde(rename = "OPTIONS")]
OPTIONS,
#[serde(rename = "GET")]
GET,
#[serde(rename = "POST")]
POST,
#[serde(rename = "PUT")]
PUT,
#[serde(rename = "PATCH")]
PATCH,
#[serde(rename = "DELETE")]
DELETE,
#[serde(rename = "TRACE")]
TRACE,
}
impl Default for HttpMethods {
fn default() -> HttpMethods {
Self::HEAD
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum WindowSize {
#[serde(rename = "1")]
WindowSizeOneSecond,
#[serde(rename = "10")]
WindowSizeTenSeconds,
#[serde(rename = "60")]
WindowSizeOneMinute,
}
impl Default for WindowSize {
fn default() -> WindowSize {
Self::WindowSizeOneSecond
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Action {
#[serde(rename = "response")]
Response,
#[serde(rename = "response_object")]
ResponseObject,
#[serde(rename = "log_only")]
LogOnly,
}
impl Default for Action {
fn default() -> Action {
Self::Response
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum LoggerType {
#[serde(rename = "azureblob")]
Azureblob,
#[serde(rename = "bigquery")]
Bigquery,
#[serde(rename = "cloudfiles")]
Cloudfiles,
#[serde(rename = "datadog")]
Datadog,
#[serde(rename = "digitalocean")]
Digitalocean,
#[serde(rename = "elasticsearch")]
Elasticsearch,
#[serde(rename = "ftp")]
Ftp,
#[serde(rename = "gcs")]
Gcs,
#[serde(rename = "googleanalytics")]
Googleanalytics,
#[serde(rename = "heroku")]
Heroku,
#[serde(rename = "honeycomb")]
Honeycomb,
#[serde(rename = "http")]
Http,
#[serde(rename = "https")]
Https,
#[serde(rename = "kafka")]
Kafka,
#[serde(rename = "kinesis")]
Kinesis,
#[serde(rename = "logentries")]
Logentries,
#[serde(rename = "loggly")]
Loggly,
#[serde(rename = "logshuttle")]
Logshuttle,
#[serde(rename = "newrelic")]
Newrelic,
#[serde(rename = "newrelicotlp")]
Newrelicotlp,
#[serde(rename = "openstack")]
Openstack,
#[serde(rename = "papertrail")]
Papertrail,
#[serde(rename = "pubsub")]
Pubsub,
#[serde(rename = "s3")]
S3,
#[serde(rename = "scalyr")]
Scalyr,
#[serde(rename = "sftp")]
Sftp,
#[serde(rename = "splunk")]
Splunk,
#[serde(rename = "stackdriver")]
Stackdriver,
#[serde(rename = "sumologic")]
Sumologic,
#[serde(rename = "syslog")]
Syslog,
}
impl Default for LoggerType {
fn default() -> LoggerType {
Self::Azureblob
}
}