use reqwest::{Method, RequestBuilder};
use crate::Permission;
use crate::{Auth0Client, Auth0RequestBuilder};
pub struct UserPermissionsDelete<'a> {
client: &'a Auth0Client,
id: String,
permissions: Vec<Permission>,
}
impl<'a> UserPermissionsDelete<'a> {
pub fn new(client: &'a Auth0Client, id: &str) -> Self {
Self {
client,
id: id.to_owned(),
permissions: Vec::new(),
}
}
pub fn permission(&mut self, permission: Permission) -> &mut Self {
self.permissions.push(permission);
self
}
pub fn permissions<P: AsRef<[Permission]>>(&mut self, permissions: P) -> &mut Self {
self.permissions.extend_from_slice(permissions.as_ref());
self
}
}
impl<'a> AsRef<Auth0Client> for UserPermissionsDelete<'a> {
fn as_ref(&self) -> &Auth0Client {
self.client
}
}
impl<'a> Auth0RequestBuilder for UserPermissionsDelete<'a> {
fn build(&self, client: &Auth0Client) -> RequestBuilder {
client
.begin(
Method::DELETE,
&format!("api/v2/users/{}/permissions", self.id),
)
.json(&self.permissions)
}
}