1use crate::client::Client;
2use crate::errors::Error;
3use crate::Result;
4use reqwest::header::{HeaderMap, HeaderValue};
5use reqwest::Method;
6use serde_json::Value;
7use tracing::instrument;
8use urlencoding::encode;
9#[derive(Debug, Clone)]
10pub struct ClipzyZaiXianJianTieBanService<'a> {
11 pub(crate) client: &'a Client,
12}
13
14impl<'a> ClipzyZaiXianJianTieBanService<'a> {
15#[instrument(skip(self, params))]
17 pub async fn get_clipzy_get(&self, params: GetClipzyGetParams) -> Result<Value> {
18 let mut path = "/api/v1/api/get".to_string();
19
20 let mut query: Vec<(String, String)> = Vec::new();
21 query.push(("id".to_string(), params.id_query.clone()));
22 let query = if query.is_empty() { None } else { Some(query) };
23
24 let mut extra_headers = HeaderMap::new();
25 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
26 let body = None;
27
28 self.client
29 .request_json(
30 Method::GET,
31 &path,
32 headers,
33 query,
34 body,
35 )
36 .await
37 }
38#[instrument(skip(self, params))]
40 pub async fn get_clipzy_raw(&self, params: GetClipzyRawParams) -> Result<Value> {
41 let mut path = "/api/v1/api/raw/{id}".to_string();
42 {
43 let encoded = encode(¶ms.id_path).into_owned();
44 path = path.replace("{id}", &encoded);
45 }
46
47 let mut query: Vec<(String, String)> = Vec::new();
48 query.push(("key".to_string(), params.key_query.clone()));
49 let query = if query.is_empty() { None } else { Some(query) };
50
51 let mut extra_headers = HeaderMap::new();
52 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
53 let body = None;
54
55 self.client
56 .request_json(
57 Method::GET,
58 &path,
59 headers,
60 query,
61 body,
62 )
63 .await
64 }
65#[instrument(skip(self, params))]
67 pub async fn post_clipzy_store(&self, params: PostClipzyStoreParams) -> Result<Value> {
68 let mut path = "/api/v1/api/store".to_string();
69
70 let mut query: Vec<(String, String)> = Vec::new();
71 let query = if query.is_empty() { None } else { Some(query) };
72
73 let mut extra_headers = HeaderMap::new();
74 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
75 let body = params.body.clone();
76
77 self.client
78 .request_json(
79 Method::POST,
80 &path,
81 headers,
82 query,
83 body,
84 )
85 .await
86 }
87}
88
89#[derive(Debug, Clone)]
90pub struct GetClipzyGetParams {
91 pub id_query: String,
92}
93
94impl GetClipzyGetParams {
95 pub fn new(id_query: impl Into<String>) -> Self {
96 Self {
97 id_query: id_query.into(),
98 }
99 }
100}
101
102#[derive(Debug, Clone)]
103pub struct GetClipzyRawParams {
104 pub id_path: String,
105 pub key_query: String,
106}
107
108impl GetClipzyRawParams {
109 pub fn new(id_path: impl Into<String>, key_query: impl Into<String>) -> Self {
110 Self {
111 id_path: id_path.into(),
112 key_query: key_query.into(),
113 }
114 }
115}
116
117#[derive(Debug, Clone)]
118pub struct PostClipzyStoreParams {
119 pub body: Option<Value>,
120}
121
122impl PostClipzyStoreParams {
123 pub fn new() -> Self {
124 Self {
125 body: None,
126 }
127 }
128 pub fn body(mut self, value: Value) -> Self {
129 self.body = Some(value);
130 self
131 }
132}
133#[derive(Debug, Clone)]
134pub struct ConvertService<'a> {
135 pub(crate) client: &'a Client,
136}
137
138impl<'a> ConvertService<'a> {
139#[instrument(skip(self, params))]
141 pub async fn get_convert_unixtime(&self, params: GetConvertUnixtimeParams) -> Result<Value> {
142 let mut path = "/api/v1/convert/unixtime".to_string();
143
144 let mut query: Vec<(String, String)> = Vec::new();
145 query.push(("time".to_string(), params.time_query.clone()));
146 let query = if query.is_empty() { None } else { Some(query) };
147
148 let mut extra_headers = HeaderMap::new();
149 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
150 let body = None;
151
152 self.client
153 .request_json(
154 Method::GET,
155 &path,
156 headers,
157 query,
158 body,
159 )
160 .await
161 }
162#[instrument(skip(self, params))]
164 pub async fn post_convert_json(&self, params: PostConvertJsonParams) -> Result<Value> {
165 let mut path = "/api/v1/convert/json".to_string();
166
167 let mut query: Vec<(String, String)> = Vec::new();
168 let query = if query.is_empty() { None } else { Some(query) };
169
170 let mut extra_headers = HeaderMap::new();
171 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
172 let body = params.body.clone();
173
174 self.client
175 .request_json(
176 Method::POST,
177 &path,
178 headers,
179 query,
180 body,
181 )
182 .await
183 }
184}
185
186#[derive(Debug, Clone)]
187pub struct GetConvertUnixtimeParams {
188 pub time_query: String,
189}
190
191impl GetConvertUnixtimeParams {
192 pub fn new(time_query: impl Into<String>) -> Self {
193 Self {
194 time_query: time_query.into(),
195 }
196 }
197}
198
199#[derive(Debug, Clone)]
200pub struct PostConvertJsonParams {
201 pub body: Option<Value>,
202}
203
204impl PostConvertJsonParams {
205 pub fn new() -> Self {
206 Self {
207 body: None,
208 }
209 }
210 pub fn body(mut self, value: Value) -> Self {
211 self.body = Some(value);
212 self
213 }
214}
215#[derive(Debug, Clone)]
216pub struct DailyService<'a> {
217 pub(crate) client: &'a Client,
218}
219
220impl<'a> DailyService<'a> {
221#[instrument(skip(self))]
223 pub async fn get_daily_news_image(&self) -> Result<Value> {
224 let mut path = "/api/v1/daily/news-image".to_string();
225
226 let mut query: Vec<(String, String)> = Vec::new();
227 let query = if query.is_empty() { None } else { Some(query) };
228
229 let mut extra_headers = HeaderMap::new();
230 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
231 let body = None;
232
233 self.client
234 .request_json(
235 Method::GET,
236 &path,
237 headers,
238 query,
239 body,
240 )
241 .await
242 }
243}
244
245#[derive(Debug, Clone)]
246pub struct GameService<'a> {
247 pub(crate) client: &'a Client,
248}
249
250impl<'a> GameService<'a> {
251#[instrument(skip(self))]
253 pub async fn get_game_epic_free(&self) -> Result<Value> {
254 let mut path = "/api/v1/game/epic-free".to_string();
255
256 let mut query: Vec<(String, String)> = Vec::new();
257 let query = if query.is_empty() { None } else { Some(query) };
258
259 let mut extra_headers = HeaderMap::new();
260 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
261 let body = None;
262
263 self.client
264 .request_json(
265 Method::GET,
266 &path,
267 headers,
268 query,
269 body,
270 )
271 .await
272 }
273#[instrument(skip(self, params))]
275 pub async fn get_game_minecraft_historyid(&self, params: GetGameMinecraftHistoryidParams) -> Result<Value> {
276 let mut path = "/api/v1/game/minecraft/historyid".to_string();
277
278 let mut query: Vec<(String, String)> = Vec::new();
279 if let Some(value) = ¶ms.name_query {
280 query.push(("name".to_string(), value.clone()));
281 }
282 if let Some(value) = ¶ms.uuid_query {
283 query.push(("uuid".to_string(), value.clone()));
284 }
285 let query = if query.is_empty() { None } else { Some(query) };
286
287 let mut extra_headers = HeaderMap::new();
288 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
289 let body = None;
290
291 self.client
292 .request_json(
293 Method::GET,
294 &path,
295 headers,
296 query,
297 body,
298 )
299 .await
300 }
301#[instrument(skip(self, params))]
303 pub async fn get_game_minecraft_serverstatus(&self, params: GetGameMinecraftServerstatusParams) -> Result<Value> {
304 let mut path = "/api/v1/game/minecraft/serverstatus".to_string();
305
306 let mut query: Vec<(String, String)> = Vec::new();
307 query.push(("server".to_string(), params.server_query.clone()));
308 let query = if query.is_empty() { None } else { Some(query) };
309
310 let mut extra_headers = HeaderMap::new();
311 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
312 let body = None;
313
314 self.client
315 .request_json(
316 Method::GET,
317 &path,
318 headers,
319 query,
320 body,
321 )
322 .await
323 }
324#[instrument(skip(self, params))]
326 pub async fn get_game_minecraft_userinfo(&self, params: GetGameMinecraftUserinfoParams) -> Result<Value> {
327 let mut path = "/api/v1/game/minecraft/userinfo".to_string();
328
329 let mut query: Vec<(String, String)> = Vec::new();
330 query.push(("username".to_string(), params.username_query.clone()));
331 let query = if query.is_empty() { None } else { Some(query) };
332
333 let mut extra_headers = HeaderMap::new();
334 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
335 let body = None;
336
337 self.client
338 .request_json(
339 Method::GET,
340 &path,
341 headers,
342 query,
343 body,
344 )
345 .await
346 }
347#[instrument(skip(self, params))]
349 pub async fn get_game_steam_summary(&self, params: GetGameSteamSummaryParams) -> Result<Value> {
350 let mut path = "/api/v1/game/steam/summary".to_string();
351
352 let mut query: Vec<(String, String)> = Vec::new();
353 if let Some(value) = ¶ms.steamid_query {
354 query.push(("steamid".to_string(), value.clone()));
355 }
356 if let Some(value) = ¶ms.id_query {
357 query.push(("id".to_string(), value.clone()));
358 }
359 if let Some(value) = ¶ms.id_3_query {
360 query.push(("id3".to_string(), value.clone()));
361 }
362 if let Some(value) = ¶ms.key_query {
363 query.push(("key".to_string(), value.clone()));
364 }
365 let query = if query.is_empty() { None } else { Some(query) };
366
367 let mut extra_headers = HeaderMap::new();
368 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
369 let body = None;
370
371 self.client
372 .request_json(
373 Method::GET,
374 &path,
375 headers,
376 query,
377 body,
378 )
379 .await
380 }
381}
382
383
384#[derive(Debug, Clone)]
385pub struct GetGameMinecraftHistoryidParams {
386 pub name_query: Option<String>,
387 pub uuid_query: Option<String>,
388}
389
390impl GetGameMinecraftHistoryidParams {
391 pub fn new() -> Self {
392 Self {
393 name_query: None,
394 uuid_query: None,
395 }
396 }
397 pub fn name_query(mut self, value: impl Into<String>) -> Self {
398 self.name_query = Some(value.into());
399 self
400 }
401 pub fn uuid_query(mut self, value: impl Into<String>) -> Self {
402 self.uuid_query = Some(value.into());
403 self
404 }
405}
406
407#[derive(Debug, Clone)]
408pub struct GetGameMinecraftServerstatusParams {
409 pub server_query: String,
410}
411
412impl GetGameMinecraftServerstatusParams {
413 pub fn new(server_query: impl Into<String>) -> Self {
414 Self {
415 server_query: server_query.into(),
416 }
417 }
418}
419
420#[derive(Debug, Clone)]
421pub struct GetGameMinecraftUserinfoParams {
422 pub username_query: String,
423}
424
425impl GetGameMinecraftUserinfoParams {
426 pub fn new(username_query: impl Into<String>) -> Self {
427 Self {
428 username_query: username_query.into(),
429 }
430 }
431}
432
433#[derive(Debug, Clone)]
434pub struct GetGameSteamSummaryParams {
435 pub steamid_query: Option<String>,
436 pub id_query: Option<String>,
437 pub id_3_query: Option<String>,
438 pub key_query: Option<String>,
439}
440
441impl GetGameSteamSummaryParams {
442 pub fn new() -> Self {
443 Self {
444 steamid_query: None,
445 id_query: None,
446 id_3_query: None,
447 key_query: None,
448 }
449 }
450 pub fn steamid_query(mut self, value: impl Into<String>) -> Self {
451 self.steamid_query = Some(value.into());
452 self
453 }
454 pub fn id_query(mut self, value: impl Into<String>) -> Self {
455 self.id_query = Some(value.into());
456 self
457 }
458 pub fn id_3_query(mut self, value: impl Into<String>) -> Self {
459 self.id_3_query = Some(value.into());
460 self
461 }
462 pub fn key_query(mut self, value: impl Into<String>) -> Self {
463 self.key_query = Some(value.into());
464 self
465 }
466}
467#[derive(Debug, Clone)]
468pub struct ImageService<'a> {
469 pub(crate) client: &'a Client,
470}
471
472impl<'a> ImageService<'a> {
473#[instrument(skip(self, params))]
475 pub async fn get_avatar_gravatar(&self, params: GetAvatarGravatarParams) -> Result<Value> {
476 let mut path = "/api/v1/avatar/gravatar".to_string();
477
478 let mut query: Vec<(String, String)> = Vec::new();
479 if let Some(value) = ¶ms.email_query {
480 query.push(("email".to_string(), value.clone()));
481 }
482 if let Some(value) = ¶ms.hash_query {
483 query.push(("hash".to_string(), value.clone()));
484 }
485 if let Some(value) = ¶ms.s_query {
486 query.push(("s".to_string(), value.clone()));
487 }
488 if let Some(value) = ¶ms.d_query {
489 query.push(("d".to_string(), value.clone()));
490 }
491 if let Some(value) = ¶ms.r_query {
492 query.push(("r".to_string(), value.clone()));
493 }
494 let query = if query.is_empty() { None } else { Some(query) };
495
496 let mut extra_headers = HeaderMap::new();
497 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
498 let body = None;
499
500 self.client
501 .request_json(
502 Method::GET,
503 &path,
504 headers,
505 query,
506 body,
507 )
508 .await
509 }
510#[instrument(skip(self))]
512 pub async fn get_image_bing_daily(&self) -> Result<Value> {
513 let mut path = "/api/v1/image/bing-daily".to_string();
514
515 let mut query: Vec<(String, String)> = Vec::new();
516 let query = if query.is_empty() { None } else { Some(query) };
517
518 let mut extra_headers = HeaderMap::new();
519 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
520 let body = None;
521
522 self.client
523 .request_json(
524 Method::GET,
525 &path,
526 headers,
527 query,
528 body,
529 )
530 .await
531 }
532#[instrument(skip(self, params))]
534 pub async fn get_image_motou(&self, params: GetImageMotouParams) -> Result<Value> {
535 let mut path = "/api/v1/image/motou".to_string();
536
537 let mut query: Vec<(String, String)> = Vec::new();
538 query.push(("qq".to_string(), params.qq_query.clone()));
539 if let Some(value) = ¶ms.bg_color_query {
540 query.push(("bg_color".to_string(), value.clone()));
541 }
542 let query = if query.is_empty() { None } else { Some(query) };
543
544 let mut extra_headers = HeaderMap::new();
545 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
546 let body = None;
547
548 self.client
549 .request_json(
550 Method::GET,
551 &path,
552 headers,
553 query,
554 body,
555 )
556 .await
557 }
558#[instrument(skip(self, params))]
560 pub async fn get_image_qrcode(&self, params: GetImageQrcodeParams) -> Result<Value> {
561 let mut path = "/api/v1/image/qrcode".to_string();
562
563 let mut query: Vec<(String, String)> = Vec::new();
564 query.push(("text".to_string(), params.text_query.clone()));
565 if let Some(value) = ¶ms.size_query {
566 query.push(("size".to_string(), value.clone()));
567 }
568 if let Some(value) = ¶ms.format_query {
569 query.push(("format".to_string(), value.clone()));
570 }
571 if let Some(value) = ¶ms.transparent_query {
572 query.push(("transparent".to_string(), value.clone()));
573 }
574 if let Some(value) = ¶ms.fgcolor_query {
575 query.push(("fgcolor".to_string(), value.clone()));
576 }
577 if let Some(value) = ¶ms.bgcolor_query {
578 query.push(("bgcolor".to_string(), value.clone()));
579 }
580 let query = if query.is_empty() { None } else { Some(query) };
581
582 let mut extra_headers = HeaderMap::new();
583 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
584 let body = None;
585
586 self.client
587 .request_json(
588 Method::GET,
589 &path,
590 headers,
591 query,
592 body,
593 )
594 .await
595 }
596#[instrument(skip(self, params))]
598 pub async fn get_image_tobase_64(&self, params: GetImageTobase64Params) -> Result<Value> {
599 let mut path = "/api/v1/image/tobase64".to_string();
600
601 let mut query: Vec<(String, String)> = Vec::new();
602 query.push(("url".to_string(), params.url_query.clone()));
603 let query = if query.is_empty() { None } else { Some(query) };
604
605 let mut extra_headers = HeaderMap::new();
606 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
607 let body = None;
608
609 self.client
610 .request_json(
611 Method::GET,
612 &path,
613 headers,
614 query,
615 body,
616 )
617 .await
618 }
619#[instrument(skip(self, params))]
621 pub async fn post_image_compress(&self, params: PostImageCompressParams) -> Result<Value> {
622 let mut path = "/api/v1/image/compress".to_string();
623
624 let mut query: Vec<(String, String)> = Vec::new();
625 if let Some(value) = ¶ms.level_query {
626 query.push(("level".to_string(), value.clone()));
627 }
628 if let Some(value) = ¶ms.format_query {
629 query.push(("format".to_string(), value.clone()));
630 }
631 let query = if query.is_empty() { None } else { Some(query) };
632
633 let mut extra_headers = HeaderMap::new();
634 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
635 let body = params.body.clone();
636
637 self.client
638 .request_json(
639 Method::POST,
640 &path,
641 headers,
642 query,
643 body,
644 )
645 .await
646 }
647#[instrument(skip(self, params))]
649 pub async fn post_image_frombase_64(&self, params: PostImageFrombase64Params) -> Result<Value> {
650 let mut path = "/api/v1/image/frombase64".to_string();
651
652 let mut query: Vec<(String, String)> = Vec::new();
653 let query = if query.is_empty() { None } else { Some(query) };
654
655 let mut extra_headers = HeaderMap::new();
656 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
657 let body = params.body.clone();
658
659 self.client
660 .request_json(
661 Method::POST,
662 &path,
663 headers,
664 query,
665 body,
666 )
667 .await
668 }
669#[instrument(skip(self, params))]
671 pub async fn post_image_motou(&self, params: PostImageMotouParams) -> Result<Value> {
672 let mut path = "/api/v1/image/motou".to_string();
673
674 let mut query: Vec<(String, String)> = Vec::new();
675 let query = if query.is_empty() { None } else { Some(query) };
676
677 let mut extra_headers = HeaderMap::new();
678 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
679 let body = params.body.clone();
680
681 self.client
682 .request_json(
683 Method::POST,
684 &path,
685 headers,
686 query,
687 body,
688 )
689 .await
690 }
691#[instrument(skip(self, params))]
693 pub async fn post_image_nsfw(&self, params: PostImageNsfwParams) -> Result<Value> {
694 let mut path = "/api/v1/image/nsfw".to_string();
695
696 let mut query: Vec<(String, String)> = Vec::new();
697 let query = if query.is_empty() { None } else { Some(query) };
698
699 let mut extra_headers = HeaderMap::new();
700 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
701 let body = params.body.clone();
702
703 self.client
704 .request_json(
705 Method::POST,
706 &path,
707 headers,
708 query,
709 body,
710 )
711 .await
712 }
713#[instrument(skip(self, params))]
715 pub async fn post_image_speechless(&self, params: PostImageSpeechlessParams) -> Result<Value> {
716 let mut path = "/api/v1/image/speechless".to_string();
717
718 let mut query: Vec<(String, String)> = Vec::new();
719 let query = if query.is_empty() { None } else { Some(query) };
720
721 let mut extra_headers = HeaderMap::new();
722 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
723 let body = params.body.clone();
724
725 self.client
726 .request_json(
727 Method::POST,
728 &path,
729 headers,
730 query,
731 body,
732 )
733 .await
734 }
735#[instrument(skip(self, params))]
737 pub async fn post_image_svg(&self, params: PostImageSvgParams) -> Result<Value> {
738 let mut path = "/api/v1/image/svg".to_string();
739
740 let mut query: Vec<(String, String)> = Vec::new();
741 if let Some(value) = ¶ms.format_query {
742 query.push(("format".to_string(), value.clone()));
743 }
744 if let Some(value) = ¶ms.width_query {
745 query.push(("width".to_string(), value.clone()));
746 }
747 if let Some(value) = ¶ms.height_query {
748 query.push(("height".to_string(), value.clone()));
749 }
750 if let Some(value) = ¶ms.quality_query {
751 query.push(("quality".to_string(), value.clone()));
752 }
753 let query = if query.is_empty() { None } else { Some(query) };
754
755 let mut extra_headers = HeaderMap::new();
756 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
757 let body = params.body.clone();
758
759 self.client
760 .request_json(
761 Method::POST,
762 &path,
763 headers,
764 query,
765 body,
766 )
767 .await
768 }
769}
770
771#[derive(Debug, Clone)]
772pub struct GetAvatarGravatarParams {
773 pub email_query: Option<String>,
774 pub hash_query: Option<String>,
775 pub s_query: Option<String>,
776 pub d_query: Option<String>,
777 pub r_query: Option<String>,
778}
779
780impl GetAvatarGravatarParams {
781 pub fn new() -> Self {
782 Self {
783 email_query: None,
784 hash_query: None,
785 s_query: None,
786 d_query: None,
787 r_query: None,
788 }
789 }
790 pub fn email_query(mut self, value: impl Into<String>) -> Self {
791 self.email_query = Some(value.into());
792 self
793 }
794 pub fn hash_query(mut self, value: impl Into<String>) -> Self {
795 self.hash_query = Some(value.into());
796 self
797 }
798 pub fn s_query(mut self, value: impl Into<String>) -> Self {
799 self.s_query = Some(value.into());
800 self
801 }
802 pub fn d_query(mut self, value: impl Into<String>) -> Self {
803 self.d_query = Some(value.into());
804 self
805 }
806 pub fn r_query(mut self, value: impl Into<String>) -> Self {
807 self.r_query = Some(value.into());
808 self
809 }
810}
811
812
813#[derive(Debug, Clone)]
814pub struct GetImageMotouParams {
815 pub qq_query: String,
816 pub bg_color_query: Option<String>,
817}
818
819impl GetImageMotouParams {
820 pub fn new(qq_query: impl Into<String>) -> Self {
821 Self {
822 qq_query: qq_query.into(),
823 bg_color_query: None,
824 }
825 }
826 pub fn bg_color_query(mut self, value: impl Into<String>) -> Self {
827 self.bg_color_query = Some(value.into());
828 self
829 }
830}
831
832#[derive(Debug, Clone)]
833pub struct GetImageQrcodeParams {
834 pub text_query: String,
835 pub size_query: Option<String>,
836 pub format_query: Option<String>,
837 pub transparent_query: Option<String>,
838 pub fgcolor_query: Option<String>,
839 pub bgcolor_query: Option<String>,
840}
841
842impl GetImageQrcodeParams {
843 pub fn new(text_query: impl Into<String>) -> Self {
844 Self {
845 text_query: text_query.into(),
846 size_query: None,
847 format_query: None,
848 transparent_query: None,
849 fgcolor_query: None,
850 bgcolor_query: None,
851 }
852 }
853 pub fn size_query(mut self, value: impl Into<String>) -> Self {
854 self.size_query = Some(value.into());
855 self
856 }
857 pub fn format_query(mut self, value: impl Into<String>) -> Self {
858 self.format_query = Some(value.into());
859 self
860 }
861 pub fn transparent_query(mut self, value: impl Into<String>) -> Self {
862 self.transparent_query = Some(value.into());
863 self
864 }
865 pub fn fgcolor_query(mut self, value: impl Into<String>) -> Self {
866 self.fgcolor_query = Some(value.into());
867 self
868 }
869 pub fn bgcolor_query(mut self, value: impl Into<String>) -> Self {
870 self.bgcolor_query = Some(value.into());
871 self
872 }
873}
874
875#[derive(Debug, Clone)]
876pub struct GetImageTobase64Params {
877 pub url_query: String,
878}
879
880impl GetImageTobase64Params {
881 pub fn new(url_query: impl Into<String>) -> Self {
882 Self {
883 url_query: url_query.into(),
884 }
885 }
886}
887
888#[derive(Debug, Clone)]
889pub struct PostImageCompressParams {
890 pub level_query: Option<String>,
891 pub format_query: Option<String>,
892 pub body: Option<Value>,
893}
894
895impl PostImageCompressParams {
896 pub fn new() -> Self {
897 Self {
898 level_query: None,
899 format_query: None,
900 body: None,
901 }
902 }
903 pub fn level_query(mut self, value: impl Into<String>) -> Self {
904 self.level_query = Some(value.into());
905 self
906 }
907 pub fn format_query(mut self, value: impl Into<String>) -> Self {
908 self.format_query = Some(value.into());
909 self
910 }
911 pub fn body(mut self, value: Value) -> Self {
912 self.body = Some(value);
913 self
914 }
915}
916
917#[derive(Debug, Clone)]
918pub struct PostImageFrombase64Params {
919 pub body: Option<Value>,
920}
921
922impl PostImageFrombase64Params {
923 pub fn new() -> Self {
924 Self {
925 body: None,
926 }
927 }
928 pub fn body(mut self, value: Value) -> Self {
929 self.body = Some(value);
930 self
931 }
932}
933
934#[derive(Debug, Clone)]
935pub struct PostImageMotouParams {
936 pub body: Option<Value>,
937}
938
939impl PostImageMotouParams {
940 pub fn new() -> Self {
941 Self {
942 body: None,
943 }
944 }
945 pub fn body(mut self, value: Value) -> Self {
946 self.body = Some(value);
947 self
948 }
949}
950
951#[derive(Debug, Clone)]
952pub struct PostImageNsfwParams {
953 pub body: Option<Value>,
954}
955
956impl PostImageNsfwParams {
957 pub fn new() -> Self {
958 Self {
959 body: None,
960 }
961 }
962 pub fn body(mut self, value: Value) -> Self {
963 self.body = Some(value);
964 self
965 }
966}
967
968#[derive(Debug, Clone)]
969pub struct PostImageSpeechlessParams {
970 pub body: Option<Value>,
971}
972
973impl PostImageSpeechlessParams {
974 pub fn new() -> Self {
975 Self {
976 body: None,
977 }
978 }
979 pub fn body(mut self, value: Value) -> Self {
980 self.body = Some(value);
981 self
982 }
983}
984
985#[derive(Debug, Clone)]
986pub struct PostImageSvgParams {
987 pub format_query: Option<String>,
988 pub width_query: Option<String>,
989 pub height_query: Option<String>,
990 pub quality_query: Option<String>,
991 pub body: Option<Value>,
992}
993
994impl PostImageSvgParams {
995 pub fn new() -> Self {
996 Self {
997 format_query: None,
998 width_query: None,
999 height_query: None,
1000 quality_query: None,
1001 body: None,
1002 }
1003 }
1004 pub fn format_query(mut self, value: impl Into<String>) -> Self {
1005 self.format_query = Some(value.into());
1006 self
1007 }
1008 pub fn width_query(mut self, value: impl Into<String>) -> Self {
1009 self.width_query = Some(value.into());
1010 self
1011 }
1012 pub fn height_query(mut self, value: impl Into<String>) -> Self {
1013 self.height_query = Some(value.into());
1014 self
1015 }
1016 pub fn quality_query(mut self, value: impl Into<String>) -> Self {
1017 self.quality_query = Some(value.into());
1018 self
1019 }
1020 pub fn body(mut self, value: Value) -> Self {
1021 self.body = Some(value);
1022 self
1023 }
1024}
1025#[derive(Debug, Clone)]
1026pub struct MiscService<'a> {
1027 pub(crate) client: &'a Client,
1028}
1029
1030impl<'a> MiscService<'a> {
1031#[instrument(skip(self, params))]
1033 pub async fn get_history_programmer(&self, params: GetHistoryProgrammerParams) -> Result<Value> {
1034 let mut path = "/api/v1/history/programmer".to_string();
1035
1036 let mut query: Vec<(String, String)> = Vec::new();
1037 query.push(("month".to_string(), params.month_query.clone()));
1038 query.push(("day".to_string(), params.day_query.clone()));
1039 let query = if query.is_empty() { None } else { Some(query) };
1040
1041 let mut extra_headers = HeaderMap::new();
1042 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1043 let body = None;
1044
1045 self.client
1046 .request_json(
1047 Method::GET,
1048 &path,
1049 headers,
1050 query,
1051 body,
1052 )
1053 .await
1054 }
1055#[instrument(skip(self))]
1057 pub async fn get_history_programmer_today(&self) -> Result<Value> {
1058 let mut path = "/api/v1/history/programmer/today".to_string();
1059
1060 let mut query: Vec<(String, String)> = Vec::new();
1061 let query = if query.is_empty() { None } else { Some(query) };
1062
1063 let mut extra_headers = HeaderMap::new();
1064 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1065 let body = None;
1066
1067 self.client
1068 .request_json(
1069 Method::GET,
1070 &path,
1071 headers,
1072 query,
1073 body,
1074 )
1075 .await
1076 }
1077#[instrument(skip(self, params))]
1079 pub async fn get_misc_district(&self, params: GetMiscDistrictParams) -> Result<Value> {
1080 let mut path = "/api/v1/misc/district".to_string();
1081
1082 let mut query: Vec<(String, String)> = Vec::new();
1083 if let Some(value) = ¶ms.keywords_query {
1084 query.push(("keywords".to_string(), value.clone()));
1085 }
1086 if let Some(value) = ¶ms.adcode_query {
1087 query.push(("adcode".to_string(), value.clone()));
1088 }
1089 if let Some(value) = ¶ms.lat_query {
1090 query.push(("lat".to_string(), value.clone()));
1091 }
1092 if let Some(value) = ¶ms.lng_query {
1093 query.push(("lng".to_string(), value.clone()));
1094 }
1095 if let Some(value) = ¶ms.level_query {
1096 query.push(("level".to_string(), value.clone()));
1097 }
1098 if let Some(value) = ¶ms.country_query {
1099 query.push(("country".to_string(), value.clone()));
1100 }
1101 if let Some(value) = ¶ms.limit_query {
1102 query.push(("limit".to_string(), value.clone()));
1103 }
1104 let query = if query.is_empty() { None } else { Some(query) };
1105
1106 let mut extra_headers = HeaderMap::new();
1107 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1108 let body = None;
1109
1110 self.client
1111 .request_json(
1112 Method::GET,
1113 &path,
1114 headers,
1115 query,
1116 body,
1117 )
1118 .await
1119 }
1120#[instrument(skip(self, params))]
1122 pub async fn get_misc_holiday_calendar(&self, params: GetMiscHolidayCalendarParams) -> Result<Value> {
1123 let mut path = "/api/v1/misc/holiday-calendar".to_string();
1124
1125 let mut query: Vec<(String, String)> = Vec::new();
1126 if let Some(value) = ¶ms.date_query {
1127 query.push(("date".to_string(), value.clone()));
1128 }
1129 if let Some(value) = ¶ms.month_query {
1130 query.push(("month".to_string(), value.clone()));
1131 }
1132 if let Some(value) = ¶ms.year_query {
1133 query.push(("year".to_string(), value.clone()));
1134 }
1135 if let Some(value) = ¶ms.timezone_query {
1136 query.push(("timezone".to_string(), value.clone()));
1137 }
1138 if let Some(value) = ¶ms.holiday_type_query {
1139 query.push(("holiday_type".to_string(), value.clone()));
1140 }
1141 if let Some(value) = ¶ms.include_nearby_query {
1142 query.push(("include_nearby".to_string(), value.clone()));
1143 }
1144 if let Some(value) = ¶ms.nearby_limit_query {
1145 query.push(("nearby_limit".to_string(), value.clone()));
1146 }
1147 let query = if query.is_empty() { None } else { Some(query) };
1148
1149 let mut extra_headers = HeaderMap::new();
1150 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1151 let body = None;
1152
1153 self.client
1154 .request_json(
1155 Method::GET,
1156 &path,
1157 headers,
1158 query,
1159 body,
1160 )
1161 .await
1162 }
1163#[instrument(skip(self, params))]
1165 pub async fn get_misc_hotboard(&self, params: GetMiscHotboardParams) -> Result<Value> {
1166 let mut path = "/api/v1/misc/hotboard".to_string();
1167
1168 let mut query: Vec<(String, String)> = Vec::new();
1169 query.push(("type".to_string(), params.type_query.clone()));
1170 if let Some(value) = ¶ms.time_query {
1171 query.push(("time".to_string(), value.clone()));
1172 }
1173 if let Some(value) = ¶ms.keyword_query {
1174 query.push(("keyword".to_string(), value.clone()));
1175 }
1176 if let Some(value) = ¶ms.time_start_query {
1177 query.push(("time_start".to_string(), value.clone()));
1178 }
1179 if let Some(value) = ¶ms.time_end_query {
1180 query.push(("time_end".to_string(), value.clone()));
1181 }
1182 if let Some(value) = ¶ms.limit_query {
1183 query.push(("limit".to_string(), value.clone()));
1184 }
1185 if let Some(value) = ¶ms.sources_query {
1186 query.push(("sources".to_string(), value.clone()));
1187 }
1188 let query = if query.is_empty() { None } else { Some(query) };
1189
1190 let mut extra_headers = HeaderMap::new();
1191 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1192 let body = None;
1193
1194 self.client
1195 .request_json(
1196 Method::GET,
1197 &path,
1198 headers,
1199 query,
1200 body,
1201 )
1202 .await
1203 }
1204#[instrument(skip(self, params))]
1206 pub async fn get_misc_lunartime(&self, params: GetMiscLunartimeParams) -> Result<Value> {
1207 let mut path = "/api/v1/misc/lunartime".to_string();
1208
1209 let mut query: Vec<(String, String)> = Vec::new();
1210 if let Some(value) = ¶ms.ts_query {
1211 query.push(("ts".to_string(), value.clone()));
1212 }
1213 if let Some(value) = ¶ms.timezone_query {
1214 query.push(("timezone".to_string(), value.clone()));
1215 }
1216 let query = if query.is_empty() { None } else { Some(query) };
1217
1218 let mut extra_headers = HeaderMap::new();
1219 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1220 let body = None;
1221
1222 self.client
1223 .request_json(
1224 Method::GET,
1225 &path,
1226 headers,
1227 query,
1228 body,
1229 )
1230 .await
1231 }
1232#[instrument(skip(self, params))]
1234 pub async fn get_misc_phoneinfo(&self, params: GetMiscPhoneinfoParams) -> Result<Value> {
1235 let mut path = "/api/v1/misc/phoneinfo".to_string();
1236
1237 let mut query: Vec<(String, String)> = Vec::new();
1238 query.push(("phone".to_string(), params.phone_query.clone()));
1239 let query = if query.is_empty() { None } else { Some(query) };
1240
1241 let mut extra_headers = HeaderMap::new();
1242 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1243 let body = None;
1244
1245 self.client
1246 .request_json(
1247 Method::GET,
1248 &path,
1249 headers,
1250 query,
1251 body,
1252 )
1253 .await
1254 }
1255#[instrument(skip(self, params))]
1257 pub async fn get_misc_randomnumber(&self, params: GetMiscRandomnumberParams) -> Result<Value> {
1258 let mut path = "/api/v1/misc/randomnumber".to_string();
1259
1260 let mut query: Vec<(String, String)> = Vec::new();
1261 if let Some(value) = ¶ms.min_query {
1262 query.push(("min".to_string(), value.clone()));
1263 }
1264 if let Some(value) = ¶ms.max_query {
1265 query.push(("max".to_string(), value.clone()));
1266 }
1267 if let Some(value) = ¶ms.count_query {
1268 query.push(("count".to_string(), value.clone()));
1269 }
1270 if let Some(value) = ¶ms.allow_repeat_query {
1271 query.push(("allow_repeat".to_string(), value.clone()));
1272 }
1273 if let Some(value) = ¶ms.allow_decimal_query {
1274 query.push(("allow_decimal".to_string(), value.clone()));
1275 }
1276 if let Some(value) = ¶ms.decimal_places_query {
1277 query.push(("decimal_places".to_string(), value.clone()));
1278 }
1279 let query = if query.is_empty() { None } else { Some(query) };
1280
1281 let mut extra_headers = HeaderMap::new();
1282 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1283 let body = None;
1284
1285 self.client
1286 .request_json(
1287 Method::GET,
1288 &path,
1289 headers,
1290 query,
1291 body,
1292 )
1293 .await
1294 }
1295#[instrument(skip(self, params))]
1297 pub async fn get_misc_timestamp(&self, params: GetMiscTimestampParams) -> Result<Value> {
1298 let mut path = "/api/v1/misc/timestamp".to_string();
1299
1300 let mut query: Vec<(String, String)> = Vec::new();
1301 query.push(("ts".to_string(), params.ts_query.clone()));
1302 let query = if query.is_empty() { None } else { Some(query) };
1303
1304 let mut extra_headers = HeaderMap::new();
1305 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1306 let body = None;
1307
1308 self.client
1309 .request_json(
1310 Method::GET,
1311 &path,
1312 headers,
1313 query,
1314 body,
1315 )
1316 .await
1317 }
1318#[instrument(skip(self))]
1320 pub async fn get_misc_tracking_carriers(&self) -> Result<Value> {
1321 let mut path = "/api/v1/misc/tracking/carriers".to_string();
1322
1323 let mut query: Vec<(String, String)> = Vec::new();
1324 let query = if query.is_empty() { None } else { Some(query) };
1325
1326 let mut extra_headers = HeaderMap::new();
1327 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1328 let body = None;
1329
1330 self.client
1331 .request_json(
1332 Method::GET,
1333 &path,
1334 headers,
1335 query,
1336 body,
1337 )
1338 .await
1339 }
1340#[instrument(skip(self, params))]
1342 pub async fn get_misc_tracking_detect(&self, params: GetMiscTrackingDetectParams) -> Result<Value> {
1343 let mut path = "/api/v1/misc/tracking/detect".to_string();
1344
1345 let mut query: Vec<(String, String)> = Vec::new();
1346 query.push(("tracking_number".to_string(), params.tracking_number_query.clone()));
1347 let query = if query.is_empty() { None } else { Some(query) };
1348
1349 let mut extra_headers = HeaderMap::new();
1350 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1351 let body = None;
1352
1353 self.client
1354 .request_json(
1355 Method::GET,
1356 &path,
1357 headers,
1358 query,
1359 body,
1360 )
1361 .await
1362 }
1363#[instrument(skip(self, params))]
1365 pub async fn get_misc_tracking_query(&self, params: GetMiscTrackingQueryParams) -> Result<Value> {
1366 let mut path = "/api/v1/misc/tracking/query".to_string();
1367
1368 let mut query: Vec<(String, String)> = Vec::new();
1369 query.push(("tracking_number".to_string(), params.tracking_number_query.clone()));
1370 if let Some(value) = ¶ms.carrier_code_query {
1371 query.push(("carrier_code".to_string(), value.clone()));
1372 }
1373 if let Some(value) = ¶ms.phone_query {
1374 query.push(("phone".to_string(), value.clone()));
1375 }
1376 let query = if query.is_empty() { None } else { Some(query) };
1377
1378 let mut extra_headers = HeaderMap::new();
1379 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1380 let body = None;
1381
1382 self.client
1383 .request_json(
1384 Method::GET,
1385 &path,
1386 headers,
1387 query,
1388 body,
1389 )
1390 .await
1391 }
1392#[instrument(skip(self, params))]
1394 pub async fn get_misc_weather(&self, params: GetMiscWeatherParams) -> Result<Value> {
1395 let mut path = "/api/v1/misc/weather".to_string();
1396
1397 let mut query: Vec<(String, String)> = Vec::new();
1398 if let Some(value) = ¶ms.city_query {
1399 query.push(("city".to_string(), value.clone()));
1400 }
1401 if let Some(value) = ¶ms.adcode_query {
1402 query.push(("adcode".to_string(), value.clone()));
1403 }
1404 if let Some(value) = ¶ms.extended_query {
1405 query.push(("extended".to_string(), value.clone()));
1406 }
1407 if let Some(value) = ¶ms.forecast_query {
1408 query.push(("forecast".to_string(), value.clone()));
1409 }
1410 if let Some(value) = ¶ms.hourly_query {
1411 query.push(("hourly".to_string(), value.clone()));
1412 }
1413 if let Some(value) = ¶ms.minutely_query {
1414 query.push(("minutely".to_string(), value.clone()));
1415 }
1416 if let Some(value) = ¶ms.indices_query {
1417 query.push(("indices".to_string(), value.clone()));
1418 }
1419 if let Some(value) = ¶ms.lang_query {
1420 query.push(("lang".to_string(), value.clone()));
1421 }
1422 let query = if query.is_empty() { None } else { Some(query) };
1423
1424 let mut extra_headers = HeaderMap::new();
1425 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1426 let body = None;
1427
1428 self.client
1429 .request_json(
1430 Method::GET,
1431 &path,
1432 headers,
1433 query,
1434 body,
1435 )
1436 .await
1437 }
1438#[instrument(skip(self, params))]
1440 pub async fn get_misc_worldtime(&self, params: GetMiscWorldtimeParams) -> Result<Value> {
1441 let mut path = "/api/v1/misc/worldtime".to_string();
1442
1443 let mut query: Vec<(String, String)> = Vec::new();
1444 query.push(("city".to_string(), params.city_query.clone()));
1445 let query = if query.is_empty() { None } else { Some(query) };
1446
1447 let mut extra_headers = HeaderMap::new();
1448 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1449 let body = None;
1450
1451 self.client
1452 .request_json(
1453 Method::GET,
1454 &path,
1455 headers,
1456 query,
1457 body,
1458 )
1459 .await
1460 }
1461#[instrument(skip(self, params))]
1463 pub async fn post_misc_date_diff(&self, params: PostMiscDateDiffParams) -> Result<Value> {
1464 let mut path = "/api/v1/misc/date-diff".to_string();
1465
1466 let mut query: Vec<(String, String)> = Vec::new();
1467 let query = if query.is_empty() { None } else { Some(query) };
1468
1469 let mut extra_headers = HeaderMap::new();
1470 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1471 let body = params.body.clone();
1472
1473 self.client
1474 .request_json(
1475 Method::POST,
1476 &path,
1477 headers,
1478 query,
1479 body,
1480 )
1481 .await
1482 }
1483}
1484
1485#[derive(Debug, Clone)]
1486pub struct GetHistoryProgrammerParams {
1487 pub month_query: String,
1488 pub day_query: String,
1489}
1490
1491impl GetHistoryProgrammerParams {
1492 pub fn new(month_query: impl Into<String>, day_query: impl Into<String>) -> Self {
1493 Self {
1494 month_query: month_query.into(),
1495 day_query: day_query.into(),
1496 }
1497 }
1498}
1499
1500
1501#[derive(Debug, Clone)]
1502pub struct GetMiscDistrictParams {
1503 pub keywords_query: Option<String>,
1504 pub adcode_query: Option<String>,
1505 pub lat_query: Option<String>,
1506 pub lng_query: Option<String>,
1507 pub level_query: Option<String>,
1508 pub country_query: Option<String>,
1509 pub limit_query: Option<String>,
1510}
1511
1512impl GetMiscDistrictParams {
1513 pub fn new() -> Self {
1514 Self {
1515 keywords_query: None,
1516 adcode_query: None,
1517 lat_query: None,
1518 lng_query: None,
1519 level_query: None,
1520 country_query: None,
1521 limit_query: None,
1522 }
1523 }
1524 pub fn keywords_query(mut self, value: impl Into<String>) -> Self {
1525 self.keywords_query = Some(value.into());
1526 self
1527 }
1528 pub fn adcode_query(mut self, value: impl Into<String>) -> Self {
1529 self.adcode_query = Some(value.into());
1530 self
1531 }
1532 pub fn lat_query(mut self, value: impl Into<String>) -> Self {
1533 self.lat_query = Some(value.into());
1534 self
1535 }
1536 pub fn lng_query(mut self, value: impl Into<String>) -> Self {
1537 self.lng_query = Some(value.into());
1538 self
1539 }
1540 pub fn level_query(mut self, value: impl Into<String>) -> Self {
1541 self.level_query = Some(value.into());
1542 self
1543 }
1544 pub fn country_query(mut self, value: impl Into<String>) -> Self {
1545 self.country_query = Some(value.into());
1546 self
1547 }
1548 pub fn limit_query(mut self, value: impl Into<String>) -> Self {
1549 self.limit_query = Some(value.into());
1550 self
1551 }
1552}
1553
1554#[derive(Debug, Clone)]
1555pub struct GetMiscHolidayCalendarParams {
1556 pub date_query: Option<String>,
1557 pub month_query: Option<String>,
1558 pub year_query: Option<String>,
1559 pub timezone_query: Option<String>,
1560 pub holiday_type_query: Option<String>,
1561 pub include_nearby_query: Option<String>,
1562 pub nearby_limit_query: Option<String>,
1563}
1564
1565impl GetMiscHolidayCalendarParams {
1566 pub fn new() -> Self {
1567 Self {
1568 date_query: None,
1569 month_query: None,
1570 year_query: None,
1571 timezone_query: None,
1572 holiday_type_query: None,
1573 include_nearby_query: None,
1574 nearby_limit_query: None,
1575 }
1576 }
1577 pub fn date_query(mut self, value: impl Into<String>) -> Self {
1578 self.date_query = Some(value.into());
1579 self
1580 }
1581 pub fn month_query(mut self, value: impl Into<String>) -> Self {
1582 self.month_query = Some(value.into());
1583 self
1584 }
1585 pub fn year_query(mut self, value: impl Into<String>) -> Self {
1586 self.year_query = Some(value.into());
1587 self
1588 }
1589 pub fn timezone_query(mut self, value: impl Into<String>) -> Self {
1590 self.timezone_query = Some(value.into());
1591 self
1592 }
1593 pub fn holiday_type_query(mut self, value: impl Into<String>) -> Self {
1594 self.holiday_type_query = Some(value.into());
1595 self
1596 }
1597 pub fn include_nearby_query(mut self, value: impl Into<String>) -> Self {
1598 self.include_nearby_query = Some(value.into());
1599 self
1600 }
1601 pub fn nearby_limit_query(mut self, value: impl Into<String>) -> Self {
1602 self.nearby_limit_query = Some(value.into());
1603 self
1604 }
1605}
1606
1607#[derive(Debug, Clone)]
1608pub struct GetMiscHotboardParams {
1609 pub type_query: String,
1610 pub time_query: Option<String>,
1611 pub keyword_query: Option<String>,
1612 pub time_start_query: Option<String>,
1613 pub time_end_query: Option<String>,
1614 pub limit_query: Option<String>,
1615 pub sources_query: Option<String>,
1616}
1617
1618impl GetMiscHotboardParams {
1619 pub fn new(type_query: impl Into<String>) -> Self {
1620 Self {
1621 type_query: type_query.into(),
1622 time_query: None,
1623 keyword_query: None,
1624 time_start_query: None,
1625 time_end_query: None,
1626 limit_query: None,
1627 sources_query: None,
1628 }
1629 }
1630 pub fn time_query(mut self, value: impl Into<String>) -> Self {
1631 self.time_query = Some(value.into());
1632 self
1633 }
1634 pub fn keyword_query(mut self, value: impl Into<String>) -> Self {
1635 self.keyword_query = Some(value.into());
1636 self
1637 }
1638 pub fn time_start_query(mut self, value: impl Into<String>) -> Self {
1639 self.time_start_query = Some(value.into());
1640 self
1641 }
1642 pub fn time_end_query(mut self, value: impl Into<String>) -> Self {
1643 self.time_end_query = Some(value.into());
1644 self
1645 }
1646 pub fn limit_query(mut self, value: impl Into<String>) -> Self {
1647 self.limit_query = Some(value.into());
1648 self
1649 }
1650 pub fn sources_query(mut self, value: impl Into<String>) -> Self {
1651 self.sources_query = Some(value.into());
1652 self
1653 }
1654}
1655
1656#[derive(Debug, Clone)]
1657pub struct GetMiscLunartimeParams {
1658 pub ts_query: Option<String>,
1659 pub timezone_query: Option<String>,
1660}
1661
1662impl GetMiscLunartimeParams {
1663 pub fn new() -> Self {
1664 Self {
1665 ts_query: None,
1666 timezone_query: None,
1667 }
1668 }
1669 pub fn ts_query(mut self, value: impl Into<String>) -> Self {
1670 self.ts_query = Some(value.into());
1671 self
1672 }
1673 pub fn timezone_query(mut self, value: impl Into<String>) -> Self {
1674 self.timezone_query = Some(value.into());
1675 self
1676 }
1677}
1678
1679#[derive(Debug, Clone)]
1680pub struct GetMiscPhoneinfoParams {
1681 pub phone_query: String,
1682}
1683
1684impl GetMiscPhoneinfoParams {
1685 pub fn new(phone_query: impl Into<String>) -> Self {
1686 Self {
1687 phone_query: phone_query.into(),
1688 }
1689 }
1690}
1691
1692#[derive(Debug, Clone)]
1693pub struct GetMiscRandomnumberParams {
1694 pub min_query: Option<String>,
1695 pub max_query: Option<String>,
1696 pub count_query: Option<String>,
1697 pub allow_repeat_query: Option<String>,
1698 pub allow_decimal_query: Option<String>,
1699 pub decimal_places_query: Option<String>,
1700}
1701
1702impl GetMiscRandomnumberParams {
1703 pub fn new() -> Self {
1704 Self {
1705 min_query: None,
1706 max_query: None,
1707 count_query: None,
1708 allow_repeat_query: None,
1709 allow_decimal_query: None,
1710 decimal_places_query: None,
1711 }
1712 }
1713 pub fn min_query(mut self, value: impl Into<String>) -> Self {
1714 self.min_query = Some(value.into());
1715 self
1716 }
1717 pub fn max_query(mut self, value: impl Into<String>) -> Self {
1718 self.max_query = Some(value.into());
1719 self
1720 }
1721 pub fn count_query(mut self, value: impl Into<String>) -> Self {
1722 self.count_query = Some(value.into());
1723 self
1724 }
1725 pub fn allow_repeat_query(mut self, value: impl Into<String>) -> Self {
1726 self.allow_repeat_query = Some(value.into());
1727 self
1728 }
1729 pub fn allow_decimal_query(mut self, value: impl Into<String>) -> Self {
1730 self.allow_decimal_query = Some(value.into());
1731 self
1732 }
1733 pub fn decimal_places_query(mut self, value: impl Into<String>) -> Self {
1734 self.decimal_places_query = Some(value.into());
1735 self
1736 }
1737}
1738
1739#[derive(Debug, Clone)]
1740pub struct GetMiscTimestampParams {
1741 pub ts_query: String,
1742}
1743
1744impl GetMiscTimestampParams {
1745 pub fn new(ts_query: impl Into<String>) -> Self {
1746 Self {
1747 ts_query: ts_query.into(),
1748 }
1749 }
1750}
1751
1752
1753#[derive(Debug, Clone)]
1754pub struct GetMiscTrackingDetectParams {
1755 pub tracking_number_query: String,
1756}
1757
1758impl GetMiscTrackingDetectParams {
1759 pub fn new(tracking_number_query: impl Into<String>) -> Self {
1760 Self {
1761 tracking_number_query: tracking_number_query.into(),
1762 }
1763 }
1764}
1765
1766#[derive(Debug, Clone)]
1767pub struct GetMiscTrackingQueryParams {
1768 pub tracking_number_query: String,
1769 pub carrier_code_query: Option<String>,
1770 pub phone_query: Option<String>,
1771}
1772
1773impl GetMiscTrackingQueryParams {
1774 pub fn new(tracking_number_query: impl Into<String>) -> Self {
1775 Self {
1776 tracking_number_query: tracking_number_query.into(),
1777 carrier_code_query: None,
1778 phone_query: None,
1779 }
1780 }
1781 pub fn carrier_code_query(mut self, value: impl Into<String>) -> Self {
1782 self.carrier_code_query = Some(value.into());
1783 self
1784 }
1785 pub fn phone_query(mut self, value: impl Into<String>) -> Self {
1786 self.phone_query = Some(value.into());
1787 self
1788 }
1789}
1790
1791#[derive(Debug, Clone)]
1792pub struct GetMiscWeatherParams {
1793 pub city_query: Option<String>,
1794 pub adcode_query: Option<String>,
1795 pub extended_query: Option<String>,
1796 pub forecast_query: Option<String>,
1797 pub hourly_query: Option<String>,
1798 pub minutely_query: Option<String>,
1799 pub indices_query: Option<String>,
1800 pub lang_query: Option<String>,
1801}
1802
1803impl GetMiscWeatherParams {
1804 pub fn new() -> Self {
1805 Self {
1806 city_query: None,
1807 adcode_query: None,
1808 extended_query: None,
1809 forecast_query: None,
1810 hourly_query: None,
1811 minutely_query: None,
1812 indices_query: None,
1813 lang_query: None,
1814 }
1815 }
1816 pub fn city_query(mut self, value: impl Into<String>) -> Self {
1817 self.city_query = Some(value.into());
1818 self
1819 }
1820 pub fn adcode_query(mut self, value: impl Into<String>) -> Self {
1821 self.adcode_query = Some(value.into());
1822 self
1823 }
1824 pub fn extended_query(mut self, value: impl Into<String>) -> Self {
1825 self.extended_query = Some(value.into());
1826 self
1827 }
1828 pub fn forecast_query(mut self, value: impl Into<String>) -> Self {
1829 self.forecast_query = Some(value.into());
1830 self
1831 }
1832 pub fn hourly_query(mut self, value: impl Into<String>) -> Self {
1833 self.hourly_query = Some(value.into());
1834 self
1835 }
1836 pub fn minutely_query(mut self, value: impl Into<String>) -> Self {
1837 self.minutely_query = Some(value.into());
1838 self
1839 }
1840 pub fn indices_query(mut self, value: impl Into<String>) -> Self {
1841 self.indices_query = Some(value.into());
1842 self
1843 }
1844 pub fn lang_query(mut self, value: impl Into<String>) -> Self {
1845 self.lang_query = Some(value.into());
1846 self
1847 }
1848}
1849
1850#[derive(Debug, Clone)]
1851pub struct GetMiscWorldtimeParams {
1852 pub city_query: String,
1853}
1854
1855impl GetMiscWorldtimeParams {
1856 pub fn new(city_query: impl Into<String>) -> Self {
1857 Self {
1858 city_query: city_query.into(),
1859 }
1860 }
1861}
1862
1863#[derive(Debug, Clone)]
1864pub struct PostMiscDateDiffParams {
1865 pub body: Option<Value>,
1866}
1867
1868impl PostMiscDateDiffParams {
1869 pub fn new() -> Self {
1870 Self {
1871 body: None,
1872 }
1873 }
1874 pub fn body(mut self, value: Value) -> Self {
1875 self.body = Some(value);
1876 self
1877 }
1878}
1879#[derive(Debug, Clone)]
1880pub struct NetworkService<'a> {
1881 pub(crate) client: &'a Client,
1882}
1883
1884impl<'a> NetworkService<'a> {
1885#[instrument(skip(self, params))]
1887 pub async fn get_network_dns(&self, params: GetNetworkDnsParams) -> Result<Value> {
1888 let mut path = "/api/v1/network/dns".to_string();
1889
1890 let mut query: Vec<(String, String)> = Vec::new();
1891 query.push(("domain".to_string(), params.domain_query.clone()));
1892 if let Some(value) = ¶ms.type_query {
1893 query.push(("type".to_string(), value.clone()));
1894 }
1895 let query = if query.is_empty() { None } else { Some(query) };
1896
1897 let mut extra_headers = HeaderMap::new();
1898 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1899 let body = None;
1900
1901 self.client
1902 .request_json(
1903 Method::GET,
1904 &path,
1905 headers,
1906 query,
1907 body,
1908 )
1909 .await
1910 }
1911#[instrument(skip(self, params))]
1913 pub async fn get_network_icp(&self, params: GetNetworkIcpParams) -> Result<Value> {
1914 let mut path = "/api/v1/network/icp".to_string();
1915
1916 let mut query: Vec<(String, String)> = Vec::new();
1917 query.push(("domain".to_string(), params.domain_query.clone()));
1918 let query = if query.is_empty() { None } else { Some(query) };
1919
1920 let mut extra_headers = HeaderMap::new();
1921 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1922 let body = None;
1923
1924 self.client
1925 .request_json(
1926 Method::GET,
1927 &path,
1928 headers,
1929 query,
1930 body,
1931 )
1932 .await
1933 }
1934#[instrument(skip(self, params))]
1936 pub async fn get_network_ipinfo(&self, params: GetNetworkIpinfoParams) -> Result<Value> {
1937 let mut path = "/api/v1/network/ipinfo".to_string();
1938
1939 let mut query: Vec<(String, String)> = Vec::new();
1940 query.push(("ip".to_string(), params.ip_query.clone()));
1941 if let Some(value) = ¶ms.source_query {
1942 query.push(("source".to_string(), value.clone()));
1943 }
1944 let query = if query.is_empty() { None } else { Some(query) };
1945
1946 let mut extra_headers = HeaderMap::new();
1947 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1948 let body = None;
1949
1950 self.client
1951 .request_json(
1952 Method::GET,
1953 &path,
1954 headers,
1955 query,
1956 body,
1957 )
1958 .await
1959 }
1960#[instrument(skip(self, params))]
1962 pub async fn get_network_myip(&self, params: GetNetworkMyipParams) -> Result<Value> {
1963 let mut path = "/api/v1/network/myip".to_string();
1964
1965 let mut query: Vec<(String, String)> = Vec::new();
1966 if let Some(value) = ¶ms.source_query {
1967 query.push(("source".to_string(), value.clone()));
1968 }
1969 let query = if query.is_empty() { None } else { Some(query) };
1970
1971 let mut extra_headers = HeaderMap::new();
1972 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1973 let body = None;
1974
1975 self.client
1976 .request_json(
1977 Method::GET,
1978 &path,
1979 headers,
1980 query,
1981 body,
1982 )
1983 .await
1984 }
1985#[instrument(skip(self, params))]
1987 pub async fn get_network_ping(&self, params: GetNetworkPingParams) -> Result<Value> {
1988 let mut path = "/api/v1/network/ping".to_string();
1989
1990 let mut query: Vec<(String, String)> = Vec::new();
1991 query.push(("host".to_string(), params.host_query.clone()));
1992 let query = if query.is_empty() { None } else { Some(query) };
1993
1994 let mut extra_headers = HeaderMap::new();
1995 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
1996 let body = None;
1997
1998 self.client
1999 .request_json(
2000 Method::GET,
2001 &path,
2002 headers,
2003 query,
2004 body,
2005 )
2006 .await
2007 }
2008#[instrument(skip(self))]
2010 pub async fn get_network_pingmyip(&self) -> Result<Value> {
2011 let mut path = "/api/v1/network/pingmyip".to_string();
2012
2013 let mut query: Vec<(String, String)> = Vec::new();
2014 let query = if query.is_empty() { None } else { Some(query) };
2015
2016 let mut extra_headers = HeaderMap::new();
2017 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2018 let body = None;
2019
2020 self.client
2021 .request_json(
2022 Method::GET,
2023 &path,
2024 headers,
2025 query,
2026 body,
2027 )
2028 .await
2029 }
2030#[instrument(skip(self, params))]
2032 pub async fn get_network_portscan(&self, params: GetNetworkPortscanParams) -> Result<Value> {
2033 let mut path = "/api/v1/network/portscan".to_string();
2034
2035 let mut query: Vec<(String, String)> = Vec::new();
2036 query.push(("host".to_string(), params.host_query.clone()));
2037 query.push(("port".to_string(), params.port_query.clone()));
2038 if let Some(value) = ¶ms.protocol_query {
2039 query.push(("protocol".to_string(), value.clone()));
2040 }
2041 let query = if query.is_empty() { None } else { Some(query) };
2042
2043 let mut extra_headers = HeaderMap::new();
2044 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2045 let body = None;
2046
2047 self.client
2048 .request_json(
2049 Method::GET,
2050 &path,
2051 headers,
2052 query,
2053 body,
2054 )
2055 .await
2056 }
2057#[instrument(skip(self, params))]
2059 pub async fn get_network_urlstatus(&self, params: GetNetworkUrlstatusParams) -> Result<Value> {
2060 let mut path = "/api/v1/network/urlstatus".to_string();
2061
2062 let mut query: Vec<(String, String)> = Vec::new();
2063 query.push(("url".to_string(), params.url_query.clone()));
2064 let query = if query.is_empty() { None } else { Some(query) };
2065
2066 let mut extra_headers = HeaderMap::new();
2067 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2068 let body = None;
2069
2070 self.client
2071 .request_json(
2072 Method::GET,
2073 &path,
2074 headers,
2075 query,
2076 body,
2077 )
2078 .await
2079 }
2080#[instrument(skip(self, params))]
2082 pub async fn get_network_whois(&self, params: GetNetworkWhoisParams) -> Result<Value> {
2083 let mut path = "/api/v1/network/whois".to_string();
2084
2085 let mut query: Vec<(String, String)> = Vec::new();
2086 query.push(("domain".to_string(), params.domain_query.clone()));
2087 if let Some(value) = ¶ms.format_query {
2088 query.push(("format".to_string(), value.clone()));
2089 }
2090 let query = if query.is_empty() { None } else { Some(query) };
2091
2092 let mut extra_headers = HeaderMap::new();
2093 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2094 let body = None;
2095
2096 self.client
2097 .request_json(
2098 Method::GET,
2099 &path,
2100 headers,
2101 query,
2102 body,
2103 )
2104 .await
2105 }
2106#[instrument(skip(self, params))]
2108 pub async fn get_network_wxdomain(&self, params: GetNetworkWxdomainParams) -> Result<Value> {
2109 let mut path = "/api/v1/network/wxdomain".to_string();
2110
2111 let mut query: Vec<(String, String)> = Vec::new();
2112 query.push(("domain".to_string(), params.domain_query.clone()));
2113 let query = if query.is_empty() { None } else { Some(query) };
2114
2115 let mut extra_headers = HeaderMap::new();
2116 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2117 let body = None;
2118
2119 self.client
2120 .request_json(
2121 Method::GET,
2122 &path,
2123 headers,
2124 query,
2125 body,
2126 )
2127 .await
2128 }
2129}
2130
2131#[derive(Debug, Clone)]
2132pub struct GetNetworkDnsParams {
2133 pub domain_query: String,
2134 pub type_query: Option<String>,
2135}
2136
2137impl GetNetworkDnsParams {
2138 pub fn new(domain_query: impl Into<String>) -> Self {
2139 Self {
2140 domain_query: domain_query.into(),
2141 type_query: None,
2142 }
2143 }
2144 pub fn type_query(mut self, value: impl Into<String>) -> Self {
2145 self.type_query = Some(value.into());
2146 self
2147 }
2148}
2149
2150#[derive(Debug, Clone)]
2151pub struct GetNetworkIcpParams {
2152 pub domain_query: String,
2153}
2154
2155impl GetNetworkIcpParams {
2156 pub fn new(domain_query: impl Into<String>) -> Self {
2157 Self {
2158 domain_query: domain_query.into(),
2159 }
2160 }
2161}
2162
2163#[derive(Debug, Clone)]
2164pub struct GetNetworkIpinfoParams {
2165 pub ip_query: String,
2166 pub source_query: Option<String>,
2167}
2168
2169impl GetNetworkIpinfoParams {
2170 pub fn new(ip_query: impl Into<String>) -> Self {
2171 Self {
2172 ip_query: ip_query.into(),
2173 source_query: None,
2174 }
2175 }
2176 pub fn source_query(mut self, value: impl Into<String>) -> Self {
2177 self.source_query = Some(value.into());
2178 self
2179 }
2180}
2181
2182#[derive(Debug, Clone)]
2183pub struct GetNetworkMyipParams {
2184 pub source_query: Option<String>,
2185}
2186
2187impl GetNetworkMyipParams {
2188 pub fn new() -> Self {
2189 Self {
2190 source_query: None,
2191 }
2192 }
2193 pub fn source_query(mut self, value: impl Into<String>) -> Self {
2194 self.source_query = Some(value.into());
2195 self
2196 }
2197}
2198
2199#[derive(Debug, Clone)]
2200pub struct GetNetworkPingParams {
2201 pub host_query: String,
2202}
2203
2204impl GetNetworkPingParams {
2205 pub fn new(host_query: impl Into<String>) -> Self {
2206 Self {
2207 host_query: host_query.into(),
2208 }
2209 }
2210}
2211
2212
2213#[derive(Debug, Clone)]
2214pub struct GetNetworkPortscanParams {
2215 pub host_query: String,
2216 pub port_query: String,
2217 pub protocol_query: Option<String>,
2218}
2219
2220impl GetNetworkPortscanParams {
2221 pub fn new(host_query: impl Into<String>, port_query: impl Into<String>) -> Self {
2222 Self {
2223 host_query: host_query.into(),
2224 port_query: port_query.into(),
2225 protocol_query: None,
2226 }
2227 }
2228 pub fn protocol_query(mut self, value: impl Into<String>) -> Self {
2229 self.protocol_query = Some(value.into());
2230 self
2231 }
2232}
2233
2234#[derive(Debug, Clone)]
2235pub struct GetNetworkUrlstatusParams {
2236 pub url_query: String,
2237}
2238
2239impl GetNetworkUrlstatusParams {
2240 pub fn new(url_query: impl Into<String>) -> Self {
2241 Self {
2242 url_query: url_query.into(),
2243 }
2244 }
2245}
2246
2247#[derive(Debug, Clone)]
2248pub struct GetNetworkWhoisParams {
2249 pub domain_query: String,
2250 pub format_query: Option<String>,
2251}
2252
2253impl GetNetworkWhoisParams {
2254 pub fn new(domain_query: impl Into<String>) -> Self {
2255 Self {
2256 domain_query: domain_query.into(),
2257 format_query: None,
2258 }
2259 }
2260 pub fn format_query(mut self, value: impl Into<String>) -> Self {
2261 self.format_query = Some(value.into());
2262 self
2263 }
2264}
2265
2266#[derive(Debug, Clone)]
2267pub struct GetNetworkWxdomainParams {
2268 pub domain_query: String,
2269}
2270
2271impl GetNetworkWxdomainParams {
2272 pub fn new(domain_query: impl Into<String>) -> Self {
2273 Self {
2274 domain_query: domain_query.into(),
2275 }
2276 }
2277}
2278#[derive(Debug, Clone)]
2279pub struct PoemService<'a> {
2280 pub(crate) client: &'a Client,
2281}
2282
2283impl<'a> PoemService<'a> {
2284#[instrument(skip(self))]
2286 pub async fn get_saying(&self) -> Result<Value> {
2287 let mut path = "/api/v1/saying".to_string();
2288
2289 let mut query: Vec<(String, String)> = Vec::new();
2290 let query = if query.is_empty() { None } else { Some(query) };
2291
2292 let mut extra_headers = HeaderMap::new();
2293 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2294 let body = None;
2295
2296 self.client
2297 .request_json(
2298 Method::GET,
2299 &path,
2300 headers,
2301 query,
2302 body,
2303 )
2304 .await
2305 }
2306}
2307
2308#[derive(Debug, Clone)]
2309pub struct RandomService<'a> {
2310 pub(crate) client: &'a Client,
2311}
2312
2313impl<'a> RandomService<'a> {
2314#[instrument(skip(self, params))]
2316 pub async fn get_answerbook_ask(&self, params: GetAnswerbookAskParams) -> Result<Value> {
2317 let mut path = "/api/v1/answerbook/ask".to_string();
2318
2319 let mut query: Vec<(String, String)> = Vec::new();
2320 query.push(("question".to_string(), params.question_query.clone()));
2321 let query = if query.is_empty() { None } else { Some(query) };
2322
2323 let mut extra_headers = HeaderMap::new();
2324 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2325 let body = None;
2326
2327 self.client
2328 .request_json(
2329 Method::GET,
2330 &path,
2331 headers,
2332 query,
2333 body,
2334 )
2335 .await
2336 }
2337#[instrument(skip(self, params))]
2339 pub async fn get_random_image(&self, params: GetRandomImageParams) -> Result<Value> {
2340 let mut path = "/api/v1/random/image".to_string();
2341
2342 let mut query: Vec<(String, String)> = Vec::new();
2343 if let Some(value) = ¶ms.category_query {
2344 query.push(("category".to_string(), value.clone()));
2345 }
2346 if let Some(value) = ¶ms.type_query {
2347 query.push(("type".to_string(), value.clone()));
2348 }
2349 let query = if query.is_empty() { None } else { Some(query) };
2350
2351 let mut extra_headers = HeaderMap::new();
2352 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2353 let body = None;
2354
2355 self.client
2356 .request_json(
2357 Method::GET,
2358 &path,
2359 headers,
2360 query,
2361 body,
2362 )
2363 .await
2364 }
2365#[instrument(skip(self, params))]
2367 pub async fn get_random_string(&self, params: GetRandomStringParams) -> Result<Value> {
2368 let mut path = "/api/v1/random/string".to_string();
2369
2370 let mut query: Vec<(String, String)> = Vec::new();
2371 if let Some(value) = ¶ms.length_query {
2372 query.push(("length".to_string(), value.clone()));
2373 }
2374 if let Some(value) = ¶ms.type_query {
2375 query.push(("type".to_string(), value.clone()));
2376 }
2377 let query = if query.is_empty() { None } else { Some(query) };
2378
2379 let mut extra_headers = HeaderMap::new();
2380 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2381 let body = None;
2382
2383 self.client
2384 .request_json(
2385 Method::GET,
2386 &path,
2387 headers,
2388 query,
2389 body,
2390 )
2391 .await
2392 }
2393#[instrument(skip(self, params))]
2395 pub async fn post_answerbook_ask(&self, params: PostAnswerbookAskParams) -> Result<Value> {
2396 let mut path = "/api/v1/answerbook/ask".to_string();
2397
2398 let mut query: Vec<(String, String)> = Vec::new();
2399 let query = if query.is_empty() { None } else { Some(query) };
2400
2401 let mut extra_headers = HeaderMap::new();
2402 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2403 let body = params.body.clone();
2404
2405 self.client
2406 .request_json(
2407 Method::POST,
2408 &path,
2409 headers,
2410 query,
2411 body,
2412 )
2413 .await
2414 }
2415}
2416
2417#[derive(Debug, Clone)]
2418pub struct GetAnswerbookAskParams {
2419 pub question_query: String,
2420}
2421
2422impl GetAnswerbookAskParams {
2423 pub fn new(question_query: impl Into<String>) -> Self {
2424 Self {
2425 question_query: question_query.into(),
2426 }
2427 }
2428}
2429
2430#[derive(Debug, Clone)]
2431pub struct GetRandomImageParams {
2432 pub category_query: Option<String>,
2433 pub type_query: Option<String>,
2434}
2435
2436impl GetRandomImageParams {
2437 pub fn new() -> Self {
2438 Self {
2439 category_query: None,
2440 type_query: None,
2441 }
2442 }
2443 pub fn category_query(mut self, value: impl Into<String>) -> Self {
2444 self.category_query = Some(value.into());
2445 self
2446 }
2447 pub fn type_query(mut self, value: impl Into<String>) -> Self {
2448 self.type_query = Some(value.into());
2449 self
2450 }
2451}
2452
2453#[derive(Debug, Clone)]
2454pub struct GetRandomStringParams {
2455 pub length_query: Option<String>,
2456 pub type_query: Option<String>,
2457}
2458
2459impl GetRandomStringParams {
2460 pub fn new() -> Self {
2461 Self {
2462 length_query: None,
2463 type_query: None,
2464 }
2465 }
2466 pub fn length_query(mut self, value: impl Into<String>) -> Self {
2467 self.length_query = Some(value.into());
2468 self
2469 }
2470 pub fn type_query(mut self, value: impl Into<String>) -> Self {
2471 self.type_query = Some(value.into());
2472 self
2473 }
2474}
2475
2476#[derive(Debug, Clone)]
2477pub struct PostAnswerbookAskParams {
2478 pub body: Option<Value>,
2479}
2480
2481impl PostAnswerbookAskParams {
2482 pub fn new() -> Self {
2483 Self {
2484 body: None,
2485 }
2486 }
2487 pub fn body(mut self, value: Value) -> Self {
2488 self.body = Some(value);
2489 self
2490 }
2491}
2492#[derive(Debug, Clone)]
2493pub struct SocialService<'a> {
2494 pub(crate) client: &'a Client,
2495}
2496
2497impl<'a> SocialService<'a> {
2498#[instrument(skip(self, params))]
2500 pub async fn get_github_repo(&self, params: GetGithubRepoParams) -> Result<Value> {
2501 let mut path = "/api/v1/github/repo".to_string();
2502
2503 let mut query: Vec<(String, String)> = Vec::new();
2504 query.push(("repo".to_string(), params.repo_query.clone()));
2505 let query = if query.is_empty() { None } else { Some(query) };
2506
2507 let mut extra_headers = HeaderMap::new();
2508 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2509 let body = None;
2510
2511 self.client
2512 .request_json(
2513 Method::GET,
2514 &path,
2515 headers,
2516 query,
2517 body,
2518 )
2519 .await
2520 }
2521#[instrument(skip(self, params))]
2523 pub async fn get_social_bilibili_archives(&self, params: GetSocialBilibiliArchivesParams) -> Result<Value> {
2524 let mut path = "/api/v1/social/bilibili/archives".to_string();
2525
2526 let mut query: Vec<(String, String)> = Vec::new();
2527 query.push(("mid".to_string(), params.mid_query.clone()));
2528 if let Some(value) = ¶ms.keywords_query {
2529 query.push(("keywords".to_string(), value.clone()));
2530 }
2531 if let Some(value) = ¶ms.orderby_query {
2532 query.push(("orderby".to_string(), value.clone()));
2533 }
2534 if let Some(value) = ¶ms.ps_query {
2535 query.push(("ps".to_string(), value.clone()));
2536 }
2537 if let Some(value) = ¶ms.pn_query {
2538 query.push(("pn".to_string(), value.clone()));
2539 }
2540 let query = if query.is_empty() { None } else { Some(query) };
2541
2542 let mut extra_headers = HeaderMap::new();
2543 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2544 let body = None;
2545
2546 self.client
2547 .request_json(
2548 Method::GET,
2549 &path,
2550 headers,
2551 query,
2552 body,
2553 )
2554 .await
2555 }
2556#[instrument(skip(self, params))]
2558 pub async fn get_social_bilibili_liveroom(&self, params: GetSocialBilibiliLiveroomParams) -> Result<Value> {
2559 let mut path = "/api/v1/social/bilibili/liveroom".to_string();
2560
2561 let mut query: Vec<(String, String)> = Vec::new();
2562 if let Some(value) = ¶ms.mid_query {
2563 query.push(("mid".to_string(), value.clone()));
2564 }
2565 if let Some(value) = ¶ms.room_id_query {
2566 query.push(("room_id".to_string(), value.clone()));
2567 }
2568 let query = if query.is_empty() { None } else { Some(query) };
2569
2570 let mut extra_headers = HeaderMap::new();
2571 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2572 let body = None;
2573
2574 self.client
2575 .request_json(
2576 Method::GET,
2577 &path,
2578 headers,
2579 query,
2580 body,
2581 )
2582 .await
2583 }
2584#[instrument(skip(self, params))]
2586 pub async fn get_social_bilibili_replies(&self, params: GetSocialBilibiliRepliesParams) -> Result<Value> {
2587 let mut path = "/api/v1/social/bilibili/replies".to_string();
2588
2589 let mut query: Vec<(String, String)> = Vec::new();
2590 query.push(("oid".to_string(), params.oid_query.clone()));
2591 if let Some(value) = ¶ms.sort_query {
2592 query.push(("sort".to_string(), value.clone()));
2593 }
2594 if let Some(value) = ¶ms.ps_query {
2595 query.push(("ps".to_string(), value.clone()));
2596 }
2597 if let Some(value) = ¶ms.pn_query {
2598 query.push(("pn".to_string(), value.clone()));
2599 }
2600 let query = if query.is_empty() { None } else { Some(query) };
2601
2602 let mut extra_headers = HeaderMap::new();
2603 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2604 let body = None;
2605
2606 self.client
2607 .request_json(
2608 Method::GET,
2609 &path,
2610 headers,
2611 query,
2612 body,
2613 )
2614 .await
2615 }
2616#[instrument(skip(self, params))]
2618 pub async fn get_social_bilibili_userinfo(&self, params: GetSocialBilibiliUserinfoParams) -> Result<Value> {
2619 let mut path = "/api/v1/social/bilibili/userinfo".to_string();
2620
2621 let mut query: Vec<(String, String)> = Vec::new();
2622 query.push(("uid".to_string(), params.uid_query.clone()));
2623 let query = if query.is_empty() { None } else { Some(query) };
2624
2625 let mut extra_headers = HeaderMap::new();
2626 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2627 let body = None;
2628
2629 self.client
2630 .request_json(
2631 Method::GET,
2632 &path,
2633 headers,
2634 query,
2635 body,
2636 )
2637 .await
2638 }
2639#[instrument(skip(self, params))]
2641 pub async fn get_social_bilibili_videoinfo(&self, params: GetSocialBilibiliVideoinfoParams) -> Result<Value> {
2642 let mut path = "/api/v1/social/bilibili/videoinfo".to_string();
2643
2644 let mut query: Vec<(String, String)> = Vec::new();
2645 if let Some(value) = ¶ms.aid_query {
2646 query.push(("aid".to_string(), value.clone()));
2647 }
2648 if let Some(value) = ¶ms.bvid_query {
2649 query.push(("bvid".to_string(), value.clone()));
2650 }
2651 let query = if query.is_empty() { None } else { Some(query) };
2652
2653 let mut extra_headers = HeaderMap::new();
2654 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2655 let body = None;
2656
2657 self.client
2658 .request_json(
2659 Method::GET,
2660 &path,
2661 headers,
2662 query,
2663 body,
2664 )
2665 .await
2666 }
2667#[instrument(skip(self, params))]
2669 pub async fn get_social_qq_groupinfo(&self, params: GetSocialQqGroupinfoParams) -> Result<Value> {
2670 let mut path = "/api/v1/social/qq/groupinfo".to_string();
2671
2672 let mut query: Vec<(String, String)> = Vec::new();
2673 query.push(("group_id".to_string(), params.group_id_query.clone()));
2674 let query = if query.is_empty() { None } else { Some(query) };
2675
2676 let mut extra_headers = HeaderMap::new();
2677 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2678 let body = None;
2679
2680 self.client
2681 .request_json(
2682 Method::GET,
2683 &path,
2684 headers,
2685 query,
2686 body,
2687 )
2688 .await
2689 }
2690#[instrument(skip(self, params))]
2692 pub async fn get_social_qq_userinfo(&self, params: GetSocialQqUserinfoParams) -> Result<Value> {
2693 let mut path = "/api/v1/social/qq/userinfo".to_string();
2694
2695 let mut query: Vec<(String, String)> = Vec::new();
2696 query.push(("qq".to_string(), params.qq_query.clone()));
2697 let query = if query.is_empty() { None } else { Some(query) };
2698
2699 let mut extra_headers = HeaderMap::new();
2700 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2701 let body = None;
2702
2703 self.client
2704 .request_json(
2705 Method::GET,
2706 &path,
2707 headers,
2708 query,
2709 body,
2710 )
2711 .await
2712 }
2713}
2714
2715#[derive(Debug, Clone)]
2716pub struct GetGithubRepoParams {
2717 pub repo_query: String,
2718}
2719
2720impl GetGithubRepoParams {
2721 pub fn new(repo_query: impl Into<String>) -> Self {
2722 Self {
2723 repo_query: repo_query.into(),
2724 }
2725 }
2726}
2727
2728#[derive(Debug, Clone)]
2729pub struct GetSocialBilibiliArchivesParams {
2730 pub mid_query: String,
2731 pub keywords_query: Option<String>,
2732 pub orderby_query: Option<String>,
2733 pub ps_query: Option<String>,
2734 pub pn_query: Option<String>,
2735}
2736
2737impl GetSocialBilibiliArchivesParams {
2738 pub fn new(mid_query: impl Into<String>) -> Self {
2739 Self {
2740 mid_query: mid_query.into(),
2741 keywords_query: None,
2742 orderby_query: None,
2743 ps_query: None,
2744 pn_query: None,
2745 }
2746 }
2747 pub fn keywords_query(mut self, value: impl Into<String>) -> Self {
2748 self.keywords_query = Some(value.into());
2749 self
2750 }
2751 pub fn orderby_query(mut self, value: impl Into<String>) -> Self {
2752 self.orderby_query = Some(value.into());
2753 self
2754 }
2755 pub fn ps_query(mut self, value: impl Into<String>) -> Self {
2756 self.ps_query = Some(value.into());
2757 self
2758 }
2759 pub fn pn_query(mut self, value: impl Into<String>) -> Self {
2760 self.pn_query = Some(value.into());
2761 self
2762 }
2763}
2764
2765#[derive(Debug, Clone)]
2766pub struct GetSocialBilibiliLiveroomParams {
2767 pub mid_query: Option<String>,
2768 pub room_id_query: Option<String>,
2769}
2770
2771impl GetSocialBilibiliLiveroomParams {
2772 pub fn new() -> Self {
2773 Self {
2774 mid_query: None,
2775 room_id_query: None,
2776 }
2777 }
2778 pub fn mid_query(mut self, value: impl Into<String>) -> Self {
2779 self.mid_query = Some(value.into());
2780 self
2781 }
2782 pub fn room_id_query(mut self, value: impl Into<String>) -> Self {
2783 self.room_id_query = Some(value.into());
2784 self
2785 }
2786}
2787
2788#[derive(Debug, Clone)]
2789pub struct GetSocialBilibiliRepliesParams {
2790 pub oid_query: String,
2791 pub sort_query: Option<String>,
2792 pub ps_query: Option<String>,
2793 pub pn_query: Option<String>,
2794}
2795
2796impl GetSocialBilibiliRepliesParams {
2797 pub fn new(oid_query: impl Into<String>) -> Self {
2798 Self {
2799 oid_query: oid_query.into(),
2800 sort_query: None,
2801 ps_query: None,
2802 pn_query: None,
2803 }
2804 }
2805 pub fn sort_query(mut self, value: impl Into<String>) -> Self {
2806 self.sort_query = Some(value.into());
2807 self
2808 }
2809 pub fn ps_query(mut self, value: impl Into<String>) -> Self {
2810 self.ps_query = Some(value.into());
2811 self
2812 }
2813 pub fn pn_query(mut self, value: impl Into<String>) -> Self {
2814 self.pn_query = Some(value.into());
2815 self
2816 }
2817}
2818
2819#[derive(Debug, Clone)]
2820pub struct GetSocialBilibiliUserinfoParams {
2821 pub uid_query: String,
2822}
2823
2824impl GetSocialBilibiliUserinfoParams {
2825 pub fn new(uid_query: impl Into<String>) -> Self {
2826 Self {
2827 uid_query: uid_query.into(),
2828 }
2829 }
2830}
2831
2832#[derive(Debug, Clone)]
2833pub struct GetSocialBilibiliVideoinfoParams {
2834 pub aid_query: Option<String>,
2835 pub bvid_query: Option<String>,
2836}
2837
2838impl GetSocialBilibiliVideoinfoParams {
2839 pub fn new() -> Self {
2840 Self {
2841 aid_query: None,
2842 bvid_query: None,
2843 }
2844 }
2845 pub fn aid_query(mut self, value: impl Into<String>) -> Self {
2846 self.aid_query = Some(value.into());
2847 self
2848 }
2849 pub fn bvid_query(mut self, value: impl Into<String>) -> Self {
2850 self.bvid_query = Some(value.into());
2851 self
2852 }
2853}
2854
2855#[derive(Debug, Clone)]
2856pub struct GetSocialQqGroupinfoParams {
2857 pub group_id_query: String,
2858}
2859
2860impl GetSocialQqGroupinfoParams {
2861 pub fn new(group_id_query: impl Into<String>) -> Self {
2862 Self {
2863 group_id_query: group_id_query.into(),
2864 }
2865 }
2866}
2867
2868#[derive(Debug, Clone)]
2869pub struct GetSocialQqUserinfoParams {
2870 pub qq_query: String,
2871}
2872
2873impl GetSocialQqUserinfoParams {
2874 pub fn new(qq_query: impl Into<String>) -> Self {
2875 Self {
2876 qq_query: qq_query.into(),
2877 }
2878 }
2879}
2880#[derive(Debug, Clone)]
2881pub struct StatusService<'a> {
2882 pub(crate) client: &'a Client,
2883}
2884
2885impl<'a> StatusService<'a> {
2886#[instrument(skip(self, params))]
2888 pub async fn get_status_ratelimit(&self, params: GetStatusRatelimitParams) -> Result<Value> {
2889 let mut path = "/api/v1/status/ratelimit".to_string();
2890
2891 let mut query: Vec<(String, String)> = Vec::new();
2892 let query = if query.is_empty() { None } else { Some(query) };
2893
2894 let mut extra_headers = HeaderMap::new();
2895 extra_headers.insert(
2896 "Authorization",
2897 HeaderValue::from_str(¶ms.authorization_header).map_err(|_| Error::InvalidHeader { name: "Authorization".into() })?,
2898 );
2899 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2900 let body = None;
2901
2902 self.client
2903 .request_json(
2904 Method::GET,
2905 &path,
2906 headers,
2907 query,
2908 body,
2909 )
2910 .await
2911 }
2912#[instrument(skip(self, params))]
2914 pub async fn get_status_usage(&self, params: GetStatusUsageParams) -> Result<Value> {
2915 let mut path = "/api/v1/status/usage".to_string();
2916
2917 let mut query: Vec<(String, String)> = Vec::new();
2918 if let Some(value) = ¶ms.path_query {
2919 query.push(("path".to_string(), value.clone()));
2920 }
2921 let query = if query.is_empty() { None } else { Some(query) };
2922
2923 let mut extra_headers = HeaderMap::new();
2924 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2925 let body = None;
2926
2927 self.client
2928 .request_json(
2929 Method::GET,
2930 &path,
2931 headers,
2932 query,
2933 body,
2934 )
2935 .await
2936 }
2937}
2938
2939#[derive(Debug, Clone)]
2940pub struct GetStatusRatelimitParams {
2941 pub authorization_header: String,
2942}
2943
2944impl GetStatusRatelimitParams {
2945 pub fn new(authorization_header: impl Into<String>) -> Self {
2946 Self {
2947 authorization_header: authorization_header.into(),
2948 }
2949 }
2950}
2951
2952#[derive(Debug, Clone)]
2953pub struct GetStatusUsageParams {
2954 pub path_query: Option<String>,
2955}
2956
2957impl GetStatusUsageParams {
2958 pub fn new() -> Self {
2959 Self {
2960 path_query: None,
2961 }
2962 }
2963 pub fn path_query(mut self, value: impl Into<String>) -> Self {
2964 self.path_query = Some(value.into());
2965 self
2966 }
2967}
2968#[derive(Debug, Clone)]
2969pub struct TextService<'a> {
2970 pub(crate) client: &'a Client,
2971}
2972
2973impl<'a> TextService<'a> {
2974#[instrument(skip(self, params))]
2976 pub async fn get_text_md_5(&self, params: GetTextMd5Params) -> Result<Value> {
2977 let mut path = "/api/v1/text/md5".to_string();
2978
2979 let mut query: Vec<(String, String)> = Vec::new();
2980 query.push(("text".to_string(), params.text_query.clone()));
2981 let query = if query.is_empty() { None } else { Some(query) };
2982
2983 let mut extra_headers = HeaderMap::new();
2984 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
2985 let body = None;
2986
2987 self.client
2988 .request_json(
2989 Method::GET,
2990 &path,
2991 headers,
2992 query,
2993 body,
2994 )
2995 .await
2996 }
2997#[instrument(skip(self, params))]
2999 pub async fn post_text_aes_decrypt(&self, params: PostTextAesDecryptParams) -> Result<Value> {
3000 let mut path = "/api/v1/text/aes/decrypt".to_string();
3001
3002 let mut query: Vec<(String, String)> = Vec::new();
3003 let query = if query.is_empty() { None } else { Some(query) };
3004
3005 let mut extra_headers = HeaderMap::new();
3006 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3007 let body = params.body.clone();
3008
3009 self.client
3010 .request_json(
3011 Method::POST,
3012 &path,
3013 headers,
3014 query,
3015 body,
3016 )
3017 .await
3018 }
3019#[instrument(skip(self, params))]
3021 pub async fn post_text_aes_decrypt_advanced(&self, params: PostTextAesDecryptAdvancedParams) -> Result<Value> {
3022 let mut path = "/api/v1/text/aes/decrypt-advanced".to_string();
3023
3024 let mut query: Vec<(String, String)> = Vec::new();
3025 let query = if query.is_empty() { None } else { Some(query) };
3026
3027 let mut extra_headers = HeaderMap::new();
3028 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3029 let body = params.body.clone();
3030
3031 self.client
3032 .request_json(
3033 Method::POST,
3034 &path,
3035 headers,
3036 query,
3037 body,
3038 )
3039 .await
3040 }
3041#[instrument(skip(self, params))]
3043 pub async fn post_text_aes_encrypt(&self, params: PostTextAesEncryptParams) -> Result<Value> {
3044 let mut path = "/api/v1/text/aes/encrypt".to_string();
3045
3046 let mut query: Vec<(String, String)> = Vec::new();
3047 let query = if query.is_empty() { None } else { Some(query) };
3048
3049 let mut extra_headers = HeaderMap::new();
3050 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3051 let body = params.body.clone();
3052
3053 self.client
3054 .request_json(
3055 Method::POST,
3056 &path,
3057 headers,
3058 query,
3059 body,
3060 )
3061 .await
3062 }
3063#[instrument(skip(self, params))]
3065 pub async fn post_text_aes_encrypt_advanced(&self, params: PostTextAesEncryptAdvancedParams) -> Result<Value> {
3066 let mut path = "/api/v1/text/aes/encrypt-advanced".to_string();
3067
3068 let mut query: Vec<(String, String)> = Vec::new();
3069 let query = if query.is_empty() { None } else { Some(query) };
3070
3071 let mut extra_headers = HeaderMap::new();
3072 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3073 let body = params.body.clone();
3074
3075 self.client
3076 .request_json(
3077 Method::POST,
3078 &path,
3079 headers,
3080 query,
3081 body,
3082 )
3083 .await
3084 }
3085#[instrument(skip(self, params))]
3087 pub async fn post_text_analyze(&self, params: PostTextAnalyzeParams) -> Result<Value> {
3088 let mut path = "/api/v1/text/analyze".to_string();
3089
3090 let mut query: Vec<(String, String)> = Vec::new();
3091 let query = if query.is_empty() { None } else { Some(query) };
3092
3093 let mut extra_headers = HeaderMap::new();
3094 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3095 let body = params.body.clone();
3096
3097 self.client
3098 .request_json(
3099 Method::POST,
3100 &path,
3101 headers,
3102 query,
3103 body,
3104 )
3105 .await
3106 }
3107#[instrument(skip(self, params))]
3109 pub async fn post_text_base_64_decode(&self, params: PostTextBase64DecodeParams) -> Result<Value> {
3110 let mut path = "/api/v1/text/base64/decode".to_string();
3111
3112 let mut query: Vec<(String, String)> = Vec::new();
3113 let query = if query.is_empty() { None } else { Some(query) };
3114
3115 let mut extra_headers = HeaderMap::new();
3116 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3117 let body = params.body.clone();
3118
3119 self.client
3120 .request_json(
3121 Method::POST,
3122 &path,
3123 headers,
3124 query,
3125 body,
3126 )
3127 .await
3128 }
3129#[instrument(skip(self, params))]
3131 pub async fn post_text_base_64_encode(&self, params: PostTextBase64EncodeParams) -> Result<Value> {
3132 let mut path = "/api/v1/text/base64/encode".to_string();
3133
3134 let mut query: Vec<(String, String)> = Vec::new();
3135 let query = if query.is_empty() { None } else { Some(query) };
3136
3137 let mut extra_headers = HeaderMap::new();
3138 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3139 let body = params.body.clone();
3140
3141 self.client
3142 .request_json(
3143 Method::POST,
3144 &path,
3145 headers,
3146 query,
3147 body,
3148 )
3149 .await
3150 }
3151#[instrument(skip(self, params))]
3153 pub async fn post_text_convert(&self, params: PostTextConvertParams) -> Result<Value> {
3154 let mut path = "/api/v1/text/convert".to_string();
3155
3156 let mut query: Vec<(String, String)> = Vec::new();
3157 let query = if query.is_empty() { None } else { Some(query) };
3158
3159 let mut extra_headers = HeaderMap::new();
3160 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3161 let body = params.body.clone();
3162
3163 self.client
3164 .request_json(
3165 Method::POST,
3166 &path,
3167 headers,
3168 query,
3169 body,
3170 )
3171 .await
3172 }
3173#[instrument(skip(self, params))]
3175 pub async fn post_text_md_5(&self, params: PostTextMd5Params) -> Result<Value> {
3176 let mut path = "/api/v1/text/md5".to_string();
3177
3178 let mut query: Vec<(String, String)> = Vec::new();
3179 let query = if query.is_empty() { None } else { Some(query) };
3180
3181 let mut extra_headers = HeaderMap::new();
3182 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3183 let body = params.body.clone();
3184
3185 self.client
3186 .request_json(
3187 Method::POST,
3188 &path,
3189 headers,
3190 query,
3191 body,
3192 )
3193 .await
3194 }
3195#[instrument(skip(self, params))]
3197 pub async fn post_text_md_5_verify(&self, params: PostTextMd5VerifyParams) -> Result<Value> {
3198 let mut path = "/api/v1/text/md5/verify".to_string();
3199
3200 let mut query: Vec<(String, String)> = Vec::new();
3201 let query = if query.is_empty() { None } else { Some(query) };
3202
3203 let mut extra_headers = HeaderMap::new();
3204 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3205 let body = params.body.clone();
3206
3207 self.client
3208 .request_json(
3209 Method::POST,
3210 &path,
3211 headers,
3212 query,
3213 body,
3214 )
3215 .await
3216 }
3217}
3218
3219#[derive(Debug, Clone)]
3220pub struct GetTextMd5Params {
3221 pub text_query: String,
3222}
3223
3224impl GetTextMd5Params {
3225 pub fn new(text_query: impl Into<String>) -> Self {
3226 Self {
3227 text_query: text_query.into(),
3228 }
3229 }
3230}
3231
3232#[derive(Debug, Clone)]
3233pub struct PostTextAesDecryptParams {
3234 pub body: Option<Value>,
3235}
3236
3237impl PostTextAesDecryptParams {
3238 pub fn new() -> Self {
3239 Self {
3240 body: None,
3241 }
3242 }
3243 pub fn body(mut self, value: Value) -> Self {
3244 self.body = Some(value);
3245 self
3246 }
3247}
3248
3249#[derive(Debug, Clone)]
3250pub struct PostTextAesDecryptAdvancedParams {
3251 pub body: Option<Value>,
3252}
3253
3254impl PostTextAesDecryptAdvancedParams {
3255 pub fn new() -> Self {
3256 Self {
3257 body: None,
3258 }
3259 }
3260 pub fn body(mut self, value: Value) -> Self {
3261 self.body = Some(value);
3262 self
3263 }
3264}
3265
3266#[derive(Debug, Clone)]
3267pub struct PostTextAesEncryptParams {
3268 pub body: Option<Value>,
3269}
3270
3271impl PostTextAesEncryptParams {
3272 pub fn new() -> Self {
3273 Self {
3274 body: None,
3275 }
3276 }
3277 pub fn body(mut self, value: Value) -> Self {
3278 self.body = Some(value);
3279 self
3280 }
3281}
3282
3283#[derive(Debug, Clone)]
3284pub struct PostTextAesEncryptAdvancedParams {
3285 pub body: Option<Value>,
3286}
3287
3288impl PostTextAesEncryptAdvancedParams {
3289 pub fn new() -> Self {
3290 Self {
3291 body: None,
3292 }
3293 }
3294 pub fn body(mut self, value: Value) -> Self {
3295 self.body = Some(value);
3296 self
3297 }
3298}
3299
3300#[derive(Debug, Clone)]
3301pub struct PostTextAnalyzeParams {
3302 pub body: Option<Value>,
3303}
3304
3305impl PostTextAnalyzeParams {
3306 pub fn new() -> Self {
3307 Self {
3308 body: None,
3309 }
3310 }
3311 pub fn body(mut self, value: Value) -> Self {
3312 self.body = Some(value);
3313 self
3314 }
3315}
3316
3317#[derive(Debug, Clone)]
3318pub struct PostTextBase64DecodeParams {
3319 pub body: Option<Value>,
3320}
3321
3322impl PostTextBase64DecodeParams {
3323 pub fn new() -> Self {
3324 Self {
3325 body: None,
3326 }
3327 }
3328 pub fn body(mut self, value: Value) -> Self {
3329 self.body = Some(value);
3330 self
3331 }
3332}
3333
3334#[derive(Debug, Clone)]
3335pub struct PostTextBase64EncodeParams {
3336 pub body: Option<Value>,
3337}
3338
3339impl PostTextBase64EncodeParams {
3340 pub fn new() -> Self {
3341 Self {
3342 body: None,
3343 }
3344 }
3345 pub fn body(mut self, value: Value) -> Self {
3346 self.body = Some(value);
3347 self
3348 }
3349}
3350
3351#[derive(Debug, Clone)]
3352pub struct PostTextConvertParams {
3353 pub body: Option<Value>,
3354}
3355
3356impl PostTextConvertParams {
3357 pub fn new() -> Self {
3358 Self {
3359 body: None,
3360 }
3361 }
3362 pub fn body(mut self, value: Value) -> Self {
3363 self.body = Some(value);
3364 self
3365 }
3366}
3367
3368#[derive(Debug, Clone)]
3369pub struct PostTextMd5Params {
3370 pub body: Option<Value>,
3371}
3372
3373impl PostTextMd5Params {
3374 pub fn new() -> Self {
3375 Self {
3376 body: None,
3377 }
3378 }
3379 pub fn body(mut self, value: Value) -> Self {
3380 self.body = Some(value);
3381 self
3382 }
3383}
3384
3385#[derive(Debug, Clone)]
3386pub struct PostTextMd5VerifyParams {
3387 pub body: Option<Value>,
3388}
3389
3390impl PostTextMd5VerifyParams {
3391 pub fn new() -> Self {
3392 Self {
3393 body: None,
3394 }
3395 }
3396 pub fn body(mut self, value: Value) -> Self {
3397 self.body = Some(value);
3398 self
3399 }
3400}
3401#[derive(Debug, Clone)]
3402pub struct TranslateService<'a> {
3403 pub(crate) client: &'a Client,
3404}
3405
3406impl<'a> TranslateService<'a> {
3407#[instrument(skip(self))]
3409 pub async fn get_ai_translate_languages(&self) -> Result<Value> {
3410 let mut path = "/api/v1/ai/translate/languages".to_string();
3411
3412 let mut query: Vec<(String, String)> = Vec::new();
3413 let query = if query.is_empty() { None } else { Some(query) };
3414
3415 let mut extra_headers = HeaderMap::new();
3416 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3417 let body = None;
3418
3419 self.client
3420 .request_json(
3421 Method::GET,
3422 &path,
3423 headers,
3424 query,
3425 body,
3426 )
3427 .await
3428 }
3429#[instrument(skip(self, params))]
3431 pub async fn post_ai_translate(&self, params: PostAiTranslateParams) -> Result<Value> {
3432 let mut path = "/api/v1/ai/translate".to_string();
3433
3434 let mut query: Vec<(String, String)> = Vec::new();
3435 query.push(("target_lang".to_string(), params.target_lang_query.clone()));
3436 let query = if query.is_empty() { None } else { Some(query) };
3437
3438 let mut extra_headers = HeaderMap::new();
3439 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3440 let body = params.body.clone();
3441
3442 self.client
3443 .request_json(
3444 Method::POST,
3445 &path,
3446 headers,
3447 query,
3448 body,
3449 )
3450 .await
3451 }
3452#[instrument(skip(self, params))]
3454 pub async fn post_translate_stream(&self, params: PostTranslateStreamParams) -> Result<Value> {
3455 let mut path = "/api/v1/translate/stream".to_string();
3456
3457 let mut query: Vec<(String, String)> = Vec::new();
3458 let query = if query.is_empty() { None } else { Some(query) };
3459
3460 let mut extra_headers = HeaderMap::new();
3461 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3462 let body = params.body.clone();
3463
3464 self.client
3465 .request_json(
3466 Method::POST,
3467 &path,
3468 headers,
3469 query,
3470 body,
3471 )
3472 .await
3473 }
3474#[instrument(skip(self, params))]
3476 pub async fn post_translate_text(&self, params: PostTranslateTextParams) -> Result<Value> {
3477 let mut path = "/api/v1/translate/text".to_string();
3478
3479 let mut query: Vec<(String, String)> = Vec::new();
3480 query.push(("to_lang".to_string(), params.to_lang_query.clone()));
3481 let query = if query.is_empty() { None } else { Some(query) };
3482
3483 let mut extra_headers = HeaderMap::new();
3484 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3485 let body = params.body.clone();
3486
3487 self.client
3488 .request_json(
3489 Method::POST,
3490 &path,
3491 headers,
3492 query,
3493 body,
3494 )
3495 .await
3496 }
3497}
3498
3499
3500#[derive(Debug, Clone)]
3501pub struct PostAiTranslateParams {
3502 pub target_lang_query: String,
3503 pub body: Option<Value>,
3504}
3505
3506impl PostAiTranslateParams {
3507 pub fn new(target_lang_query: impl Into<String>) -> Self {
3508 Self {
3509 target_lang_query: target_lang_query.into(),
3510 body: None,
3511 }
3512 }
3513 pub fn body(mut self, value: Value) -> Self {
3514 self.body = Some(value);
3515 self
3516 }
3517}
3518
3519#[derive(Debug, Clone)]
3520pub struct PostTranslateStreamParams {
3521 pub body: Option<Value>,
3522}
3523
3524impl PostTranslateStreamParams {
3525 pub fn new() -> Self {
3526 Self {
3527 body: None,
3528 }
3529 }
3530 pub fn body(mut self, value: Value) -> Self {
3531 self.body = Some(value);
3532 self
3533 }
3534}
3535
3536#[derive(Debug, Clone)]
3537pub struct PostTranslateTextParams {
3538 pub to_lang_query: String,
3539 pub body: Option<Value>,
3540}
3541
3542impl PostTranslateTextParams {
3543 pub fn new(to_lang_query: impl Into<String>) -> Self {
3544 Self {
3545 to_lang_query: to_lang_query.into(),
3546 body: None,
3547 }
3548 }
3549 pub fn body(mut self, value: Value) -> Self {
3550 self.body = Some(value);
3551 self
3552 }
3553}
3554#[derive(Debug, Clone)]
3555pub struct WebparseService<'a> {
3556 pub(crate) client: &'a Client,
3557}
3558
3559impl<'a> WebparseService<'a> {
3560#[instrument(skip(self, params))]
3562 pub async fn get_web_tomarkdown_async_status(&self, params: GetWebTomarkdownAsyncStatusParams) -> Result<Value> {
3563 let mut path = "/api/v1/web/tomarkdown/async/{task_id}".to_string();
3564 {
3565 let encoded = encode(¶ms.task_id_path).into_owned();
3566 path = path.replace("{task_id}", &encoded);
3567 }
3568
3569 let mut query: Vec<(String, String)> = Vec::new();
3570 let query = if query.is_empty() { None } else { Some(query) };
3571
3572 let mut extra_headers = HeaderMap::new();
3573 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3574 let body = None;
3575
3576 self.client
3577 .request_json(
3578 Method::GET,
3579 &path,
3580 headers,
3581 query,
3582 body,
3583 )
3584 .await
3585 }
3586#[instrument(skip(self, params))]
3588 pub async fn get_webparse_extractimages(&self, params: GetWebparseExtractimagesParams) -> Result<Value> {
3589 let mut path = "/api/v1/webparse/extractimages".to_string();
3590
3591 let mut query: Vec<(String, String)> = Vec::new();
3592 query.push(("url".to_string(), params.url_query.clone()));
3593 let query = if query.is_empty() { None } else { Some(query) };
3594
3595 let mut extra_headers = HeaderMap::new();
3596 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3597 let body = None;
3598
3599 self.client
3600 .request_json(
3601 Method::GET,
3602 &path,
3603 headers,
3604 query,
3605 body,
3606 )
3607 .await
3608 }
3609#[instrument(skip(self, params))]
3611 pub async fn get_webparse_metadata(&self, params: GetWebparseMetadataParams) -> Result<Value> {
3612 let mut path = "/api/v1/webparse/metadata".to_string();
3613
3614 let mut query: Vec<(String, String)> = Vec::new();
3615 query.push(("url".to_string(), params.url_query.clone()));
3616 let query = if query.is_empty() { None } else { Some(query) };
3617
3618 let mut extra_headers = HeaderMap::new();
3619 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3620 let body = None;
3621
3622 self.client
3623 .request_json(
3624 Method::GET,
3625 &path,
3626 headers,
3627 query,
3628 body,
3629 )
3630 .await
3631 }
3632#[instrument(skip(self, params))]
3634 pub async fn post_web_tomarkdown_async(&self, params: PostWebTomarkdownAsyncParams) -> Result<Value> {
3635 let mut path = "/api/v1/web/tomarkdown/async".to_string();
3636
3637 let mut query: Vec<(String, String)> = Vec::new();
3638 query.push(("url".to_string(), params.url_query.clone()));
3639 let query = if query.is_empty() { None } else { Some(query) };
3640
3641 let mut extra_headers = HeaderMap::new();
3642 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3643 let body = None;
3644
3645 self.client
3646 .request_json(
3647 Method::POST,
3648 &path,
3649 headers,
3650 query,
3651 body,
3652 )
3653 .await
3654 }
3655}
3656
3657#[derive(Debug, Clone)]
3658pub struct GetWebTomarkdownAsyncStatusParams {
3659 pub task_id_path: String,
3660}
3661
3662impl GetWebTomarkdownAsyncStatusParams {
3663 pub fn new(task_id_path: impl Into<String>) -> Self {
3664 Self {
3665 task_id_path: task_id_path.into(),
3666 }
3667 }
3668}
3669
3670#[derive(Debug, Clone)]
3671pub struct GetWebparseExtractimagesParams {
3672 pub url_query: String,
3673}
3674
3675impl GetWebparseExtractimagesParams {
3676 pub fn new(url_query: impl Into<String>) -> Self {
3677 Self {
3678 url_query: url_query.into(),
3679 }
3680 }
3681}
3682
3683#[derive(Debug, Clone)]
3684pub struct GetWebparseMetadataParams {
3685 pub url_query: String,
3686}
3687
3688impl GetWebparseMetadataParams {
3689 pub fn new(url_query: impl Into<String>) -> Self {
3690 Self {
3691 url_query: url_query.into(),
3692 }
3693 }
3694}
3695
3696#[derive(Debug, Clone)]
3697pub struct PostWebTomarkdownAsyncParams {
3698 pub url_query: String,
3699}
3700
3701impl PostWebTomarkdownAsyncParams {
3702 pub fn new(url_query: impl Into<String>) -> Self {
3703 Self {
3704 url_query: url_query.into(),
3705 }
3706 }
3707}
3708#[derive(Debug, Clone)]
3709pub struct MinGanCiShiBieService<'a> {
3710 pub(crate) client: &'a Client,
3711}
3712
3713impl<'a> MinGanCiShiBieService<'a> {
3714#[instrument(skip(self, params))]
3716 pub async fn get_sensitive_word_analyze_query(&self, params: GetSensitiveWordAnalyzeQueryParams) -> Result<Value> {
3717 let mut path = "/api/v1/sensitive-word/analyze-query".to_string();
3718
3719 let mut query: Vec<(String, String)> = Vec::new();
3720 query.push(("keyword".to_string(), params.keyword_query.clone()));
3721 let query = if query.is_empty() { None } else { Some(query) };
3722
3723 let mut extra_headers = HeaderMap::new();
3724 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3725 let body = None;
3726
3727 self.client
3728 .request_json(
3729 Method::GET,
3730 &path,
3731 headers,
3732 query,
3733 body,
3734 )
3735 .await
3736 }
3737#[instrument(skip(self, params))]
3739 pub async fn post_sensitive_word_analyze(&self, params: PostSensitiveWordAnalyzeParams) -> Result<Value> {
3740 let mut path = "/api/v1/sensitive-word/analyze".to_string();
3741
3742 let mut query: Vec<(String, String)> = Vec::new();
3743 let query = if query.is_empty() { None } else { Some(query) };
3744
3745 let mut extra_headers = HeaderMap::new();
3746 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3747 let body = params.body.clone();
3748
3749 self.client
3750 .request_json(
3751 Method::POST,
3752 &path,
3753 headers,
3754 query,
3755 body,
3756 )
3757 .await
3758 }
3759#[instrument(skip(self, params))]
3761 pub async fn post_sensitive_word_quick_check(&self, params: PostSensitiveWordQuickCheckParams) -> Result<Value> {
3762 let mut path = "/api/v1/text/profanitycheck".to_string();
3763
3764 let mut query: Vec<(String, String)> = Vec::new();
3765 let query = if query.is_empty() { None } else { Some(query) };
3766
3767 let mut extra_headers = HeaderMap::new();
3768 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3769 let body = params.body.clone();
3770
3771 self.client
3772 .request_json(
3773 Method::POST,
3774 &path,
3775 headers,
3776 query,
3777 body,
3778 )
3779 .await
3780 }
3781}
3782
3783#[derive(Debug, Clone)]
3784pub struct GetSensitiveWordAnalyzeQueryParams {
3785 pub keyword_query: String,
3786}
3787
3788impl GetSensitiveWordAnalyzeQueryParams {
3789 pub fn new(keyword_query: impl Into<String>) -> Self {
3790 Self {
3791 keyword_query: keyword_query.into(),
3792 }
3793 }
3794}
3795
3796#[derive(Debug, Clone)]
3797pub struct PostSensitiveWordAnalyzeParams {
3798 pub body: Option<Value>,
3799}
3800
3801impl PostSensitiveWordAnalyzeParams {
3802 pub fn new() -> Self {
3803 Self {
3804 body: None,
3805 }
3806 }
3807 pub fn body(mut self, value: Value) -> Self {
3808 self.body = Some(value);
3809 self
3810 }
3811}
3812
3813#[derive(Debug, Clone)]
3814pub struct PostSensitiveWordQuickCheckParams {
3815 pub body: Option<Value>,
3816}
3817
3818impl PostSensitiveWordQuickCheckParams {
3819 pub fn new() -> Self {
3820 Self {
3821 body: None,
3822 }
3823 }
3824 pub fn body(mut self, value: Value) -> Self {
3825 self.body = Some(value);
3826 self
3827 }
3828}
3829#[derive(Debug, Clone)]
3830pub struct ZhiNengSouSuoService<'a> {
3831 pub(crate) client: &'a Client,
3832}
3833
3834impl<'a> ZhiNengSouSuoService<'a> {
3835#[instrument(skip(self))]
3837 pub async fn get_search_engines(&self) -> Result<Value> {
3838 let mut path = "/api/v1/search/engines".to_string();
3839
3840 let mut query: Vec<(String, String)> = Vec::new();
3841 let query = if query.is_empty() { None } else { Some(query) };
3842
3843 let mut extra_headers = HeaderMap::new();
3844 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3845 let body = None;
3846
3847 self.client
3848 .request_json(
3849 Method::GET,
3850 &path,
3851 headers,
3852 query,
3853 body,
3854 )
3855 .await
3856 }
3857#[instrument(skip(self, params))]
3859 pub async fn post_search_aggregate(&self, params: PostSearchAggregateParams) -> Result<Value> {
3860 let mut path = "/api/v1/search/aggregate".to_string();
3861
3862 let mut query: Vec<(String, String)> = Vec::new();
3863 let query = if query.is_empty() { None } else { Some(query) };
3864
3865 let mut extra_headers = HeaderMap::new();
3866 let headers = if extra_headers.is_empty() { None } else { Some(extra_headers) };
3867 let body = params.body.clone();
3868
3869 self.client
3870 .request_json(
3871 Method::POST,
3872 &path,
3873 headers,
3874 query,
3875 body,
3876 )
3877 .await
3878 }
3879}
3880
3881
3882#[derive(Debug, Clone)]
3883pub struct PostSearchAggregateParams {
3884 pub body: Option<Value>,
3885}
3886
3887impl PostSearchAggregateParams {
3888 pub fn new() -> Self {
3889 Self {
3890 body: None,
3891 }
3892 }
3893 pub fn body(mut self, value: Value) -> Self {
3894 self.body = Some(value);
3895 self
3896 }
3897}