use reqwest::Client;
use serde_json::to_string;
use crate::{
errors::{ChorusError, ChorusResult},
instance::ChorusUser,
ratelimiter::ChorusRequest,
types::{self, LimitType, PermissionOverwrite, Snowflake},
};
impl types::Channel {
pub async fn modify_permissions(
user: &mut ChorusUser,
channel_id: Snowflake,
audit_log_reason: Option<String>,
overwrite: PermissionOverwrite,
) -> ChorusResult<()> {
let url = format!(
"{}/channels/{}/permissions/{}",
user.belongs_to.read().unwrap().urls.api,
channel_id,
overwrite.id
);
let chorus_request = ChorusRequest {
request: Client::new().put(url).json(&overwrite),
limit_type: LimitType::Channel(channel_id),
}
.with_maybe_audit_log_reason(audit_log_reason)
.with_headers_for(user);
chorus_request.send_and_handle_as_result(user).await
}
pub async fn delete_permission(
user: &mut ChorusUser,
channel_id: Snowflake,
overwrite_id: Snowflake,
) -> ChorusResult<()> {
let url = format!(
"{}/channels/{}/permissions/{}",
user.belongs_to.read().unwrap().urls.api,
channel_id,
overwrite_id
);
let request = ChorusRequest {
request: Client::new().delete(url),
limit_type: LimitType::Channel(channel_id),
}
.with_headers_for(user);
request.send_and_handle_as_result(user).await
}
}