use crate::common::*;
use crate::rest_client::*;
use crate::rest_models::*;
use serde_json::Value;
use std::collections::HashMap;
use std::error::Error;
#[derive(Clone, Debug)]
pub struct RestApi {
pub client: RestClient,
pub config: ApiConfig,
}
impl RestApi {
pub async fn new(config: ApiConfig) -> Result<Self, Box<dyn Error>> {
Ok(Self {
client: RestClient::new(config.clone()).await?,
config,
})
}
pub async fn delete_session(&self) -> Result<(Value, ()), Box<dyn Error>> {
let (header_map, _) = self
.client
.delete("session".to_string())
.await?;
let headers: Value = headers_to_json(&header_map)?;
Ok((headers, ()))
}
pub async fn get_session(
&self,
params: Option<HashMap<String, String>>,
) -> Result<(Value, Session), Box::<dyn Error>> {
let (header_map, response_value) = self
.client
.get("session".to_string(), Some(1), params)
.await?;
let headers: Value = headers_to_json(&header_map)?;
let session: Session = deserialize(&response_value)?;
Ok((headers, session))
}
pub async fn put_session(
&self,
body: &AccountSwitchRequest,
) -> Result<(Value, AccountSwitchResponse), Box<dyn Error>> {
let (header_map, response_value) = self
.client
.put("session".to_string(), body, Some(1))
.await?;
let headers: Value = headers_to_json(&header_map)?;
let account_switch_response: AccountSwitchResponse = deserialize(&response_value)?;
Ok((headers, account_switch_response))
}
}