apisix_admin_client/
client_admin_impl.rs

1use tracing::instrument;
2use crate::RouteRequest;
3use crate::ApisixRoute;
4use crate::ServiceRequest;
5use crate::ApisixService;
6use crate::client::AdminConnector;
7use crate::config::ApisixConfig;
8use crate::error::ApisixClientError::InvalidRequest;
9use crate::models::common::{ListResponse, TypedItem};
10use crate::models::{ApisixConsumer, ApisixConsumerGroup, ApisixUpstream, ConsumerGroupRequest, ConsumerRequest, UpstreamRequest};
11
12type Result<T> = std::result::Result<T, crate::error::ApisixClientError>;
13
14#[instrument(skip_all)]
15pub (crate) async fn api_admin_check_version(cfg: &ApisixConfig) -> Result<()> {
16    let ac: AdminConnector =  AdminConnector::new(cfg).await;
17    ac.check_version().await.map_err(|e| InvalidRequest(e.to_string()))
18}
19
20// region: upstream
21#[instrument(skip_all)]
22pub (crate) async fn api_admin_get_upstreams(cfg: &ApisixConfig) -> Result<ListResponse<TypedItem<ApisixUpstream>>> {
23    let ac: AdminConnector =  AdminConnector::new(cfg).await;
24    ac.get_upstreams().await.map_err(|e| InvalidRequest(e.to_string()))
25}
26
27#[instrument(skip_all)]
28pub (crate) async fn api_admin_get_upstream(cfg: &ApisixConfig, id: &str) -> Result<TypedItem<ApisixUpstream>> {
29    let ac: AdminConnector =  AdminConnector::new(cfg).await;
30    ac.get_upstream(id).await.map_err(|e| InvalidRequest(e.to_string()))
31}
32
33#[instrument(skip_all)]
34pub (crate) async fn api_admin_create_upstream_with_id(cfg: &ApisixConfig, id: &str, req: &UpstreamRequest) -> Result<TypedItem<ApisixUpstream>> {
35    let ac: AdminConnector =  AdminConnector::new(cfg).await;
36    ac.create_upstream_with_id(id, req).await.map_err(|e| InvalidRequest(e.to_string()))
37}
38
39#[instrument(skip_all)]
40pub (crate) async fn api_admin_delete_upstream(cfg: &ApisixConfig, id: &str) -> Result<()> {
41    let ac: AdminConnector =  AdminConnector::new(cfg).await;
42    ac.delete_upstream(id).await.map(|_| ()).map_err(|e| InvalidRequest(e.to_string()))
43}
44// endregion: upstream
45
46// region: service
47#[instrument(skip_all)]
48pub (crate) async fn api_admin_get_services(cfg: &ApisixConfig) -> Result<ListResponse<TypedItem<ApisixService>>> {
49    let ac: AdminConnector =  AdminConnector::new(cfg).await;
50    ac.get_services().await.map_err(|e| InvalidRequest(e.to_string()))
51}
52
53#[instrument(skip_all)]
54pub (crate) async fn api_admin_get_service(cfg: &ApisixConfig, id: &str) -> Result<TypedItem<ApisixService>> {
55    let ac: AdminConnector =  AdminConnector::new(cfg).await;
56    ac.get_service(id).await.map_err(|e| InvalidRequest(e.to_string()))
57}
58
59#[instrument(skip_all)]
60pub (crate) async fn api_admin_create_service_with_id(cfg: &ApisixConfig, id: &str, req: &ServiceRequest) -> Result<TypedItem<ApisixService>> {
61    let ac: AdminConnector =  AdminConnector::new(cfg).await;
62    ac.create_service_with_id(id, req).await.map_err(|e| InvalidRequest(e.to_string()))
63}
64
65#[instrument(skip_all)]
66pub (crate) async fn api_admin_delete_service(cfg: &ApisixConfig, id: &str) -> Result<()> {
67    let ac: AdminConnector =  AdminConnector::new(cfg).await;
68    ac.delete_service(id).await.map(|_| ()).map_err(|e| InvalidRequest(e.to_string()))
69}
70// endregion: service
71
72// region: route
73#[instrument(skip_all)]
74pub (crate) async fn api_admin_get_routes(cfg: &ApisixConfig) -> Result<ListResponse<TypedItem<ApisixRoute>>> {
75    let ac: AdminConnector =  AdminConnector::new(cfg).await;
76    ac.get_routes().await.map_err(|e| InvalidRequest(e.to_string()))
77}
78
79#[instrument(skip_all)]
80pub (crate) async fn api_admin_get_route(cfg: &ApisixConfig, id: &str) -> Result<TypedItem<ApisixRoute>> {
81    let ac: AdminConnector =  AdminConnector::new(cfg).await;
82    ac.get_route(id).await.map_err(|e| InvalidRequest(e.to_string()))
83}
84
85#[instrument(skip_all)]
86pub (crate) async fn api_admin_create_route_with_id(cfg: &ApisixConfig, id: &str, req: &RouteRequest) -> Result<TypedItem<ApisixRoute>> {
87    let ac: AdminConnector =  AdminConnector::new(cfg).await;
88    ac.create_route_with_id(id, req).await.map_err(|e| InvalidRequest(e.to_string()))
89}
90
91#[instrument(skip_all)]
92pub (crate) async fn api_admin_delete_route(cfg: &ApisixConfig, id: &str) -> Result<()> {
93    let ac: AdminConnector =  AdminConnector::new(cfg).await;
94    ac.delete_route(id).await.map(|_| ()).map_err(|e| InvalidRequest(e.to_string()))
95}
96// endregion: route
97
98// region: consumer group
99#[instrument(skip_all)]
100pub (crate) async fn api_admin_get_consumer_groups(cfg: &ApisixConfig) -> Result<ListResponse<TypedItem<ApisixConsumerGroup>>> {
101    let ac: AdminConnector =  AdminConnector::new(cfg).await;
102    ac.get_consumer_groups().await.map_err(|e| InvalidRequest(e.to_string()))
103}
104
105#[instrument(skip_all)]
106pub (crate) async fn api_admin_get_consumer_group(cfg: &ApisixConfig, id: &str) -> Result<TypedItem<ApisixConsumerGroup>> {
107    let ac: AdminConnector =  AdminConnector::new(cfg).await;
108    ac.get_consumer_group(id).await.map_err(|e| InvalidRequest(e.to_string()))
109}
110
111#[instrument(skip_all)]
112pub (crate) async fn api_admin_create_consumer_group_with_id(cfg: &ApisixConfig, id: &str, req: &ConsumerGroupRequest) -> Result<TypedItem<ApisixConsumerGroup>> {
113    let ac: AdminConnector =  AdminConnector::new(cfg).await;
114    ac.create_consumer_group_with_id(id, req).await.map_err(|e| InvalidRequest(e.to_string()))
115}
116
117#[instrument(skip_all)]
118pub (crate) async fn api_admin_delete_consumer_group(cfg: &ApisixConfig, id: &str) -> Result<()> {
119    let ac: AdminConnector =  AdminConnector::new(cfg).await;
120    ac.delete_consumer_group(id).await.map(|_| ()).map_err(|e| InvalidRequest(e.to_string()))
121}
122// endregion: consumer group
123
124// region: consumer
125#[instrument(skip_all)]
126pub (crate) async fn api_admin_get_consumers(cfg: &ApisixConfig) -> Result<ListResponse<TypedItem<ApisixConsumer>>> {
127    let ac: AdminConnector =  AdminConnector::new(cfg).await;
128    ac.get_consumers().await.map_err(|e| InvalidRequest(e.to_string()))
129}
130
131#[instrument(skip_all)]
132pub (crate) async fn api_admin_get_consumer(cfg: &ApisixConfig, id: &str) -> Result<TypedItem<ApisixConsumer>> {
133    let ac: AdminConnector =  AdminConnector::new(cfg).await;
134    ac.get_consumer(id).await.map_err(|e| InvalidRequest(e.to_string()))
135}
136
137#[instrument(skip_all)]
138pub (crate) async fn api_admin_create_consumer(cfg: &ApisixConfig, id: &str, req: &ConsumerRequest) -> Result<TypedItem<ApisixConsumer>> {
139    let ac: AdminConnector =  AdminConnector::new(cfg).await;
140    ac.create_consumer(id, req).await.map_err(|e| InvalidRequest(e.to_string()))
141}
142
143#[instrument(skip_all)]
144pub (crate) async fn api_admin_delete_consumer(cfg: &ApisixConfig, id: &str) -> Result<()> {
145    let ac: AdminConnector =  AdminConnector::new(cfg).await;
146    ac.delete_consumer(id).await.map(|_| ()).map_err(|e| InvalidRequest(e.to_string()))
147}
148
149// endregion: consumer