unifly_api/session/
nat.rs1use serde_json::Value;
8use tracing::debug;
9
10use super::SessionClient;
11use crate::error::Error;
12
13impl SessionClient {
14 pub async fn list_nat_rules(&self) -> Result<Vec<Value>, Error> {
18 let url = self.site_url_v2("nat");
19 debug!("listing NAT rules (v2)");
20 let val = self.get_raw(url).await?;
21 Ok(val.as_array().cloned().unwrap_or_default())
22 }
23
24 pub async fn create_nat_rule(&self, body: &Value) -> Result<Value, Error> {
28 let path = format!("v2/api/site/{}/nat", self.site());
29 debug!("creating NAT rule (v2)");
30 self.raw_post(&path, body).await
31 }
32
33 pub async fn update_nat_rule(&self, rule_id: &str, body: &Value) -> Result<Value, Error> {
37 let path = format!("v2/api/site/{}/nat/{rule_id}", self.site());
38 debug!(rule_id, "updating NAT rule (v2)");
39 self.raw_put(&path, body).await
40 }
41
42 pub async fn delete_nat_rule(&self, rule_id: &str) -> Result<(), Error> {
46 let path = format!("v2/api/site/{}/nat/{rule_id}", self.site());
47 debug!(rule_id, "deleting NAT rule (v2)");
48 self.raw_delete(&path).await
49 }
50}