apisix_admin_client/models/
admin_route_requests.rsuse serde::{Deserialize, Serialize};
use crate::common::ApisixTimeout;
use crate::models::generate_identifier;
use crate::plugins::Plugins;
use crate::UpstreamRequest;
use crate::{Result};
#[serde_with::skip_serializing_none]
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RouteBuilder {
pub id: Option<String>,
pub name: Option<String>,
pub desc: Option<String>,
pub status: Option<i64>,
pub plugins: Option<Plugins>,
pub uri: Option<String>,
pub uris: Option<Vec<String>>,
pub host: Option<String>,
pub hosts: Option<Vec<String>>,
pub remote_addr: Option<String>,
pub remote_addrs: Option<Vec<String>>,
pub methods: Option<Vec<String>>,
pub upstream: Option<UpstreamRequest>,
pub upstream_id: Option<String>,
pub service_id: Option<String>,
pub timeout: Option<ApisixTimeout>,
pub enable_websocket: Option<bool>,
pub priority: Option<i64>,
}
impl RouteBuilder {
pub fn new() -> Self {
RouteRequest::default().into()
}
pub fn with_id(mut self, id: String) -> Self {
self.id = Some(id);
self
}
pub fn with_name(mut self, name: String) -> Self {
self.name = Some(name);
self
}
pub fn with_desc(mut self, desc: String) -> Self {
self.desc = Some(desc);
self
}
pub fn with_status(mut self, status: i64) -> Self {
self.status = Some(status);
self
}
pub fn with_plugins(mut self, plugins: Plugins) -> Self {
self.plugins = Some(plugins);
self
}
pub fn with_uri(mut self, uri: String) -> Self {
self.uri = Some(uri);
self
}
pub fn with_uris(mut self, uris: Vec<String>) -> Self {
self.uris = Some(uris);
self
}
pub fn with_host(mut self, host: String) -> Self {
self.host = Some(host);
self
}
pub fn with_hosts(mut self, hosts: Vec<String>) -> Self {
self.hosts = Some(hosts);
self
}
pub fn with_remote_addr(mut self, remote_addr: String) -> Self {
self.remote_addr = Some(remote_addr);
self
}
pub fn with_remote_addrs(mut self, remote_addrs: Vec<String>) -> Self {
self.remote_addrs = Some(remote_addrs);
self
}
pub fn with_methods(mut self, methods: Vec<String>) -> Self {
self.methods = Some(methods);
self
}
pub fn with_upstream(mut self, upstream: UpstreamRequest) -> Self {
self.upstream = Some(upstream);
self
}
pub fn with_upstream_id(mut self, upstream_id: String) -> Self {
self.upstream_id = Some(upstream_id);
self
}
pub fn with_service_id(mut self, service_id: String) -> Self {
self.service_id = Some(service_id);
self
}
pub fn with_timeout(mut self, timeout: ApisixTimeout) -> Self {
self.timeout = Some(timeout);
self
}
pub fn with_enable_websocket(mut self, enable_websocket: bool) -> Self {
self.enable_websocket = Some(enable_websocket);
self
}
pub fn priority(mut self, priority: i64) -> Self {
self.priority = Some(priority);
self
}
pub fn build(self) -> Result<RouteRequest> {
Ok(RouteRequest {
id: self.id,
name: self.name,
desc: self.desc,
status: self.status,
plugins: self.plugins,
uri: self.uri,
uris: self.uris,
host: self.host,
hosts: self.hosts,
remote_addr: self.remote_addr,
remote_addrs: self.remote_addrs,
methods: self.methods,
upstream: self.upstream,
upstream_id: self.upstream_id,
service_id: self.service_id,
timeout: self.timeout,
enable_websocket: self.enable_websocket,
priority: self.priority,
})
}
}
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RouteRequest {
pub id: Option<String>,
pub name: Option<String>,
pub desc: Option<String>,
pub status: Option<i64>,
pub plugins: Option<Plugins>,
pub uri: Option<String>,
pub uris: Option<Vec<String>>,
pub host: Option<String>,
pub hosts: Option<Vec<String>>,
pub remote_addr: Option<String>,
pub remote_addrs: Option<Vec<String>>,
pub methods: Option<Vec<String>>,
pub upstream: Option<UpstreamRequest>,
pub upstream_id: Option<String>,
pub service_id: Option<String>,
pub timeout: Option<ApisixTimeout>,
pub enable_websocket: Option<bool>,
pub priority: Option<i64>,
}
impl Default for RouteRequest {
fn default() -> Self {
RouteRequest {
id: Some(generate_identifier()),
name: None,
desc: None,
status: None,
plugins: None,
uri: None,
uris: None,
host: None,
hosts: None,
remote_addr: None,
remote_addrs: None,
methods: None,
upstream: None,
upstream_id: None,
service_id: None,
timeout: None,
enable_websocket: None,
priority: None,
}
}
}
impl From<RouteRequest> for RouteBuilder {
fn from(route: RouteRequest) -> Self {
RouteBuilder {
id: route.id,
name: route.name,
desc: route.desc,
status: route.status,
plugins: route.plugins,
uri: route.uri,
uris: route.uris,
host: route.host,
hosts: route.hosts,
remote_addr: route.remote_addr,
remote_addrs: route.remote_addrs,
methods: route.methods,
upstream: route.upstream,
upstream_id: route.upstream_id,
service_id: route.service_id,
timeout: route.timeout,
enable_websocket: route.enable_websocket,
priority: route.priority,
}
}
}