use std::collections::BTreeMap;
use serde::Deserialize;
use tracing::instrument;
use crate::client::Client;
use crate::error::Error;
#[derive(Debug, Deserialize)]
pub struct TokenResponse {
pub token: String,
}
#[derive(Debug, Deserialize)]
pub struct SessionResponse {
pub session: Session,
}
#[derive(Debug, Deserialize)]
pub struct Session {
pub name: String,
pub key: String,
pub subscriber: u32,
}
impl Client {
#[instrument(skip(self))]
pub async fn get_token(&self) -> Result<String, Error> {
let params = BTreeMap::new();
let response: TokenResponse = self.signed_post("auth.getToken", params).await?;
Ok(response.token)
}
#[instrument(skip(self))]
pub async fn get_session(&self, token: &str) -> Result<Session, Error> {
let mut params = BTreeMap::new();
params.insert("token".into(), token.into());
let response: SessionResponse = self.signed_post("auth.getSession", params).await?;
Ok(response.session)
}
}