use std::sync::Arc;
use crate::client::{BaseClient, RawResponse};
use crate::collection::Collection;
use crate::error::Error;
use crate::types::{
CreateEmailVerificationListParams, EmailVerificationList, EmailVerificationListResultsParams,
ListEmailVerificationListsParams,
};
pub struct EmailVerificationListService {
pub(crate) client: Arc<BaseClient>,
}
impl EmailVerificationListService {
pub async fn create(
&self,
params: CreateEmailVerificationListParams,
) -> Result<EmailVerificationList, Error> {
self.client
.request(
"POST",
"/v2/email-verification-lists",
serde_json::to_value(¶ms).ok(),
None,
)
.await
}
pub async fn list(
&self,
params: Option<ListEmailVerificationListsParams>,
) -> Result<Collection<EmailVerificationList>, Error> {
let query = params.map(|p| {
let mut q = Vec::new();
if let Some(page) = p.page {
q.push(("page", page.to_string()));
}
if let Some(limit) = p.limit {
q.push(("limit", limit.to_string()));
}
q
});
self.client
.request::<Collection<EmailVerificationList>>(
"GET",
"/v2/email-verification-lists",
None,
query.as_deref(),
)
.await
}
pub async fn get(&self, id: &str) -> Result<EmailVerificationList, Error> {
let path = format!("/v2/email-verification-lists/{}", urlencoding::encode(id));
self.client.request("GET", &path, None, None).await
}
pub async fn results(
&self,
id: &str,
params: Option<EmailVerificationListResultsParams>,
) -> Result<Collection<serde_json::Value>, Error> {
let path = format!(
"/v2/email-verification-lists/{}/results",
urlencoding::encode(id)
);
let query = params.map(|p| {
let mut q = Vec::new();
if let Some(page) = p.page {
q.push(("page", page.to_string()));
}
if let Some(limit) = p.limit {
q.push(("limit", limit.to_string()));
}
q
});
self.client
.request::<Collection<serde_json::Value>>("GET", &path, None, query.as_deref())
.await
}
pub async fn export(&self, id: &str) -> Result<RawResponse, Error> {
let path = format!(
"/v2/email-verification-lists/{}/export",
urlencoding::encode(id)
);
self.client.request_raw("GET", &path).await
}
}