apisix_admin_client/models/
admin_route_responses.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use crate::models::common::ApisixTimeout;
4use crate::models::Plugins;
5use crate::UpstreamRequest;
6
7#[serde_with::skip_serializing_none]
8#[derive(Default, Debug, Clone, Serialize, Deserialize)]
9pub struct ApisixRoute {
10 pub id: Option<Value>, pub name: Option<String>,
12 pub desc: Option<String>,
13 pub status: Option<i64>,
14 pub update_time: Option<i64>,
15 pub plugins: Option<Plugins>,
16 pub uri: Option<String>,
17 pub uris: Option<Vec<String>>,
18 pub hosts: Option<Vec<String>>,
19 pub remote_addr: Option<String>,
20 pub remote_addrs: Option<Vec<String>>,
21 pub methods: Option<Vec<String>>,
22 pub upstream: Option<UpstreamRequest>,
23 pub upstream_id: Option<Value>, pub service_id: Option<Value>, pub timeout: Option<ApisixTimeout>,
26 pub enable_websocket: Option<bool>,
27 pub create_time: Option<i64>,
28 pub priority: Option<i64>,
29}
30
31#[cfg(test)]
33mod tests {
34 use serde_json::{to_string, to_string_pretty};
35 use super::*;
36 use tracing::{error, info};
37 use tracing_test::traced_test;
38 use crate::models::common::TypedItem;
39
40 #[traced_test]
41 #[tokio::test]
42 async fn test_parse_route_response() {
43 let nodes = r#"
44 {
45 "createdIndex": 139,
46 "key": "/apisix/routes/route-t1c-authentication-api",
47 "value": {
48 "status": 1,
49 "update_time": 1727776498,
50 "plugins": {
51 "proxy-rewrite": {
52 "regex_uri": [
53 "^/auth/v1/(. *)",
54 "/v1/$1"
55 ],
56 "use_real_request_uri_unsafe": false
57 }
58 },
59 "uri": "/auth/v1/*",
60 "upstream_id": "test_upstream",
61 "service_id": "test_service",
62 "create_time": 1727776498,
63 "priority": 0,
64 "id": "route-t1c-authentication-api"
65 },
66 "modifiedIndex": 139
67 }
68 "#;
69 let nodes: TypedItem<ApisixRoute> = serde_json::from_str(nodes).unwrap();
70 assert_eq!(nodes.value.clone().unwrap().id.unwrap(), "route-t1c-authentication-api");
71 assert_eq!(nodes.value.clone().unwrap().status.unwrap(), 1);
72 assert_eq!(nodes.value.clone().unwrap().update_time.unwrap(), 1727776498);
73 assert_eq!(nodes.value.clone().unwrap().uri.unwrap(), "/auth/v1/*");
74 assert_eq!(nodes.value.clone().unwrap().upstream_id.unwrap(), "test_upstream");
75 assert_eq!(nodes.value.clone().unwrap().create_time.unwrap(), 1727776498);
76 assert_eq!(nodes.value.clone().unwrap().priority.unwrap(), 0);
77 }
78}
79