wings_api/
client.rs

1// This file is auto-generated from OpenAPI spec. Do not edit manually.
2use super::*;
3use futures_util::TryStreamExt;
4use reqwest::{Client, Method, StatusCode};
5use serde::de::DeserializeOwned;
6use std::{
7    pin::Pin,
8    sync::LazyLock,
9    task::{Context, Poll},
10};
11use tokio::io::AsyncRead;
12
13static CLIENT: LazyLock<Client> = LazyLock::new(|| {
14    Client::builder()
15        .user_agent("Calagopus Panel")
16        .build()
17        .expect("Failed to create reqwest client")
18});
19
20#[derive(Debug)]
21pub enum ApiHttpError {
22    Http(StatusCode, super::ApiError),
23    Reqwest(reqwest::Error),
24    MsgpackEncode(rmp_serde::encode::Error),
25    MsgpackDecode(rmp_serde::decode::Error),
26}
27
28impl From<ApiHttpError> for anyhow::Error {
29    fn from(value: ApiHttpError) -> Self {
30        match value {
31            ApiHttpError::Http(status, err) => {
32                anyhow::anyhow!("wings api status code {status}: {}", err.error)
33            }
34            ApiHttpError::Reqwest(err) => anyhow::anyhow!(err),
35            ApiHttpError::MsgpackEncode(err) => anyhow::anyhow!(err),
36            ApiHttpError::MsgpackDecode(err) => anyhow::anyhow!(err),
37        }
38    }
39}
40
41pub struct AsyncResponseReader(Box<dyn AsyncRead + Send + Unpin>);
42
43impl AsyncRead for AsyncResponseReader {
44    fn poll_read(
45        mut self: Pin<&mut Self>,
46        cx: &mut Context<'_>,
47        buf: &mut tokio::io::ReadBuf<'_>,
48    ) -> Poll<std::io::Result<()>> {
49        Pin::new(&mut self.0).poll_read(cx, buf)
50    }
51}
52
53impl<'de> Deserialize<'de> for AsyncResponseReader {
54    fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>
55    where
56        D: serde::Deserializer<'de>,
57    {
58        Ok(Self(Box::new(tokio::io::empty())))
59    }
60}
61
62async fn request_impl<T: DeserializeOwned + 'static>(
63    client: &WingsClient,
64    method: Method,
65    endpoint: impl AsRef<str>,
66    body: Option<&impl Serialize>,
67    body_raw: Option<compact_str::CompactString>,
68) -> Result<T, ApiHttpError> {
69    let url = format!(
70        "{}{}",
71        client.base_url.trim_end_matches('/'),
72        endpoint.as_ref()
73    );
74    let mut request = CLIENT.request(method, &url);
75    request = request.header("Accept", "application/msgpack");
76
77    if !client.token.is_empty() {
78        request = request.header("Authorization", format!("Bearer {}", client.token));
79    }
80
81    if let Some(body) = body {
82        request = request.header("Content-Type", "application/msgpack");
83
84        let mut bytes = Vec::new();
85        let mut se = rmp_serde::Serializer::new(&mut bytes)
86            .with_struct_map()
87            .with_human_readable();
88        if let Err(err) = body.serialize(&mut se) {
89            return Err(ApiHttpError::MsgpackEncode(err));
90        }
91        request = request.body(bytes);
92    } else if let Some(body_raw) = body_raw {
93        request = request.body(Vec::from(body_raw));
94    }
95
96    match request.send().await {
97        Ok(response) => {
98            if response.status().is_success() {
99                if std::any::type_name::<T>() == std::any::type_name::<AsyncResponseReader>() {
100                    let stream = response.bytes_stream().map_err(|err| {
101                        std::io::Error::other(format!("failed to read multipart field: {err}"))
102                    });
103                    let stream_reader = tokio_util::io::StreamReader::new(stream);
104
105                    return Ok(*(Box::new(AsyncResponseReader(Box::new(stream_reader)))
106                        as Box<dyn std::any::Any>)
107                        .downcast::<T>()
108                        .unwrap());
109                }
110
111                match response.bytes().await {
112                    Ok(data) => {
113                        let mut de =
114                            rmp_serde::Deserializer::new(data.as_ref()).with_human_readable();
115                        match T::deserialize(&mut de) {
116                            Ok(data) => Ok(data),
117                            Err(err) => Err(ApiHttpError::MsgpackDecode(err)),
118                        }
119                    }
120                    Err(err) => Err(ApiHttpError::Reqwest(err)),
121                }
122            } else {
123                Err(ApiHttpError::Http(
124                    response.status(),
125                    match response.bytes().await {
126                        Ok(data) => {
127                            let mut de =
128                                rmp_serde::Deserializer::new(data.as_ref()).with_human_readable();
129                            match super::ApiError::deserialize(&mut de) {
130                                Ok(data) => data,
131                                Err(err) => super::ApiError {
132                                    error: err.to_string().into(),
133                                },
134                            }
135                        }
136                        Err(err) => super::ApiError {
137                            error: err.to_string().into(),
138                        },
139                    },
140                ))
141            }
142        }
143        Err(err) => Err(ApiHttpError::Reqwest(err)),
144    }
145}
146
147pub struct WingsClient {
148    base_url: String,
149    token: String,
150}
151
152impl WingsClient {
153    #[inline]
154    pub fn new(base_url: String, token: String) -> Self {
155        Self { base_url, token }
156    }
157
158    pub fn request_raw(
159        &self,
160        method: Method,
161        endpoint: impl AsRef<str>,
162    ) -> reqwest::RequestBuilder {
163        let url = format!(
164            "{}/{}",
165            self.base_url.trim_end_matches('/'),
166            endpoint.as_ref().trim_start_matches('/')
167        );
168        let mut request = CLIENT.request(method, &url);
169
170        if !self.token.is_empty() {
171            request = request.header("Authorization", format!("Bearer {}", self.token));
172        }
173
174        request
175    }
176
177    pub async fn delete_backups_backup(
178        &self,
179        backup: uuid::Uuid,
180        data: &super::backups_backup::delete::RequestBody,
181    ) -> Result<super::backups_backup::delete::Response, ApiHttpError> {
182        request_impl(
183            self,
184            Method::DELETE,
185            format!("/api/backups/{backup}"),
186            Some(data),
187            None,
188        )
189        .await
190    }
191
192    pub async fn post_deauthorize_user(
193        &self,
194        data: &super::deauthorize_user::post::RequestBody,
195    ) -> Result<super::deauthorize_user::post::Response, ApiHttpError> {
196        request_impl(
197            self,
198            Method::POST,
199            "/api/deauthorize-user",
200            Some(data),
201            None,
202        )
203        .await
204    }
205
206    pub async fn get_servers(&self) -> Result<super::servers::get::Response, ApiHttpError> {
207        request_impl(self, Method::GET, "/api/servers", None::<&()>, None).await
208    }
209
210    pub async fn post_servers(
211        &self,
212        data: &super::servers::post::RequestBody,
213    ) -> Result<super::servers::post::Response, ApiHttpError> {
214        request_impl(self, Method::POST, "/api/servers", Some(data), None).await
215    }
216
217    pub async fn post_servers_power(
218        &self,
219        data: &super::servers_power::post::RequestBody,
220    ) -> Result<super::servers_power::post::Response, ApiHttpError> {
221        request_impl(self, Method::POST, "/api/servers/power", Some(data), None).await
222    }
223
224    pub async fn get_servers_utilization(
225        &self,
226    ) -> Result<super::servers_utilization::get::Response, ApiHttpError> {
227        request_impl(
228            self,
229            Method::GET,
230            "/api/servers/utilization",
231            None::<&()>,
232            None,
233        )
234        .await
235    }
236
237    pub async fn get_servers_server(
238        &self,
239        server: uuid::Uuid,
240    ) -> Result<super::servers_server::get::Response, ApiHttpError> {
241        request_impl(
242            self,
243            Method::GET,
244            format!("/api/servers/{server}"),
245            None::<&()>,
246            None,
247        )
248        .await
249    }
250
251    pub async fn delete_servers_server(
252        &self,
253        server: uuid::Uuid,
254    ) -> Result<super::servers_server::delete::Response, ApiHttpError> {
255        request_impl(
256            self,
257            Method::DELETE,
258            format!("/api/servers/{server}"),
259            None::<&()>,
260            None,
261        )
262        .await
263    }
264
265    pub async fn post_servers_server_backup(
266        &self,
267        server: uuid::Uuid,
268        data: &super::servers_server_backup::post::RequestBody,
269    ) -> Result<super::servers_server_backup::post::Response, ApiHttpError> {
270        request_impl(
271            self,
272            Method::POST,
273            format!("/api/servers/{server}/backup"),
274            Some(data),
275            None,
276        )
277        .await
278    }
279
280    pub async fn delete_servers_server_backup_backup(
281        &self,
282        server: uuid::Uuid,
283        backup: uuid::Uuid,
284    ) -> Result<super::servers_server_backup_backup::delete::Response, ApiHttpError> {
285        request_impl(
286            self,
287            Method::DELETE,
288            format!("/api/servers/{server}/backup/{backup}"),
289            None::<&()>,
290            None,
291        )
292        .await
293    }
294
295    pub async fn post_servers_server_backup_backup_restore(
296        &self,
297        server: uuid::Uuid,
298        backup: uuid::Uuid,
299        data: &super::servers_server_backup_backup_restore::post::RequestBody,
300    ) -> Result<super::servers_server_backup_backup_restore::post::Response, ApiHttpError> {
301        request_impl(
302            self,
303            Method::POST,
304            format!("/api/servers/{server}/backup/{backup}/restore"),
305            Some(data),
306            None,
307        )
308        .await
309    }
310
311    pub async fn post_servers_server_commands(
312        &self,
313        server: uuid::Uuid,
314        data: &super::servers_server_commands::post::RequestBody,
315    ) -> Result<super::servers_server_commands::post::Response, ApiHttpError> {
316        request_impl(
317            self,
318            Method::POST,
319            format!("/api/servers/{server}/commands"),
320            Some(data),
321            None,
322        )
323        .await
324    }
325
326    pub async fn post_servers_server_files_chmod(
327        &self,
328        server: uuid::Uuid,
329        data: &super::servers_server_files_chmod::post::RequestBody,
330    ) -> Result<super::servers_server_files_chmod::post::Response, ApiHttpError> {
331        request_impl(
332            self,
333            Method::POST,
334            format!("/api/servers/{server}/files/chmod"),
335            Some(data),
336            None,
337        )
338        .await
339    }
340
341    pub async fn post_servers_server_files_compress(
342        &self,
343        server: uuid::Uuid,
344        data: &super::servers_server_files_compress::post::RequestBody,
345    ) -> Result<super::servers_server_files_compress::post::Response, ApiHttpError> {
346        request_impl(
347            self,
348            Method::POST,
349            format!("/api/servers/{server}/files/compress"),
350            Some(data),
351            None,
352        )
353        .await
354    }
355
356    pub async fn get_servers_server_files_contents(
357        &self,
358        server: uuid::Uuid,
359        file: &str,
360        download: bool,
361        max_size: u64,
362    ) -> Result<super::servers_server_files_contents::get::Response, ApiHttpError> {
363        let file = urlencoding::encode(file);
364        request_impl(self, Method::GET, format!("/api/servers/{server}/files/contents?file={file}&download={download}&max_size={max_size}"), None::<&()>, None).await
365    }
366
367    pub async fn post_servers_server_files_copy(
368        &self,
369        server: uuid::Uuid,
370        data: &super::servers_server_files_copy::post::RequestBody,
371    ) -> Result<super::servers_server_files_copy::post::Response, ApiHttpError> {
372        request_impl(
373            self,
374            Method::POST,
375            format!("/api/servers/{server}/files/copy"),
376            Some(data),
377            None,
378        )
379        .await
380    }
381
382    pub async fn post_servers_server_files_copy_many(
383        &self,
384        server: uuid::Uuid,
385        data: &super::servers_server_files_copy_many::post::RequestBody,
386    ) -> Result<super::servers_server_files_copy_many::post::Response, ApiHttpError> {
387        request_impl(
388            self,
389            Method::POST,
390            format!("/api/servers/{server}/files/copy-many"),
391            Some(data),
392            None,
393        )
394        .await
395    }
396
397    pub async fn post_servers_server_files_copy_remote(
398        &self,
399        server: uuid::Uuid,
400        data: &super::servers_server_files_copy_remote::post::RequestBody,
401    ) -> Result<super::servers_server_files_copy_remote::post::Response, ApiHttpError> {
402        request_impl(
403            self,
404            Method::POST,
405            format!("/api/servers/{server}/files/copy-remote"),
406            Some(data),
407            None,
408        )
409        .await
410    }
411
412    pub async fn post_servers_server_files_create_directory(
413        &self,
414        server: uuid::Uuid,
415        data: &super::servers_server_files_create_directory::post::RequestBody,
416    ) -> Result<super::servers_server_files_create_directory::post::Response, ApiHttpError> {
417        request_impl(
418            self,
419            Method::POST,
420            format!("/api/servers/{server}/files/create-directory"),
421            Some(data),
422            None,
423        )
424        .await
425    }
426
427    pub async fn post_servers_server_files_decompress(
428        &self,
429        server: uuid::Uuid,
430        data: &super::servers_server_files_decompress::post::RequestBody,
431    ) -> Result<super::servers_server_files_decompress::post::Response, ApiHttpError> {
432        request_impl(
433            self,
434            Method::POST,
435            format!("/api/servers/{server}/files/decompress"),
436            Some(data),
437            None,
438        )
439        .await
440    }
441
442    pub async fn post_servers_server_files_delete(
443        &self,
444        server: uuid::Uuid,
445        data: &super::servers_server_files_delete::post::RequestBody,
446    ) -> Result<super::servers_server_files_delete::post::Response, ApiHttpError> {
447        request_impl(
448            self,
449            Method::POST,
450            format!("/api/servers/{server}/files/delete"),
451            Some(data),
452            None,
453        )
454        .await
455    }
456
457    pub async fn get_servers_server_files_fingerprints(
458        &self,
459        server: uuid::Uuid,
460        algorithm: Algorithm,
461        files: Vec<compact_str::CompactString>,
462    ) -> Result<super::servers_server_files_fingerprints::get::Response, ApiHttpError> {
463        let files = files
464            .into_iter()
465            .map(|s| urlencoding::encode(&s).into())
466            .collect::<Vec<compact_str::CompactString>>()
467            .join("&files=");
468        request_impl(
469            self,
470            Method::GET,
471            format!("/api/servers/{server}/files/fingerprints?algorithm={algorithm}&files={files}"),
472            None::<&()>,
473            None,
474        )
475        .await
476    }
477
478    pub async fn get_servers_server_files_list(
479        &self,
480        server: uuid::Uuid,
481        directory: &str,
482        ignored: Vec<compact_str::CompactString>,
483        per_page: u64,
484        page: u64,
485    ) -> Result<super::servers_server_files_list::get::Response, ApiHttpError> {
486        let directory = urlencoding::encode(directory);
487        let ignored = ignored
488            .into_iter()
489            .map(|s| urlencoding::encode(&s).into())
490            .collect::<Vec<compact_str::CompactString>>()
491            .join("&ignored=");
492        request_impl(self, Method::GET, format!("/api/servers/{server}/files/list?directory={directory}&ignored={ignored}&per_page={per_page}&page={page}"), None::<&()>, None).await
493    }
494
495    pub async fn get_servers_server_files_list_directory(
496        &self,
497        server: uuid::Uuid,
498        directory: &str,
499    ) -> Result<super::servers_server_files_list_directory::get::Response, ApiHttpError> {
500        let directory = urlencoding::encode(directory);
501        request_impl(
502            self,
503            Method::GET,
504            format!("/api/servers/{server}/files/list-directory?directory={directory}"),
505            None::<&()>,
506            None,
507        )
508        .await
509    }
510
511    pub async fn delete_servers_server_files_operations_operation(
512        &self,
513        server: uuid::Uuid,
514        operation: uuid::Uuid,
515    ) -> Result<super::servers_server_files_operations_operation::delete::Response, ApiHttpError>
516    {
517        request_impl(
518            self,
519            Method::DELETE,
520            format!("/api/servers/{server}/files/operations/{operation}"),
521            None::<&()>,
522            None,
523        )
524        .await
525    }
526
527    pub async fn get_servers_server_files_pull(
528        &self,
529        server: uuid::Uuid,
530    ) -> Result<super::servers_server_files_pull::get::Response, ApiHttpError> {
531        request_impl(
532            self,
533            Method::GET,
534            format!("/api/servers/{server}/files/pull"),
535            None::<&()>,
536            None,
537        )
538        .await
539    }
540
541    pub async fn post_servers_server_files_pull(
542        &self,
543        server: uuid::Uuid,
544        data: &super::servers_server_files_pull::post::RequestBody,
545    ) -> Result<super::servers_server_files_pull::post::Response, ApiHttpError> {
546        request_impl(
547            self,
548            Method::POST,
549            format!("/api/servers/{server}/files/pull"),
550            Some(data),
551            None,
552        )
553        .await
554    }
555
556    pub async fn post_servers_server_files_pull_query(
557        &self,
558        server: uuid::Uuid,
559        data: &super::servers_server_files_pull_query::post::RequestBody,
560    ) -> Result<super::servers_server_files_pull_query::post::Response, ApiHttpError> {
561        request_impl(
562            self,
563            Method::POST,
564            format!("/api/servers/{server}/files/pull/query"),
565            Some(data),
566            None,
567        )
568        .await
569    }
570
571    pub async fn delete_servers_server_files_pull_pull(
572        &self,
573        server: uuid::Uuid,
574        pull: uuid::Uuid,
575    ) -> Result<super::servers_server_files_pull_pull::delete::Response, ApiHttpError> {
576        request_impl(
577            self,
578            Method::DELETE,
579            format!("/api/servers/{server}/files/pull/{pull}"),
580            None::<&()>,
581            None,
582        )
583        .await
584    }
585
586    pub async fn put_servers_server_files_rename(
587        &self,
588        server: uuid::Uuid,
589        data: &super::servers_server_files_rename::put::RequestBody,
590    ) -> Result<super::servers_server_files_rename::put::Response, ApiHttpError> {
591        request_impl(
592            self,
593            Method::PUT,
594            format!("/api/servers/{server}/files/rename"),
595            Some(data),
596            None,
597        )
598        .await
599    }
600
601    pub async fn post_servers_server_files_search(
602        &self,
603        server: uuid::Uuid,
604        data: &super::servers_server_files_search::post::RequestBody,
605    ) -> Result<super::servers_server_files_search::post::Response, ApiHttpError> {
606        request_impl(
607            self,
608            Method::POST,
609            format!("/api/servers/{server}/files/search"),
610            Some(data),
611            None,
612        )
613        .await
614    }
615
616    pub async fn post_servers_server_files_write(
617        &self,
618        server: uuid::Uuid,
619        file: &str,
620        data: super::servers_server_files_write::post::RequestBody,
621    ) -> Result<super::servers_server_files_write::post::Response, ApiHttpError> {
622        let file = urlencoding::encode(file);
623        request_impl(
624            self,
625            Method::POST,
626            format!("/api/servers/{server}/files/write?file={file}"),
627            None::<&()>,
628            Some(data),
629        )
630        .await
631    }
632
633    pub async fn post_servers_server_install_abort(
634        &self,
635        server: uuid::Uuid,
636    ) -> Result<super::servers_server_install_abort::post::Response, ApiHttpError> {
637        request_impl(
638            self,
639            Method::POST,
640            format!("/api/servers/{server}/install/abort"),
641            None::<&()>,
642            None,
643        )
644        .await
645    }
646
647    pub async fn get_servers_server_logs(
648        &self,
649        server: uuid::Uuid,
650        lines: u64,
651    ) -> Result<super::servers_server_logs::get::Response, ApiHttpError> {
652        request_impl(
653            self,
654            Method::GET,
655            format!("/api/servers/{server}/logs?lines={lines}"),
656            None::<&()>,
657            None,
658        )
659        .await
660    }
661
662    pub async fn get_servers_server_logs_install(
663        &self,
664        server: uuid::Uuid,
665        lines: u64,
666    ) -> Result<super::servers_server_logs_install::get::Response, ApiHttpError> {
667        request_impl(
668            self,
669            Method::GET,
670            format!("/api/servers/{server}/logs/install?lines={lines}"),
671            None::<&()>,
672            None,
673        )
674        .await
675    }
676
677    pub async fn post_servers_server_power(
678        &self,
679        server: uuid::Uuid,
680        data: &super::servers_server_power::post::RequestBody,
681    ) -> Result<super::servers_server_power::post::Response, ApiHttpError> {
682        request_impl(
683            self,
684            Method::POST,
685            format!("/api/servers/{server}/power"),
686            Some(data),
687            None,
688        )
689        .await
690    }
691
692    pub async fn post_servers_server_reinstall(
693        &self,
694        server: uuid::Uuid,
695        data: &super::servers_server_reinstall::post::RequestBody,
696    ) -> Result<super::servers_server_reinstall::post::Response, ApiHttpError> {
697        request_impl(
698            self,
699            Method::POST,
700            format!("/api/servers/{server}/reinstall"),
701            Some(data),
702            None,
703        )
704        .await
705    }
706
707    pub async fn get_servers_server_schedules_schedule(
708        &self,
709        server: uuid::Uuid,
710        schedule: uuid::Uuid,
711    ) -> Result<super::servers_server_schedules_schedule::get::Response, ApiHttpError> {
712        request_impl(
713            self,
714            Method::GET,
715            format!("/api/servers/{server}/schedules/{schedule}"),
716            None::<&()>,
717            None,
718        )
719        .await
720    }
721
722    pub async fn post_servers_server_schedules_schedule_abort(
723        &self,
724        server: uuid::Uuid,
725        schedule: uuid::Uuid,
726    ) -> Result<super::servers_server_schedules_schedule_abort::post::Response, ApiHttpError> {
727        request_impl(
728            self,
729            Method::POST,
730            format!("/api/servers/{server}/schedules/{schedule}/abort"),
731            None::<&()>,
732            None,
733        )
734        .await
735    }
736
737    pub async fn post_servers_server_schedules_schedule_trigger(
738        &self,
739        server: uuid::Uuid,
740        schedule: uuid::Uuid,
741        data: &super::servers_server_schedules_schedule_trigger::post::RequestBody,
742    ) -> Result<super::servers_server_schedules_schedule_trigger::post::Response, ApiHttpError>
743    {
744        request_impl(
745            self,
746            Method::POST,
747            format!("/api/servers/{server}/schedules/{schedule}/trigger"),
748            Some(data),
749            None,
750        )
751        .await
752    }
753
754    pub async fn post_servers_server_script(
755        &self,
756        server: uuid::Uuid,
757        data: &super::servers_server_script::post::RequestBody,
758    ) -> Result<super::servers_server_script::post::Response, ApiHttpError> {
759        request_impl(
760            self,
761            Method::POST,
762            format!("/api/servers/{server}/script"),
763            Some(data),
764            None,
765        )
766        .await
767    }
768
769    pub async fn post_servers_server_sync(
770        &self,
771        server: uuid::Uuid,
772        data: &super::servers_server_sync::post::RequestBody,
773    ) -> Result<super::servers_server_sync::post::Response, ApiHttpError> {
774        request_impl(
775            self,
776            Method::POST,
777            format!("/api/servers/{server}/sync"),
778            Some(data),
779            None,
780        )
781        .await
782    }
783
784    pub async fn delete_servers_server_transfer(
785        &self,
786        server: uuid::Uuid,
787    ) -> Result<super::servers_server_transfer::delete::Response, ApiHttpError> {
788        request_impl(
789            self,
790            Method::DELETE,
791            format!("/api/servers/{server}/transfer"),
792            None::<&()>,
793            None,
794        )
795        .await
796    }
797
798    pub async fn post_servers_server_transfer(
799        &self,
800        server: uuid::Uuid,
801        data: &super::servers_server_transfer::post::RequestBody,
802    ) -> Result<super::servers_server_transfer::post::Response, ApiHttpError> {
803        request_impl(
804            self,
805            Method::POST,
806            format!("/api/servers/{server}/transfer"),
807            Some(data),
808            None,
809        )
810        .await
811    }
812
813    pub async fn get_servers_server_utilization(
814        &self,
815        server: uuid::Uuid,
816    ) -> Result<super::servers_server_utilization::get::Response, ApiHttpError> {
817        request_impl(
818            self,
819            Method::GET,
820            format!("/api/servers/{server}/utilization"),
821            None::<&()>,
822            None,
823        )
824        .await
825    }
826
827    pub async fn get_servers_server_version(
828        &self,
829        server: uuid::Uuid,
830        game: Game,
831    ) -> Result<super::servers_server_version::get::Response, ApiHttpError> {
832        request_impl(
833            self,
834            Method::GET,
835            format!("/api/servers/{server}/version?game={game}"),
836            None::<&()>,
837            None,
838        )
839        .await
840    }
841
842    pub async fn post_servers_server_ws_broadcast(
843        &self,
844        server: uuid::Uuid,
845        data: &super::servers_server_ws_broadcast::post::RequestBody,
846    ) -> Result<super::servers_server_ws_broadcast::post::Response, ApiHttpError> {
847        request_impl(
848            self,
849            Method::POST,
850            format!("/api/servers/{server}/ws/broadcast"),
851            Some(data),
852            None,
853        )
854        .await
855    }
856
857    pub async fn post_servers_server_ws_deny(
858        &self,
859        server: uuid::Uuid,
860        data: &super::servers_server_ws_deny::post::RequestBody,
861    ) -> Result<super::servers_server_ws_deny::post::Response, ApiHttpError> {
862        request_impl(
863            self,
864            Method::POST,
865            format!("/api/servers/{server}/ws/deny"),
866            Some(data),
867            None,
868        )
869        .await
870    }
871
872    pub async fn post_servers_server_ws_permissions(
873        &self,
874        server: uuid::Uuid,
875        data: &super::servers_server_ws_permissions::post::RequestBody,
876    ) -> Result<super::servers_server_ws_permissions::post::Response, ApiHttpError> {
877        request_impl(
878            self,
879            Method::POST,
880            format!("/api/servers/{server}/ws/permissions"),
881            Some(data),
882            None,
883        )
884        .await
885    }
886
887    pub async fn get_system(&self) -> Result<super::system::get::Response, ApiHttpError> {
888        request_impl(self, Method::GET, "/api/system", None::<&()>, None).await
889    }
890
891    pub async fn get_system_config(
892        &self,
893    ) -> Result<super::system_config::get::Response, ApiHttpError> {
894        request_impl(self, Method::GET, "/api/system/config", None::<&()>, None).await
895    }
896
897    pub async fn get_system_logs(&self) -> Result<super::system_logs::get::Response, ApiHttpError> {
898        request_impl(self, Method::GET, "/api/system/logs", None::<&()>, None).await
899    }
900
901    pub async fn get_system_logs_file(
902        &self,
903        file: &str,
904        lines: u64,
905    ) -> Result<super::system_logs_file::get::Response, ApiHttpError> {
906        request_impl(
907            self,
908            Method::GET,
909            format!("/api/system/logs/{file}?lines={lines}"),
910            None::<&()>,
911            None,
912        )
913        .await
914    }
915
916    pub async fn get_system_overview(
917        &self,
918    ) -> Result<super::system_overview::get::Response, ApiHttpError> {
919        request_impl(self, Method::GET, "/api/system/overview", None::<&()>, None).await
920    }
921
922    pub async fn get_system_stats(
923        &self,
924    ) -> Result<super::system_stats::get::Response, ApiHttpError> {
925        request_impl(self, Method::GET, "/api/system/stats", None::<&()>, None).await
926    }
927
928    pub async fn post_system_upgrade(
929        &self,
930        data: &super::system_upgrade::post::RequestBody,
931    ) -> Result<super::system_upgrade::post::Response, ApiHttpError> {
932        request_impl(self, Method::POST, "/api/system/upgrade", Some(data), None).await
933    }
934
935    pub async fn get_transfers(&self) -> Result<super::transfers::get::Response, ApiHttpError> {
936        request_impl(self, Method::GET, "/api/transfers", None::<&()>, None).await
937    }
938
939    pub async fn post_transfers(&self) -> Result<super::transfers::post::Response, ApiHttpError> {
940        request_impl(self, Method::POST, "/api/transfers", None::<&()>, None).await
941    }
942
943    pub async fn post_transfers_files(
944        &self,
945    ) -> Result<super::transfers_files::post::Response, ApiHttpError> {
946        request_impl(
947            self,
948            Method::POST,
949            "/api/transfers/files",
950            None::<&()>,
951            None,
952        )
953        .await
954    }
955
956    pub async fn delete_transfers_server(
957        &self,
958        server: uuid::Uuid,
959    ) -> Result<super::transfers_server::delete::Response, ApiHttpError> {
960        request_impl(
961            self,
962            Method::DELETE,
963            format!("/api/transfers/{server}"),
964            None::<&()>,
965            None,
966        )
967        .await
968    }
969
970    pub async fn post_update(
971        &self,
972        data: &super::update::post::RequestBody,
973    ) -> Result<super::update::post::Response, ApiHttpError> {
974        request_impl(self, Method::POST, "/api/update", Some(data), None).await
975    }
976}