use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
pub struct BlockPulsarAPI {
client: reqwest::Client,
api_host: String,
api_key: String,
api_secret: String
}
static DEFAULT_API_HOST: &str = "https://api.blockpulsar.com/";
impl BlockPulsarAPI {
pub fn new(api_key: &str, api_secret: &str) -> BlockPulsarAPI {
return BlockPulsarAPI {
client: reqwest::Client::new(),
api_host: String::from(DEFAULT_API_HOST),
api_key: String::from(api_key),
api_secret: String::from(api_secret)
};
}
fn construct_headers(&self) -> HeaderMap {
let mut headers = HeaderMap::new();
headers.insert(
HeaderName::from_static("x-api-key"),
HeaderValue::from_str(&self.api_key).unwrap(),
);
headers.insert(
HeaderName::from_static("x-api-secret"),
HeaderValue::from_str(&self.api_secret).unwrap(),
);
headers.insert(
HeaderName::from_static("user-agent"),
HeaderValue::from_str("blockpulsar_client_rust 1.0.0").unwrap()
);
return headers;
}
pub(crate) async fn request(&self, route: &str, params: &[(&str, &str)]) -> reqwest::Response {
let api_url = format!("{}{}", self.api_host, route);
let res = self
.client
.get(api_url)
.headers(self.construct_headers())
.query(¶ms)
.send()
.await;
return res.unwrap();
}
}