tmdb_client/apis/
genres_api.rs1use std::borrow::Borrow;
12use std::option::Option;
13use std::rc::Rc;
14
15use reqwest;
16
17use super::configuration;
18use crate::Error;
19
20pub struct GenresApiClient {
21 configuration: Rc<configuration::Configuration>,
22}
23
24impl GenresApiClient {
25 pub fn new(configuration: Rc<configuration::Configuration>) -> GenresApiClient {
26 GenresApiClient {
27 configuration,
28 }
29 }
30}
31
32pub trait GenresApi {
33 fn get_all_movie_genres_list(
34 &self,
35 language: Option<&str>,
36 ) -> Result<crate::models::GenresList, Error>;
37 fn get_all_tv_genres_list(
38 &self,
39 language: Option<&str>,
40 ) -> Result<crate::models::GenresList, Error>;
41 fn get_movies_by_genre_paginated(
42 &self,
43 genre_id: i32,
44 language: Option<&str>,
45 include_adult: Option<bool>,
46 sort_by: Option<&str>,
47 ) -> Result<crate::models::MoviePaginated, Error>;
48}
49
50impl GenresApi for GenresApiClient {
51 fn get_all_movie_genres_list(
52 &self,
53 language: Option<&str>,
54 ) -> Result<crate::models::GenresList, Error> {
55 let configuration: &configuration::Configuration = self.configuration.borrow();
56 let client = &configuration.client;
57
58 let uri_str = format!("{}/genre/movie/list", configuration.base_path);
59 let mut req_builder = client.get(uri_str.as_str());
60
61 if let Some(ref s) = language {
62 req_builder = req_builder.query(&[("language", &s.to_string())]);
63 }
64 if let Some(ref apikey) = configuration.api_key {
65 req_builder = req_builder.query(&[("api_key", apikey)]);
66 }
67 if let Some(ref user_agent) = configuration.user_agent {
68 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
69 }
70
71 let req = req_builder.build()?;
73
74 Ok(client.execute(req)?.error_for_status()?.json()?)
75 }
76
77 fn get_all_tv_genres_list(
78 &self,
79 language: Option<&str>,
80 ) -> Result<crate::models::GenresList, Error> {
81 let configuration: &configuration::Configuration = self.configuration.borrow();
82 let client = &configuration.client;
83
84 let uri_str = format!("{}/genre/tv/list", configuration.base_path);
85 let mut req_builder = client.get(uri_str.as_str());
86
87 if let Some(ref s) = language {
88 req_builder = req_builder.query(&[("language", &s.to_string())]);
89 }
90 if let Some(ref apikey) = configuration.api_key {
91 req_builder = req_builder.query(&[("api_key", apikey)]);
92 }
93 if let Some(ref user_agent) = configuration.user_agent {
94 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
95 }
96
97 let req = req_builder.build()?;
99
100 Ok(client.execute(req)?.error_for_status()?.json()?)
101 }
102
103 fn get_movies_by_genre_paginated(
104 &self,
105 genre_id: i32,
106 language: Option<&str>,
107 include_adult: Option<bool>,
108 sort_by: Option<&str>,
109 ) -> Result<crate::models::MoviePaginated, Error> {
110 let configuration: &configuration::Configuration = self.configuration.borrow();
111 let client = &configuration.client;
112
113 let uri_str = format!(
114 "{}/genre/{genre_id}/movies",
115 configuration.base_path,
116 genre_id = genre_id
117 );
118 let mut req_builder = client.get(uri_str.as_str());
119
120 if let Some(ref s) = language {
121 req_builder = req_builder.query(&[("language", &s.to_string())]);
122 }
123 if let Some(ref s) = include_adult {
124 req_builder = req_builder.query(&[("include_adult", &s.to_string())]);
125 }
126 if let Some(ref s) = sort_by {
127 req_builder = req_builder.query(&[("sort_by", &s.to_string())]);
128 }
129 if let Some(ref apikey) = configuration.api_key {
130 req_builder = req_builder.query(&[("api_key", apikey)]);
131 }
132 if let Some(ref user_agent) = configuration.user_agent {
133 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
134 }
135
136 let req = req_builder.build()?;
138
139 Ok(client.execute(req)?.error_for_status()?.json()?)
140 }
141}