use crate::{Service, Error};
use reqwest::blocking::{Client as SyncClinet};
use serde::Serialize;
use std::cmp::PartialEq;
#[derive(Debug, Clone)]
pub struct Client {
pub token: String,
}
impl Client {
pub fn set_token<T>(access_token: T) -> Self
where
T: Into<String>,
{
Client {
token: access_token.into(),
}
}
pub fn call<K>(&self, service: Service<K>) -> Result<reqwest::blocking::Response, Error>
where
K: Serialize + Into<String> + PartialEq,
{
let mut client = SyncClinet::new()
.request(service.method, service.url.as_str())
.query(&vec![("access_token", self.clone().token)]);
if let Some(params) = service.params {
client = client.query(¶ms);
};
client.send().map_err(Into::into)
}
}