use hyper;
use hyper_util::client::legacy::connect::Connect;
use hyper_util::client::legacy::connect::HttpConnector;
use hyper_util::client::legacy::Client;
use hyper_util::rt::TokioExecutor;
use std::time::Duration;
pub struct Configuration<C: Connect = HttpConnector>
where
C: Clone + std::marker::Send + Sync + 'static,
{
pub base_path: String,
pub user_agent: Option<String>,
pub client: Client<C, String>,
pub basic_auth: Option<BasicAuth>,
pub oauth_access_token: Option<String>,
pub api_key: Option<ApiKey>,
pub timeout: Option<Duration>,
}
pub type BasicAuth = (String, Option<String>);
pub struct ApiKey {
pub prefix: Option<String>,
pub key: String,
}
impl Configuration<HttpConnector> {
pub fn new() -> Configuration<HttpConnector> {
Configuration::default()
}
}
impl<C: Connect> Configuration<C>
where
C: Clone + std::marker::Send + Sync,
{
pub fn with_client(client: Client<C, String>) -> Configuration<C> {
Configuration {
base_path: "https://api.line.me".to_owned(),
user_agent: Some("LINE-Bot-SDK-Rust/1".to_owned()),
client,
basic_auth: None,
oauth_access_token: None,
api_key: None,
timeout: None,
}
}
}
impl Default for Configuration<HttpConnector> {
fn default() -> Self {
let client = Client::builder(TokioExecutor::new()).build_http();
Configuration::with_client(client)
}
}