bangumi_api/module/episode/
service.rs1use anyhow::Result;
2use reqwest::Method;
3
4use crate::{common::model::BangumiClient, module::model::Paged};
5
6use super::model::{Episode, EpisodeType};
7
8impl BangumiClient {
9 pub async fn get_episodes(
22 &self,
23 subject_id: u32,
24 r#type: Option<EpisodeType>,
25 limit: Option<u32>,
26 offset: Option<u32>,
27 ) -> Result<Paged<Episode>> {
28 let url = format!("{}/v0/episodes", self.base_path);
30
31 let mut request_builder = self.request_builder(Method::GET, &url);
33
34 request_builder = request_builder.query(&[("subject_id", &subject_id)]);
36 if let Some(ref param_value) = r#type {
38 request_builder = request_builder.query(&[("type", ¶m_value)]);
39 }
40 if let Some(ref param_value) = limit {
42 request_builder = request_builder.query(&[("limit", ¶m_value)]);
43 }
44 if let Some(ref param_value) = offset {
46 request_builder = request_builder.query(&[("offset", ¶m_value)]);
47 }
48
49 let res = self.request_send(request_builder).await?.json().await?;
51
52 Ok(res)
53 }
54
55 pub async fn get_episode(&self, episode_id: u32) -> Result<Episode> {
65 let url = format!("{}/v0/episodes/{episode_id}", self.base_path);
67
68 let request_builder = self.request_builder(Method::GET, &url);
70
71 let res = self.request_send(request_builder).await?.json().await?;
73
74 Ok(res)
75 }
76}