htb-cli 0.1.0

Hack The Box CLI
use crate::error::HtbError;
use crate::models::season::{Season, SeasonListResponse, SeasonUserRank, SeasonUserRanksResponse};

use super::HtbClient;

pub struct SeasonApi<'a>(pub(crate) &'a HtbClient);

impl SeasonApi<'_> {
    pub async fn list(&self) -> Result<Vec<Season>, HtbError> {
        let resp: SeasonListResponse = self.0.get("/api/v4/season/list").await?;
        Ok(resp.data)
    }

    pub async fn user_ranks(&self, user_id: u64) -> Result<Vec<SeasonUserRank>, HtbError> {
        let resp: SeasonUserRanksResponse = self
            .0
            .get(&format!("/api/v4/season/user/{user_id}/ranks"))
            .await?;
        Ok(resp.data)
    }
}