use crate::device_model::{SdfCommand, SdfHfxData, SdfHfxObject, SdfObjectList};
use super::client::InverseHttpClient;
impl InverseHttpClient {
pub async fn get_sdf(
&self,
device_type: &str,
id: &str,
session: Option<&str>,
) -> Result<Vec<SdfHfxData>, Box<dyn std::error::Error + Send + Sync>> {
let mut url = self.device_url(device_type, id, "sdf");
Self::append_session(&mut url, session);
self.request_envelope(self.client.get(&url)).await
}
pub async fn get_sdf_by_id(
&self,
device_type: &str,
id: &str,
hfx_id: &str,
session: Option<&str>,
) -> Result<SdfHfxData, Box<dyn std::error::Error + Send + Sync>> {
let mut url = format!("{}/{}/{}/sdf/{}", self.base_url, device_type, id, hfx_id);
Self::append_session(&mut url, session);
self.request_envelope(self.client.get(&url)).await
}
pub async fn set_sdf(
&self,
device_type: &str,
id: &str,
session: Option<&str>,
cmd: &SdfCommand,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = self.device_url(device_type, id, "sdf");
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.post(&url).json(cmd))
.await
}
pub async fn set_sdf_by_id(
&self,
device_type: &str,
id: &str,
hfx_id: &str,
session: Option<&str>,
obj: &SdfHfxObject,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = format!("{}/{}/{}/sdf/{}", self.base_url, device_type, id, hfx_id);
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.post(&url).json(obj))
.await
}
pub async fn patch_sdf(
&self,
device_type: &str,
id: &str,
session: Option<&str>,
cmd: &SdfCommand,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = self.device_url(device_type, id, "sdf");
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.patch(&url).json(cmd))
.await
}
pub async fn patch_sdf_by_id(
&self,
device_type: &str,
id: &str,
hfx_id: &str,
session: Option<&str>,
obj: &SdfHfxObject,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = format!("{}/{}/{}/sdf/{}", self.base_url, device_type, id, hfx_id);
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.patch(&url).json(obj))
.await
}
pub async fn delete_sdf(
&self,
device_type: &str,
id: &str,
session: Option<&str>,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = self.device_url(device_type, id, "sdf");
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.delete(&url)).await
}
pub async fn delete_sdf_by_id(
&self,
device_type: &str,
id: &str,
hfx_id: &str,
session: Option<&str>,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut url = format!("{}/{}/{}/sdf/{}", self.base_url, device_type, id, hfx_id);
Self::append_session(&mut url, session);
self.request_envelope_void(self.client.delete(&url)).await
}
pub async fn get_all_sdf(
&self,
) -> Result<Vec<SdfHfxData>, Box<dyn std::error::Error + Send + Sync>> {
let url = format!("{}/sdf", self.base_url);
self.request_envelope(self.client.get(&url)).await
}
pub async fn set_all_sdf(
&self,
list: &SdfObjectList,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let url = format!("{}/sdf", self.base_url);
self.request_envelope_void(self.client.post(&url).json(list))
.await
}
pub async fn patch_all_sdf(
&self,
list: &SdfObjectList,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let url = format!("{}/sdf", self.base_url);
self.request_envelope_void(self.client.patch(&url).json(list))
.await
}
pub async fn delete_all_sdf(
&self,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let url = format!("{}/sdf", self.base_url);
self.request_envelope_void(self.client.delete(&url)).await
}
}