unifly_api/session/
wireguard.rs1use serde_json::Value;
2use tracing::debug;
3
4use super::SessionClient;
5use crate::error::Error;
6
7impl SessionClient {
8 pub async fn list_wireguard_peers(&self, server_id: &str) -> Result<Vec<Value>, Error> {
12 let mut url = self.site_url_v2(&format!("wireguard/{server_id}/users"));
13 url.query_pairs_mut().append_pair("networkId", server_id);
14 debug!(server_id, "listing WireGuard peers (v2)");
15 let val = self.get_raw(url).await?;
16 Ok(val.as_array().cloned().unwrap_or_default())
17 }
18
19 pub async fn list_all_wireguard_peers(&self) -> Result<Vec<Value>, Error> {
23 let url = self.site_url_v2("wireguard/users");
24 debug!("listing all WireGuard peers (v2)");
25 let val = self.get_raw(url).await?;
26 Ok(val.as_array().cloned().unwrap_or_default())
27 }
28
29 pub async fn get_wireguard_peer_existing_subnets(&self) -> Result<Value, Error> {
33 let url = self.site_url_v2("wireguard/users/existing-subnets");
34 debug!("listing WireGuard peer existing subnets (v2)");
35 self.get_raw(url).await
36 }
37
38 pub async fn create_wireguard_peers(
42 &self,
43 server_id: &str,
44 body: &Value,
45 ) -> Result<Value, Error> {
46 let path = format!(
47 "v2/api/site/{}/wireguard/{server_id}/users/batch",
48 self.site()
49 );
50 debug!(server_id, "creating WireGuard peers (v2)");
51 self.raw_post(&path, body).await
52 }
53
54 pub async fn update_wireguard_peers(
58 &self,
59 server_id: &str,
60 body: &Value,
61 ) -> Result<Value, Error> {
62 let path = format!(
63 "v2/api/site/{}/wireguard/{server_id}/users/batch",
64 self.site()
65 );
66 debug!(server_id, "updating WireGuard peers (v2)");
67 self.raw_put(&path, body).await
68 }
69
70 pub async fn delete_wireguard_peers(
74 &self,
75 server_id: &str,
76 body: &Value,
77 ) -> Result<Value, Error> {
78 let path = format!(
79 "v2/api/site/{}/wireguard/{server_id}/users/batch_delete",
80 self.site()
81 );
82 debug!(server_id, "deleting WireGuard peers (v2)");
83 self.raw_post(&path, body).await
84 }
85}