pub mod api;
pub mod utility;
use std::collections::HashMap;
use crate::utility::{ZBError, ZBResult};
pub struct ZBUrlProvider{
pub url: String,
pub bulk_url: String,
}
impl ZBUrlProvider {
pub fn url_of(&self, endpoint: &str) -> String {
return self.url.to_owned() + endpoint;
}
}
impl Default for ZBUrlProvider {
fn default() -> Self {
ZBUrlProvider{
url: crate::utility::URI.clone().to_string(),
bulk_url: crate::utility::BULK_URI.clone().to_string(),
}
}
}
pub struct ZeroBounce {
pub api_key: String,
pub client: reqwest::blocking::Client,
pub url_provider: ZBUrlProvider,
}
impl ZeroBounce {
pub fn new(api_key: &str) -> ZeroBounce {
ZeroBounce {
api_key: api_key.to_string().clone(),
client: reqwest::blocking::Client::default(),
url_provider: ZBUrlProvider::default()
}
}
fn generic_get_request(
&self, endpoint: &str, query_args: HashMap<&str, &str>
) -> ZBResult<String>
{
let url = self.url_provider.url_of(endpoint);
let response = self.client.get(url)
.query(&query_args)
.send()?;
let response_ok = response.status().is_success();
let response_content = response.text()?;
if !response_ok {
return Err(ZBError::explicit(response_content.as_str()));
}
Ok(response_content)
}
}