use crate::gateway::plugin::ConfiguredPlugin;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use std::str::FromStr;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Route {
pub name: String,
pub host: String,
pub path: String,
pub match_path: String,
pub service: String,
pub methods: Vec<String>,
#[serde(alias = "header_condition", alias = "header-condition")]
pub header: BTreeMap<String, String>,
#[serde(alias = "query_condition", alias = "query-condition")]
pub query: BTreeMap<String, String>,
#[serde(default = "Vec::default", alias = "pre_filters", alias = "pre-filters")]
pub pre_filters: Vec<ConfiguredPlugin>,
#[serde(
default = "Vec::default",
alias = "post_filters",
alias = "post-filters"
)]
pub post_filters: Vec<ConfiguredPlugin>,
#[serde(default = "bool::default", alias = "is_auth", alias = "is-auth")]
pub is_auth: bool,
pub auth_white_list: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RewriteRule {
pub pattern: String,
pub replacement: String,
}
impl Route {
pub fn get_service(&self) -> &String {
&self.service
}
pub fn build_path(&self, path: &str) -> String {
path.to_string()
}
}