}
#[derive(Deserialize)] struct R { ok: bool }
+#[derive(Deserialize)] struct OwnerResponse { ok: String }
#[derive(Deserialize)] struct ApiErrorList { errors: Vec<ApiError> }
#[derive(Deserialize)] struct ApiError { detail: String }
#[derive(Serialize)] struct OwnersReq<'a> { users: &'a [&'a str] }
let body = serde_json::to_string(&OwnersReq { users: owners })?;
let body = self.put(format!("/crates/{}/owners", krate),
body.as_bytes())?;
- //assert!(serde_json::from_str::<R>(&body)?.ok);
- //Ok(())
- Ok(body)
+ Ok(serde_json::from_str::<OwnerResponse>(&body)?.ok)
}
pub fn remove_owners(&mut self, krate: &str, owners: &[&str]) -> Result<()> {
let body = serde_json::to_string(&OwnersReq { users: owners })?;
let body = self.delete(format!("/crates/{}/owners", krate),
Some(body.as_bytes()))?;
- assert!(serde_json::from_str::<R>(&body)?.ok);
+ serde_json::from_str::<OwnerResponse>(&body)?;
Ok(())
}