use crate::client::Unosend;
use crate::error::UnosendError;
use serde::{Deserialize, Serialize};
pub struct AudiencesApi {
client: Unosend,
}
impl AudiencesApi {
pub(crate) fn new(client: Unosend) -> Self {
Self { client }
}
pub async fn create(&self, name: &str) -> Result<Audience, UnosendError> {
self.client
.post("/audiences", &CreateAudienceRequest { name: name.to_string() })
.await
}
pub async fn list(&self) -> Result<AudienceList, UnosendError> {
self.client.get("/audiences").await
}
pub async fn get(&self, audience_id: &str) -> Result<Audience, UnosendError> {
self.client.get(&format!("/audiences/{}", audience_id)).await
}
pub async fn delete(&self, audience_id: &str) -> Result<(), UnosendError> {
self.client.delete(&format!("/audiences/{}", audience_id)).await
}
}
#[derive(Serialize)]
struct CreateAudienceRequest {
name: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Audience {
pub id: String,
pub name: String,
pub created_at: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AudienceList {
pub data: Vec<Audience>,
}