use anyhow::Result;
use reqwest::Method;
use crate::{common::model::BangumiClient, module::model::Paged};
use super::model::{Episode, EpisodeType};
impl BangumiClient {
pub async fn get_episodes(
&self,
subject_id: u32,
r#type: Option<EpisodeType>,
limit: Option<u32>,
offset: Option<u32>,
) -> Result<Paged<Episode>> {
let url = format!("{}/v0/episodes", self.base_path);
let mut request_builder = self.request_builder(Method::GET, &url);
request_builder = request_builder.query(&[("subject_id", &subject_id)]);
if let Some(ref param_value) = r#type {
request_builder = request_builder.query(&[("type", ¶m_value)]);
}
if let Some(ref param_value) = limit {
request_builder = request_builder.query(&[("limit", ¶m_value)]);
}
if let Some(ref param_value) = offset {
request_builder = request_builder.query(&[("offset", ¶m_value)]);
}
let res = self.request_send(request_builder).await?.json().await?;
Ok(res)
}
pub async fn get_episode(&self, episode_id: u32) -> Result<Episode> {
let url = format!("{}/v0/episodes/{episode_id}", self.base_path);
let request_builder = self.request_builder(Method::GET, &url);
let res = self.request_send(request_builder).await?.json().await?;
Ok(res)
}
}