some_random_api/endpoints/canvas/
misc.rs1use crate::{Hex, Requester, Tweet, RGB};
2use anyhow::{Error, Result};
3
4pub struct CanvasMiscEndpoint(pub(crate) Requester);
5
6impl<'a> CanvasMiscEndpoint {
7 pub async fn bisexual<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
9 self.0
10 .request_image(
11 "canvas/misc/bisexual",
12 &[("avatar", avatar_url.to_string())],
13 )
14 .await
15 }
16
17 pub async fn blur<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
19 self.0
20 .request_image("canvas/misc/blur", &[("avatar", avatar_url.to_string())])
21 .await
22 }
23
24 pub async fn circle<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
26 self.0
27 .request_image("canvas/misc/circle", &[("avatar", avatar_url.to_string())])
28 .await
29 }
30
31 pub async fn color_viewer<T: TryInto<Hex>>(&self, hex: T) -> Result<Vec<u8>> {
33 self.0
34 .request_image(
35 "canvas/misc/colorviewer",
36 &[(
37 "hex",
38 hex.try_into()
39 .map_err(|_| Error::msg("Failed to parse hex string"))?
40 .hex,
41 )],
42 )
43 .await
44 }
45
46 pub async fn heart<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
48 self.0
49 .request_image("canvas/misc/heart", &[("avatar", avatar_url.to_string())])
50 .await
51 }
52
53 pub async fn hex<T: ToString>(&self, rgb: T) -> Result<Hex> {
55 self.0
56 .request("canvas/misc/hex", Some(&[("rgb", rgb.to_string())]))
57 .await
58 }
59
60 pub async fn horny<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
62 self.0
63 .request_image("canvas/misc/horny", &[("avatar", avatar_url.to_string())])
64 .await
65 }
66
67 pub async fn stupid<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
69 self.0
70 .request_image(
71 "canvas/misc/its-so-stupid",
72 &[("avatar", avatar_url.to_string())],
73 )
74 .await
75 }
76
77 pub async fn jpg<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
79 self.0
80 .request_image("canvas/misc/jpg", &[("avatar", avatar_url.to_string())])
81 .await
82 }
83
84 pub async fn lesbian<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
86 self.0
87 .request_image("canvas/misc/lesbian", &[("avatar", avatar_url.to_string())])
88 .await
89 }
90
91 pub async fn lgbt<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
93 self.0
94 .request_image("canvas/misc/lgbt", &[("avatar", avatar_url.to_string())])
95 .await
96 }
97
98 pub async fn lied<T: ToString, U: ToString>(
100 &self,
101 username: T,
102 avatar_url: U,
103 ) -> Result<Vec<u8>> {
104 self.0
105 .request_image(
106 "canvas/misc/lied",
107 &[
108 ("username", username.to_string()),
109 ("avatar", avatar_url.to_string()),
110 ],
111 )
112 .await
113 }
114
115 pub async fn lolice<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
117 self.0
118 .request_image("canvas/misc/lolice", &[("avatar", avatar_url.to_string())])
119 .await
120 }
121
122 pub async fn namecard<T: ToString, U: ToString, V: ToString, W: ToString>(
124 &self,
125 username: T,
126 avatar_url: U,
127 birthday: V,
128 description: Option<W>,
129 ) -> Result<Vec<u8>> {
130 self.0
131 .request_image(
132 "canvas/misc/namecard",
133 &[
134 ("username", username.to_string()),
135 ("avatar", avatar_url.to_string()),
136 ("birthday", birthday.to_string()),
137 (
138 "description",
139 description.map_or("".into(), |description| description.to_string()),
140 ),
141 ],
142 )
143 .await
144 }
145
146 pub async fn no_bitches<T: ToString>(&self, no: T) -> Result<Vec<u8>> {
148 self.0
149 .request_image("canvas/misc/nobitches", &[("no", no.to_string())])
150 .await
151 }
152
153 pub async fn non_binary<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
155 self.0
156 .request_image(
157 "canvas/misc/nonbinary",
158 &[("avatar", avatar_url.to_string())],
159 )
160 .await
161 }
162
163 pub async fn oogway<T: ToString>(&self, quote: T) -> Result<Vec<u8>> {
165 self.0
166 .request_image("canvas/misc/oogway", &[("quote", quote.to_string())])
167 .await
168 }
169
170 pub async fn oogway_2<T: ToString>(&self, quote: T) -> Result<Vec<u8>> {
172 self.0
173 .request_image("canvas/misc/oogway2", &[("quote", quote.to_string())])
174 .await
175 }
176
177 pub async fn pansexual<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
179 self.0
180 .request_image(
181 "canvas/misc/pansexual",
182 &[("avatar", avatar_url.to_string())],
183 )
184 .await
185 }
186
187 pub async fn pixelate<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
189 self.0
190 .request_image(
191 "canvas/misc/pixelate",
192 &[("avatar", avatar_url.to_string())],
193 )
194 .await
195 }
196
197 pub async fn rgb<T: TryInto<Hex, Error = Error>>(&self, hex: T) -> Result<RGB> {
199 self.0
200 .request("canvas/misc/rgb", Some(&[("hex", hex.try_into()?.hex)]))
201 .await
202 }
203
204 pub async fn simp<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
206 self.0
207 .request_image(
208 "canvas/misc/simpcard",
209 &[("avatar", avatar_url.to_string())],
210 )
211 .await
212 }
213
214 pub async fn spin<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
216 self.0
217 .request_image("canvas/misc/spin", &[("avatar", avatar_url.to_string())])
218 .await
219 }
220
221 pub async fn tonikawa<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
223 self.0
224 .request_image(
225 "canvas/misc/tonikawa",
226 &[("avatar", avatar_url.to_string())],
227 )
228 .await
229 }
230
231 pub async fn transgender<T: ToString>(&self, avatar_url: T) -> Result<Vec<u8>> {
233 self.0
234 .request_image(
235 "canvas/misc/transgender",
236 &[("avatar", avatar_url.to_string())],
237 )
238 .await
239 }
240
241 pub async fn tweet(&self, tweet: Tweet) -> Result<Vec<u8>> {
243 self.0.request_image("canvas/misc/tweet", &tweet).await
244 }
245
246 pub async fn youtube_comment<T: ToString, U: ToString, V: ToString>(
248 &self,
249 username: T,
250 avatar_url: U,
251 comment: V,
252 ) -> Result<Vec<u8>> {
253 self.0
254 .request_image(
255 "canvas/misc/youtube-comment",
256 &[
257 ("username", username.to_string()),
258 ("avatar", avatar_url.to_string()),
259 ("comment", comment.to_string()),
260 ],
261 )
262 .await
263 }
264}