use serde::Serialize;
use crate::api::orgs::OrgHandler;
use crate::models::orgs::{
OrgNetworkConfiguration, OrgNetworkConfigurationsResponse, OrgNetworkSettings,
};
use crate::Result;
pub struct OrgNetworkConfigurationsHandler<'octo, 'b> {
handler: &'b OrgHandler<'octo>,
}
impl<'octo, 'b> OrgNetworkConfigurationsHandler<'octo, 'b> {
pub(crate) fn new(handler: &'b OrgHandler<'octo>) -> Self {
Self { handler }
}
pub async fn list(&self) -> Result<OrgNetworkConfigurationsResponse> {
let route = format!(
"/orgs/{}/settings/network-configurations",
self.handler.owner
);
self.handler.crab.get(route, None::<&()>).await
}
pub async fn create(&self, body: &impl Serialize) -> Result<OrgNetworkConfiguration> {
let route = format!(
"/orgs/{}/settings/network-configurations",
self.handler.owner
);
self.handler.crab.post(route, Some(body)).await
}
pub async fn get(&self, configuration_id: impl AsRef<str>) -> Result<OrgNetworkConfiguration> {
let route = format!(
"/orgs/{}/settings/network-configurations/{}",
self.handler.owner,
configuration_id.as_ref()
);
self.handler.crab.get(route, None::<&()>).await
}
pub async fn update(
&self,
configuration_id: impl AsRef<str>,
body: &impl Serialize,
) -> Result<OrgNetworkConfiguration> {
let route = format!(
"/orgs/{}/settings/network-configurations/{}",
self.handler.owner,
configuration_id.as_ref()
);
self.handler.crab.patch(route, Some(body)).await
}
pub async fn delete(&self, configuration_id: impl AsRef<str>) -> Result<()> {
let route = format!(
"/orgs/{}/settings/network-configurations/{}",
self.handler.owner,
configuration_id.as_ref()
);
let res = self.handler.crab._delete(route, None::<&()>).await?;
crate::map_github_error(res).await.map(drop)
}
pub async fn get_network_settings(
&self,
settings_id: impl AsRef<str>,
) -> Result<OrgNetworkSettings> {
let route = format!(
"/orgs/{}/settings/network-settings/{}",
self.handler.owner,
settings_id.as_ref()
);
self.handler.crab.get(route, None::<&()>).await
}
}